Entorno local
Requisitos previos
- Node.js 20+ y pnpm (no usar npm/yarn en ningún repo de Aura).
- Docker (para PostgreSQL + pgvector).
- Ajolote corriendo (servicio de auth) — o acceso al ajolote de dev.
- Token de GitHub con scope
read:packagespara instalar los paquetes privados@cuatro-quinas/*.
GitHub Packages (una sola vez)
Los paquetes @cuatro-quinas/ajolote-* se publican en GitHub Packages. Configurá tu
~/.npmrc de usuario (no el del repo):
//npm.pkg.github.com/:_authToken=ghp_TU_TOKEN
Alternativa por sesión:
export GITHUB_TOKEN=ghp_...antes depnpm install.
Backend (Aura-reloaded)
pnpm install
cp env.example .env # completar DATABASE_URL, OPENAI_API_KEY, etc.
docker compose up -d db # PostgreSQL + pgvector
pnpm db:push # aplica el schema (solo dev)
pnpm ingest:manuals # (opcional) carga manuales en knowledge_base
pnpm start:dev # → API en http://localhost:3000
Variables de entorno (backend)
| Variable | Default | Req. | Descripción |
|---|---|---|---|
DATABASE_URL | — | ✅ | Connection string de PostgreSQL |
OPENAI_API_KEY | — | ✅ | Embeddings (siempre OpenAI) |
AUTH_SERVICE_URL | — | ✅ | URL del ajolote (mismo que usa el front) |
AUTH_APP_ID | aura | — | App id en ajolote |
LLM_PROVIDER | openai | — | openai | groq | cerebras | mistral | mock |
LLM_MODEL | gpt-4o-mini | — | Modelo de chat |
LLM_API_KEY | = OPENAI_API_KEY | — | API key del provider de chat |
LLM_BASE_URL | — | — | Base URL para providers no-OpenAI |
EMBEDDING_MODEL | text-embedding-3-small | — | Modelo de embeddings (runtime) |
SIMILARITY_THRESHOLD | 0.78 | — | Umbral de hit en memory_embeddings |
APPROVED_THRESHOLD | 0.85 | — | Umbral para ejemplos aprobados |
KNOWLEDGE_THRESHOLD | 0.60 | — | Umbral de hit en knowledge_base |
QUERY_LATENCY_BUDGET_MS | 500 | — | Timeout de la query RAG (ms) |
PORT | 3000 | — | Puerto HTTP/WS |
RETELL_API_KEY / RETELL_SECRET | — | — | Retell (transferencias / auth webhook) |
EXISTING_BACKEND_URL | — | — | Backend externo para lookup de pacientes |
Cambiar de provider LLM es solo .env (sin recompilar), ej. LLM_PROVIDER=mock para dev
sin API keys.
Frontend (aura-front)
pnpm install
cp .env.example .env.local
pnpm dev # → http://localhost:5173
Variables de entorno (frontend)
VITE_API_BASE_URL=http://localhost:3000 # backend de Aura
VITE_AUTH_URL=http://localhost:5173 # dev server (proxy a ajolote)
VITE_AUTH_PROXY_TARGET=http://100.64.188.115:3010 # ajolote real (dev)
VITE_COPILOT_WS_URL=ws://localhost:3000/copilot/TU_AGENT_ID
VITE_USE_MOCK=false # true = levanta sin backend
VITE_SHOW_SOURCE_FILTER=true # muestra filtro de origen en paneles
En dev el front le pega a su propio dev server y Vite proxya /api/auth al ajolote
real (VITE_AUTH_PROXY_TARGET). Esto es porque la cookie de sesión sale SameSite=Lax y
no viaja cross-site. Sin el proxy, get-session devuelve null y nunca quedás logueado.
Detalle en Autenticación.
Ajolote (auth)
El backend y el front tienen que apuntar al mismo ajolote (AUTH_SERVICE_URL ==
VITE_AUTH_PROXY_TARGET), o los roles no matchean. La administración de usuarios y roles
(crear tenant, usuarios, asignar roles) se hace contra ajolote, no desde Aura —
ver Autenticación → Roles.