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-api — arquiteturavek1-api — contextovek1-api — decisões técnicasvek1-api — catálogo de endpointsvek1-api — gotchasvek1-api — integrações externasvek1-api — atividade recente
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-api

vek1-api — contexto

vek1-api — contexto raiz

Backend FastAPI/Python do vek1. Source-of-truth dos modelos de IA + DB writes. Frontend vek1 fala com este serviço via HTTP interno (3 token scopes).

O que é (uma frase)

API RAG conversacional + backing store HTTP do Better Auth + dono de todas as mutations (orders/leads/products/agents/stores/etc.) + integrações externas isoladas (DeepSeek, Ollama, Resend, AbacatePay webhook receiver, ERP stock sync). Function calling consultivo com create_order tool — agente fecha pedido sem intervenção humana.

Onde olhar primeiro

Quero saber sobre Lê
Stack + estrutura de pastas architecture.md
Catálogo completo de endpoints (auth/app/webhook + públicos) endpoints.md
Decisões técnicas (DeepSeek, bge-m3, psycopg2, slowapi, cache auth) decisions.md
Integrações externas (Ollama, DeepSeek, Resend, AbacatePay) integrations.md
Bugs, traps, race conditions resolvidas gotchas.md
Trajetória / PRs recentes recent-activity.md

Localização

  • Repo: https://github.com/kodama1/vek1-api
  • Clone local: C:\Users\User\vek1-api\
  • Branch principal: master
  • Deploy prod: https://vek1-api.kodama.solutions (VPS Hermes)
  • Container: vek1-api (porta 127.0.0.1:8000) + vek1-postgres (5434 exposto pra Vercel)
  • SSH deploy: ~/.ssh/id_vek1_deploy (alias github-vek1)

Stack resumido

  • FastAPI 0.104 + Uvicorn + GZip middleware + slowapi rate limit (opcional)
  • Postgres 16 + pgvector 0.8.2 self-hosted (pgvector/pgvector:pg16)
  • Ollama bge-m3 (1024 dim) — container vault-ollama reaproveitado
  • DeepSeek (deepseek-chat) via SDK openai com base_url=https://api.deepseek.com
  • psycopg2-binary + ThreadedConnectionPool (síncrono — handlers síncronos)
  • httpx (Ollama, Resend, AbacatePay outbound, stock sync)
  • Resend transactional (reset password)

Token scopes

  • X-Internal-Token (app) — domínios (orders, leads, products, agents, stores, etc.)
  • X-Auth-Token — Better Auth backing store (/internal/auth/*)
  • X-Webhook-Token — fire-and-forget (email, AbacatePay relay, ERP stock sync inbound)

Constant-time compare via hmac.compare_digest. Fallback: app token serve pros 3 se dedicados ausentes.

Routers (per-domain)

main.py carrega cada router com try/except ImportError — falha de import não trava startup, só warn.

Router Prefix Scope O que faz
auth.py /internal/auth auth Better Auth backing store (29 endpoints purpose-built)
orders.py /internal/orders + /webhooks app + webhook CRUD orders + state machine + AbacatePay webhook
leads.py /internal/leads app ensure/get/list/patch + events
agents.py /internal/agents + webhook app + webhook CRUD + KB + evolution-instance lookup
products.py /internal app products + documents + product_files
stores.py /internal app stores + company
dashboard.py /internal/dashboard app aggregated stats
messages.py /internal app messages_history + audit_log read
token_usage.py /internal/token-usage app insert/list/summary (billing telemetry)
email.py /internal/email webhook Resend send-reset-password
stock.py /internal/stock + /webhooks/stock-sync app + webhook decrement/restore + ERP sync bidirectional

Detalhes completos em endpoints.md.

Função /chat (caminho crítico)

rag_service.process_query_with_functions():

  1. Carrega config do agente (agents_config.yaml)
  2. Se lead_id: SELECT lead.profile_summary, injeta como 2ª system message
  3. Monta tools (search_products, get_product_details, filter_products_by_price, create_order, confirm_shipping)
  4. Loop até 5 iterações: LLM → tool calls → exec → resposta
  5. Persist em messages_history com lead_id (cross-agent/cross-channel lookup)
  6. Skip persistência se lead_id present (vek1 já grava — dd2ac9f)

dry_run: true simula side-effects sem chamar HTTP — usado em tests integration.

Memória long-term por lead

  • profile_summary (text compact) + profile_embedding (vector 1024) gerados pelo vek1 (lib/leads.ts:buildLeadProfileSummary)
  • vek1-api injeta no /chat como system message, sem re-fazer dump de history
  • Reduz tokens 70-90% vs fetch full conversation

Variáveis de ambiente

DATABASE_URL=postgresql://vek1:<senha>@postgres:5432/vek1
POSTGRES_PASSWORD=<senha>

# LLM + embeddings
DEEPSEEK_API_KEY=sk-...
OPENAI_API_KEY=                       # vazio — usa DEEPSEEK
OPENAI_BASE_URL=https://api.deepseek.com
OLLAMA_BASE_URL=http://vault-ollama:11434
EMBEDDING_MODEL=bge-m3

# Token scopes
INTERNAL_API_TOKEN=...
INTERNAL_AUTH_TOKEN=...
INTERNAL_WEBHOOK_TOKEN=...

# Email transactional
RESEND_API_KEY=re_...
RESEND_FROM_EMAIL=noreply@vek1.app

# Misc
ENVIRONMENT=production
DEBUG=False
LOG_LEVEL=INFO
MAX_FILE_SIZE_MB=10
ALLOWED_EXTENSIONS=pdf,csv

Vide também

  • vek1 — frontend Next.js que consome essa API
  • infra/vps-hermes — VPS host
notas relacionadas
carregando…