K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
Global agent instructions
Análise custos migração — evitar senha no payloadLevantamento fluxo registro + duplicados StripeRelatório segurança + pentes finos (Cláudio)Revisão security concerns e race conditionsMagic link / esqueceu senha via SupabaseCorrigir erros pós-upgrade TypeScriptTestar PRs do agente Vault para mergeAnálise de 3 issues para iniciarErro no terminal do VSCodePR #173 — aguardando aprovação do LeoTestar fluxo ponta a ponta — criação de clients no StripePR #172 — testar e subir correção de funções deprecatedPitch de vendas SaaS — agendar call de conversãoOrganizar issues e bugs rápidos para a semanaMerge PR cadastro-novo — funcionalidades e correçõesCorrigir bugs PR #173 e #172 — image domainsPR mesosóico — página de acesso mobile + segurança OTPRefatoração de códigos — PR #202Ajustes em PRs abertos de ontemEstudo de jornada de compra e técnicas de fechamentoDefinir preço e entregável do produtoProspecção de reuniões para esta semanaAgente anti AI slop — centralização de conhecimento ConnfitPR #179 — resolver conflitos e erros de teste CLIAlinhamento de preços e usos da ConffitFix adicional para PR #183 — perfil do usuárioCorrigir estilização da Connfit para identidade visualSubir modificações no copy da ConnfitCriação de 4 campanhas no Meta AdsRevisão de PRs do GilinesExploração do Roblox EditorRelatório João — devolutiva TikTok ShopReunião presencial Zassi Uniformes — diagnóstico automaçõesCriar repositório de diagnósticos e relatórios de entrevistasDiagnóstico da ZassiGeração de relatórios para reuniões de fechamentoProposta Zassi — apresentação amanhãProspecção — Clínica Odontológica Dr. But
VPS Hermes — acesso e estrutura
Always Commit Push DeployHermes Voice GeminiHermes VPSKodama Prospects TrackerMEMORYObsidian VaultRoblox Mining Sim
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
vek1 — arquiteturavek1 — autenticaçãovek1 — contextovek1 — regras de copy e marketingvek1 — modelo de dadosvek1 — decisões técnicasvek1 — domínio e modelo de negóciovek1 — featuresvek1 — gaps e riscosvek1 — gotchasvek1 — integrações externasvek1 — pricing design (Stripe sub + topup)vek1 — atividade recentevek1 — roteiro de vendas (SDR → fechamento)vek1 — estado e maturidadevek1 — Migração Evolution API → WhatsApp Cloud API (Meta oficial)
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)
Standup 2026-05-14Standup 2026-05-15Standup 2026-05-16Standup 2026-05-17Standup 2026-05-18Standup 2026-05-19Standup 2026-05-20Standup 2026-05-21Standup 2026-05-22Standup 2026-05-25Standup 2026-05-26Standup 2026-05-27Standup 2026-05-28Standup 2026-05-29Standup 2026-06-01Standup 2026-06-02Standup 2026-06-03Standup 2026-06-05Standup 2026-06-11Standup 2026-06-15Standup 2026-06-16Standup 2026-06-17Standups
MOCWelcome
v0.3
K
Kodama Vault
brain / projects / vek1

vek1 — integrações externas

Integrações externas

