Skip to main content

Despliegue auto-alojado

Ejecuta Mnemom Gateway en tu propia infraestructura para un control completo de la residencia de datos. El contenido de los prompts y respuestas nunca se envía a la nube de Mnemom, aunque los prompts se reenvían a los proveedores de LLM que configures — consulta Residencia de datos para ver los límites exactos del tráfico. La pasarela auto-alojada es un adaptador Node.js que ejecuta el mismo código que el servicio gestionado de Cloudflare Workers — comportamiento idéntico, tu infraestructura.
El despliegue auto-alojado requiere una licencia Enterprise. Contáctanos para obtener una clave de licencia. Enterprise incluye el modo de análisis híbrido, integración SSO/SAML y soporte dedicado.

Opciones de despliegue

Requisitos previos

  • Un JWT de licencia Enterprise desde mnemom.ai/dashboard
  • Una clave API de Anthropic (requerida para el análisis de integridad AIP)
  • Opcional: claves API de OpenAI y Gemini para el rastreo multi-proveedor
AIP usa por defecto el modo fail-open. Si el LLM de análisis es inaccesible, las comprobaciones de integridad pasarán silenciosamente. Para los despliegues en producción que manejan operaciones sensibles, define failure_policy: { mode: "fail_closed" } en tu configuración AIP.

Inicio rápido: Docker Compose

La forma más rápida de poner en marcha una pasarela auto-alojada. Incluye PostgreSQL, Redis y migraciones de base de datos automáticas.

Requisitos

  • Docker 24+ y Docker Compose v2+
  • 2 GB de RAM mínimo, 4 GB recomendados
  • 10 GB de espacio en disco
1

Clonar el repositorio

2

Configurar el entorno

Copia el archivo de entorno de ejemplo y completa tus credenciales:
Edita .env y establece los valores requeridos:
SUPABASE_URL debe ser un endpoint compatible con REST — un proyecto Supabase alojado, o una stack auto-alojada que exponga la API PostgREST de Supabase — no una cadena de conexión Postgres en bruto. La pasarela le habla por HTTP (GET <SUPABASE_URL>/rest/v1/...), así que apuntarla a un host postgres:// desnudo hará fallar cada llamada de datos, y también la comprobación de Supabase de /health/ready. El contenedor postgres incluido en este archivo compose proporciona el almacenamiento para que tu propio despliegue de Supabase/PostgREST se sitúe delante de él — no es en sí mismo un endpoint REST.
Si tu .env.example muestra SMOLTBOT_ROLE, cámbiale el nombre a MNEMOM_ROLE — el archivo tiene un nombre de marca obsoleto, pero el punto de entrada lee MNEMOM_ROLE.
3

Iniciar la stack

Esto inicia cuatro servicios en orden:
  1. PostgreSQL — base de datos con comprobación de salud
  2. Redis — capa de caché con persistencia
  3. Gateway — proxy HTTP en el puerto 8787 (aplica migraciones de base de datos al iniciar)
  4. Observer — planificador en segundo plano para el procesamiento de trazas
4

Verificar la salud

Espera unos 30 segundos, luego comprueba la salud de la pasarela:
Expected response
status es "degraded" (HTTP 503) y la comprobación individual correspondiente es { "ok": false } cuando Redis, SUPABASE_URL o la licencia no se pueden alcanzar/validar — el caso más común es que supabase falle porque SUPABASE_URL todavía no es un endpoint compatible con REST (ver la advertencia anterior).
5

Conectar un agente

Apunta la CLI de mnemom a tu pasarela auto-alojada:
Realiza una solicitud de prueba:
Si configuraste OPENAI_API_KEY, la misma pasarela sirve OpenAI en la ruta /openai:
Y Gemini en la ruta /gemini, si configuraste GEMINI_API_KEY:
Verifica que el agente esté conectado:

Producción: Kubernetes con Helm

Para despliegues en producción con auto-escalado, alta disponibilidad y monitoreo.

Requisitos

  • Kubernetes 1.27+
  • Helm 3.12+
  • kubectl configurado para tu clúster
1

Añadir el chart de Helm

2

Crear un Secret de Kubernetes

Almacena las credenciales sensibles en un Secret:
Estas son las claves que espera el values.yaml predeterminado del chart (secrets.values); añade otras solo si tu propio override de values las agrega.
3

Instalar el chart

4

Verificar el despliegue

Qué despliega el chart

  • Despliegue Gateway (2 réplicas por defecto) — proxy HTTP con sondas de liveness, readiness y startup
  • Despliegue Observer (1 réplica) — planificador en segundo plano para el procesamiento de trazas
  • Job de migración — hook de Helm pre-install/pre-upgrade que aplica las migraciones de base de datos
  • Service — ClusterIP en el puerto 8787
  • NetworkPolicy — deny-all por defecto con permisos explícitos para ingress, Redis, PostgreSQL y las API LLM ascendentes
  • PodDisruptionBudget — garantiza al menos 1 réplica durante las actualizaciones progresivas
  • Opcional: Ingress con TLS, HPA, ServiceMonitor para Prometheus

