Tres caminos para llevar el Asistente Yachaq a producción: standalone para desarrollo, un clúster Docker con red compartida para staging, y Kubernetes con Helm para alta disponibilidad.
Un comando por servicio con Docker Compose. Ideal para desarrollo local y pruebas de integración.
02Los tres servicios en una red compartida soma-stack-net. Una pila coherente para staging.
03Helm charts con valores de producción HA para orquestar el asistente a escala.
Requisitos comunes
Cada repositorio trae su propio infra/standalone/docker-compose.yml con todas sus dependencias.
Levanta la API, PostgreSQL, Redis, etcd, MinIO y Milvus en un solo comando.
cd somafractalmemory # configura infra/standalone/.env: # SOMA_VAULT_TOKEN, SOMA_DB_PASSWORD, SOMA_API_TOKEN docker compose -f infra/standalone/docker-compose.yml \ --env-file infra/standalone/.env up -d curl http://localhost:10101/healthz
| Servicio | Imagen | Puerto | RAM |
|---|---|---|---|
| API | somafractalmemory-api | 10101 | 1 GB |
| PostgreSQL | postgres:15 | 10432 | 1.5 GB |
| Redis | redis:7 | 10379 | 512 MB |
| Milvus | milvusdb/milvus:v2.3.3 | 10530 | 6 GB |
| etcd / MinIO | etcd · minio | interno | 256 MB |
Despliega el cerebro con su núcleo Rust, Kafka, OPA, Vault y observabilidad.
cd somabrain cp infra/standalone/.env.example infra/standalone/.env docker compose -f infra/standalone/docker-compose.yml \ --env-file infra/standalone/.env up -d curl http://localhost:30101/health
El orquestador con su propio Vault. Las credenciales del modelo viven en Vault, gestionadas por el servicio.
cd somaagent01/infra/standalone cp .env.example .env # edita .env: VAULT_TOKEN_TTL_HOURS y SA01_DEFAULT_TENANT_ID vault kv put secret/agent/api_keys groq_api_key='<tu-clave>' docker compose up --build -d curl http://localhost:20020/api/health/
Conecta los tres servicios a la red compartida soma-stack-net. Cada repositorio incluye un override que une su pila a esa red.
Crea la red una vez y aplica el override al levantar cada servicio. Así el orquestador, el cerebro y la memoria se resuelven entre sí por nombre de servicio.
docker network create soma-stack-net
# desde somaagent01/infra/standalone: todo el asistente ./up-cluster.sh # equivale, por servicio: docker compose \ -f infra/standalone/docker-compose.yml \ -f infra/standalone/docker-compose.shared-network.yml up -d
Un host, desarrollo local.
Memoria, cerebro y orquestador en una red.
Memoria 10xxx · Cerebro 30xxx · Orquestador 20xxx
Cada servicio incluye chart de Helm y manifiestos k8s/. Los secretos de modelo permanecen en Vault, dentro del clúster.
helm install somafractalmemory ./helm \ -f helm/values-prod-ha.yaml \ --namespace somabrain --create-namespace
kubectl apply -f k8s/somaagent/
Secretos de modelo
Las credenciales de proveedor viven en Vault, gestionadas por el servicio. Los manifiestos del clúster quedan limpios de secretos.
vault kv put secret/agent/api_keys groq_api_key='<tu-clave>'
docker compose -f infra/standalone/docker-compose.yml exec -T \
somafractalmemory-standalone-postgres \
pg_dump -U "${SOMA_DB_USER:-somafractalmemory}" \
"${SOMA_DB_NAME:-somafractalmemory}" > backup.sql
SOMA_API_TOKEN=$(openssl rand -hex 32)
La API es el único endpoint público. etcd y MinIO permanecen internos. Termina TLS con un proxy inverso (nginx).
curl localhost:10101/healthz
# {"kv_store":true,"vector_store":true,"graph_store":true}
curl localhost:10101/readyz
curl localhost:10101/metrics
curl localhost:30101/health curl localhost:30101/stats
curl localhost:20020/api/health/ curl localhost:20020/api/
Standalone es ideal para desarrollo y pruebas de integración. Para staging y producción usa el clúster con red compartida o Kubernetes con Helm.
Las claves de proveedor viven en Vault (secret/agent/api_keys) y se gestionan desde la administración del agente. Los manifiestos y archivos de entorno quedan limpios de secretos.
768 en los tres: SOMA_VECTOR_DIM en la memoria, EMBED_DIM en el cerebro y MEM_EMBED_DIM en el agente. La dimensión compartida mantiene preciso el recuerdo semántico.
Sí. Cada servicio escala de forma independiente: la memoria crece con el uso, el orquestador con la carga. En Kubernetes, ajusta réplicas por chart.