Integração Onde Para quê
vek1-api (HTTP interno) lib/api-client/* + lib/auth-http-adapter.ts Toda escrita em DB, auth, embeddings, chat IA, file processing, email, PIX webhook relay, billing. Base URL VEK1_API_URL. 3 escopos de token.
Postgres self-host lib/db/{index,schema}.ts (Drizzle) Schema source-of-truth. Reads SSR raros; writes pelo vek1-api. Connection postgresql://vek1:***@187.127.24.217:5434/vek1?sslmode=disable.
Better Auth lib/auth.ts, auth-client.ts, auth-server.ts, auth-http-adapter.ts, route api/auth/[...all] Email/password com auto-sign-in. Persistência delegada via HTTP adapter.
MinIO/S3 lib/storage.ts Container mimic-minio. Bucket vek1. Endpoint https://mimic-cdn.kodama.solutions. Key prefix companies/{user.id}/....
Evolution API v2.3.x lib/evolution-instance.ts, lib/whatsapp-handler.ts, webhooks/evolution/route.ts WhatsApp send/receive, instância, QR Code. Endpoint https://evolution.kodama.solutions. Migração planejada → Meta Cloud API oficial (Solution Partner): vek1/whatsapp-cloud-api-migration.
AbacatePay lib/abacate-pay.ts, webhooks/abacate-pay/route.ts Gateway PIX cliente final do lojista (orders). Token por store.
Stripe @stripe/stripe-js + @stripe/react-stripe-js no frontend (Elements); SDK Python no vek1-api Billing vek ↔ lojista (subscription + metered + topup). Webhook configurado pros 6 events (sub./invoice./payment_intent.succeeded). Test mode em prod.
Resend NÃO no vek1 — via apiClient.email.* → vek1-api /internal/email/* Transactional (reset password, billing emails grace flow). Token Resend mora no env do vek1-api.
vek1-api /embed lib/embeddings.ts Proxy pra Ollama bge-m3 (1024 dim).
vek1-api /chat agent-chat.tsx, whatsapp-handler.ts Função canônica de conversação. Function calling.
vek1-api /billing/plans-public app/pricing/page.tsx Endpoint público sem auth pra landing /pricing consumir via HTTPS em vez de TCP direto Postgres.
Supabase — Decomissionado em PR #43.
OpenAI no frontend — Removido em PR #43.
GitHub Actions .github/workflows/ci.yml Lint + test + build (Bun). Envs CI são placeholders.
Codecov / CodeRabbit step opcional + .coderabbit.yaml Coverage + auto-review

Endpoints vek1-api consumidos via apiClient

Auth scope (X-Auth-Token)

/internal/auth/users, /internal/auth/sessions, /internal/auth/accounts, /internal/auth/verifications — full CRUD purpose-built.

App scope (X-Internal-Token + X-Actor-User-Id)

  • Billing: GET /internal/billing/plans, GET .../summary, POST .../subscriptions, DELETE .../subscriptions, POST .../setup-intent, POST .../topup, GET/PATCH .../settings, GET .../usage-this-month, GET .../invoices, POST .../_trigger-{usage-report,overage-charge} (debug)
  • Orders, Leads, Agents, Products+files, Documents, Stores, Company, Dashboard, Messages, Audit, Token usage — detalhes em vek1-api/endpoints

Webhook scope (X-Webhook-Token)

Origem Path no vek1-api
/api/webhooks/abacate-pay relay POST /webhooks/abacate-pay
Better Auth sendResetPassword POST /internal/email/send-reset-password
Stock sync inbound ERP → vek1 POST /webhooks/stock-sync/{store_id} (HMAC)
billing_emails (grace flow, charge_succeeded/failed) mesmo endpoint email via Resend

Endpoints PÚBLICOS vek1-api (sem token)

  • POST /chat, POST /embed, POST /extract-lead, POST /process-file (conversa + RAG core)
  • GET /agents (lista tipos)
  • GET /billing/plans-public (lista planos ativos pra /pricing — sem PII)
  • POST /webhooks/stripe (assinatura HMAC valida)

Evolution API (WhatsApp)

  • Endpoint: https://evolution.kodama.solutions, versão v2.3.x
  • Cliente custom: lib/evolution-instance.ts (fetch direto, sem lib externa)
  • Webhook receive: POST /api/webhooks/evolution — nunca retorna 500
  • Quirks (ver evolution-debugger):
    • LID privacy: phone real em senderPn ou key.remoteJidAlt
    • Payload às vezes aninhado em data.message
    • fromMe=true sempre ignorar

Stripe (LIVE em test mode)

  • Test mode keys configurados no vek1 (STRIPE_SECRET_KEY, NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET) e no vek1-api VPS
  • Webhook endpoint: https://vek1-api.kodama.solutions/webhooks/stripe configurado pros 6 events
  • 3 Products + 6 Prices com lookup_keys _v2:
    • vek1_starter_monthly_v2 (R$ 199) + vek1_starter_overage_per_million_v2 (R$ 39 / Meter)
    • vek1_pro_monthly_v2 (R$ 599) + vek1_pro_overage_per_million_v2 (R$ 28 / Meter)
    • vek1_business_monthly_v2 (R$ 1.499) + vek1_business_overage_per_million_v2 (R$ 20 / Meter)
  • Meter vek1.tokens_consumed (sum aggregation, customer mapping by-id, value em million units)
  • seed-stripe-plans.ts idempotente cria tudo. v1 Prices antigos mantidos pra subs pré-existentes.

Variáveis de ambiente (.env.local / Vercel)

# vek1-api integration
VEK1_API_URL=https://vek1-api.kodama.solutions
INTERNAL_API_TOKEN=...
INTERNAL_AUTH_TOKEN=...
INTERNAL_WEBHOOK_TOKEN=...

# Postgres (raro — /pricing migrou pra HTTPS via vek1-api)
DATABASE_URL=postgresql://vek1:***@187.127.24.217:5434/vek1?sslmode=disable

# Better Auth
BETTER_AUTH_SECRET=...
BETTER_AUTH_URL=https://vek1.vercel.app
NEXT_PUBLIC_BETTER_AUTH_URL=https://vek1.vercel.app
BETTER_AUTH_TRUSTED_ORIGINS=https://vek1.vercel.app,https://*.vek1.vercel.app

# MinIO
S3_ENDPOINT=https://mimic-cdn.kodama.solutions
S3_REGION=us-east-1
S3_ACCESS_KEY_ID=vek1
S3_SECRET_ACCESS_KEY=...
S3_BUCKET=vek1
S3_PUBLIC_URL=https://mimic-cdn.kodama.solutions

# Evolution
NEXT_PUBLIC_EVOLUTION_API_URL=https://evolution.kodama.solutions
NEXT_PUBLIC_EVOLUTION_API_KEY=...
EVOLUTION_API_URL=...
EVOLUTION_API_KEY=...

# Chat backend
NEXT_PUBLIC_API_URL=https://vek1-api.kodama.solutions

# Stripe (test mode)
STRIPE_SECRET_KEY=sk_test_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...

# SEO (opcional)
NEXT_PUBLIC_SITE_URL=https://vek1.vercel.app

Removidos após PR #43 (não usar): NEXT_PUBLIC_SUPABASE_*, NEXT_PUBLIC_OPENAI_API_KEY, NEXT_PUBLIC__EVOLUTION_API_KEY (typo).

Aviso de segurança (pendente)

  • DATABASE_URL TCP plaintext entre Vercel e VPS (sslmode=disable). TLS pendente.
  • Reduzido após PR #82: /pricing não usa mais TCP direto, vai via HTTPS no vek1-api. Mas resto do app (queries SSR ocasionais) ainda usa Drizzle direto.
notas relacionadas
carregando…