Clona los tres servicios, configura sus variables y levanta todo el asistente con un comando. En modo Standalone corre completo en tu máquina con Docker Compose.
Engine 24+
v2
3.12
2.40+
El arranque integrado conecta los tres servicios por una red Docker compartida (soma-stack-net) y los resuelve por ruta relativa. Clónalos dentro del mismo directorio padre:
mkdir soma && cd soma git clone https://github.com/somatechlat/somafractalmemory git clone https://github.com/somatechlat/somabrain git clone https://github.com/somatechlat/somaagent01
SomaFractalMemory funciona por sí sola. Arrancarla primero deja el endpoint de persistencia listo para los demás servicios.
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
La memoria vectorial y el cerebro comparten 768 dimensiones. En SomaFractalMemory fija el vector; en SomaAgent01 defines el tenant por defecto.
SOMA_VECTOR_DIM=768 SOMA_DB_USER=somafractalmemory SOMA_DB_NAME=somafractalmemory SOMA_API_TOKEN=<token-generado>
SomaBrain apunta a la memoria por su nombre de servicio en la red y publica su salud en el puerto 30101.
cd somabrain cp infra/standalone/.env.example infra/standalone/.env # edita .env: SOMABRAIN_VAULT_TOKEN, POSTGRES_PASSWORD, # SOMABRAIN_JWT_SECRET, SOMABRAIN_MEMORY_HTTP_TOKEN docker compose -f infra/standalone/docker-compose.yml \ --env-file infra/standalone/.env up -d
SomaAgent01 expone la API y la WebUI. La clave del modelo vive en Vault, en secret/agent/api_keys, y el servicio la resuelve en tiempo de ejecución.
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/
Atajo · asistente completo en un comando
Con los tres repositorios como hermanos y sus .env configurados, up-cluster.sh crea la red compartida, levanta memoria → cerebro → orquestador y espera a que los tres estén sanos:
./up-cluster.sh # estado: ./up-cluster.sh --status # apagar: ./up-cluster.sh --down
Si los tres endpoints responden, tu asistente está corriendo.
curl localhost:10101/healthz curl localhost:10101/readyz
curl localhost:30101/health curl localhost:30101/stats
curl localhost:20020/api/health/ curl localhost:20020/api/
Casi siempre es una discrepancia de dimensión de embeddings. Verifica que los tres servicios compartan la dimensión de 768 (MEM_EMBED_DIM · EMBED_DIM · SOMA_VECTOR_DIM) y reinicia.
Confirma que los tres repositorios estén en el mismo directorio padre y que SomaBrain y SomaFractalMemory reporten salud antes de levantar el orquestador. Revisa docker compose logs y la red soma-stack-net.
El token (SOMA_API_TOKEN) y el tenant (X-Soma-Tenant) deben coincidir entre SomaBrain y SomaFractalMemory. Revisa que el .env esté cargado en ambos.
El asistente está en pie pero el modelo no recibe el contexto recuperado. Verifica la clave del modelo en Vault (secret/agent/api_keys) y que la orquestación llame a la memoria de trabajo.