Escalado

Habilita el HorizontalPodAutoscaler para el escalado automático:

Arquitectura

En modo auto-alojado, una capa de adaptador Node.js reemplaza las API específicas de Cloudflare mientras ejecuta exactamente el mismo código de pasarela:
Capa de adaptación — cero modificaciones al código fuente de la pasarela:

Residencia de datos

El contenido de los prompts y respuestas nunca se envía a la nube de Mnemom. Sin embargo, los prompts se reenvían a los proveedores de LLM que configures — consulta la tabla siguiente para ver los límites exactos del tráfico. Las trazas, puntos de control de integridad y todo el contenido de prompts/respuestas permanecen en tu base de datos y nunca se envían a la nube de Mnemom.

Referencia de configuración

Requerido

El propio proceso de la pasarela solo valida estas tres — cualquier otra cosa que falte lo hace fallar cerrado en el arranque con un EnvValidationError que nombra la(s) variable(s) faltante(s): REDIS_PASSWORD y POSTGRES_PASSWORD se requieren en otra capa — el propio archivo Docker Compose se niega a iniciar esos contenedores sin ellos (ver la stack compose anterior). MNEMOM_LICENSE_JWT es tu licencia Enterprise desde mnemom.ai/dashboard; la pasarela igual arranca sin ella, pero la comprobación license de /health/ready la reporta como un despliegue sin licencia. SUPABASE_JWT_SECRET e INTERNAL_API_KEY no son leídos por los roles gateway/observer que ejecuta esta stack compose — déjalos sin definir a menos que también estés auto-alojando un rol que documente necesitarlos.

Opcional: proveedores

Opcional: análisis híbrido

En modo híbrido, solo se envían los bloques de pensamiento/razonamiento para análisis — los prompts y respuestas en bruto nunca salen de tu infraestructura.

Opcional: infraestructura


Endpoints de salud

Tres sondas estándar de Kubernetes:

Métricas de Prometheus

La pasarela expone un endpoint /metrics con:
  • gateway_requests_total{provider,status} — contador de solicitudes
  • gateway_request_duration_seconds{provider} — histograma de latencia
  • gateway_aip_checks_total{verdict} — contador de comprobaciones de integridad
  • gateway_cache_operations_total{operation,result} — hit/miss de caché
  • Métricas estándar process_* y nodejs_*
/metrics está cerrado por defecto — define METRICS_SCRAPE_KEY, o el endpoint responderá a cada scrape como si la ruta no existiera (sin 401, solo un cuerpo genérico de tipo not-found, así que un scraper mal configurado ni siquiera aparecerá como un error de permisos). Preséntala como X-Metrics-Key: <key> o Authorization: Bearer <key>; esta última es la que permite que un ServiceMonitor de Prometheus Operator la adjunte vía bearerTokenSecret.
Para Kubernetes, habilita el ServiceMonitor en values.yaml:

Actualización

Docker Compose

Las migraciones se ejecutan automáticamente como parte del inicio de la pasarela.

Helm

El job de migración se ejecuta como un hook de Helm pre-upgrade.
Haz siempre una copia de seguridad de tu base de datos antes de actualizar. Para Docker: docker compose exec postgres pg_dump -U mnemom mnemom > backup.sql. Para Kubernetes: usa tu procedimiento de copia de seguridad estándar de PostgreSQL.

Resolución de problemas

Falta una variable de entorno requerida. Revisa el mensaje de error para saber cuál, luego verifica tu archivo .env o tu Secret de Kubernetes.
  • Docker Compose: asegúrate de que el servicio redis esté sano (docker compose ps)
  • Kubernetes: verifica que REDIS_URL en tu Secret apunte a una instancia de Redis accesible
  • Sin Redis, la pasarela recurre al KV en memoria (solo un nodo)
  • Verifica que MNEMOM_LICENSE_JWT esté definido y no haya expirado
  • Comprueba /health/ready para el error de licencia específico
  • Contacta a support@mnemom.ai para la reemisión de la licencia
  • Verifica que tus claves API sean correctas y tengan créditos suficientes
  • La pasarela hace proxy directamente a las API de los proveedores — asegúrate de que el HTTPS saliente (puerto 443) esté permitido
  • En Kubernetes, comprueba que la NetworkPolicy permita el egress hacia 0.0.0.0/0:443
  • Aumenta los límites de memoria del contenedor (512Mi mínimo, 1Gi recomendado para tráfico alto)
  • Si usas el KV en memoria, cambia a Redis para reducir la presión de memoria
  • Define NODE_OPTIONS=--max-old-space-size=768 para un control fino del heap

Próximos pasos