YACHAQ.DEV/Deploy
Deploy

Docker
and cluster

Three paths to take the assistant to production: standalone for development, a Docker cluster with a shared network for staging, and Kubernetes with Helm for high availability.

Three paths

Choose
your deployment

Common requirements

Docker 24+Compose 2.20+Python 3.1210 GB RAM (min.)
01 · Standalone

One service
at a time

Each repository ships its own infra/standalone/docker-compose.yml with all its dependencies.

SomaFractalMemory · memory

Brings up the API, PostgreSQL, Redis, etcd, MinIO and Milvus in a single command.

terminal
cd somafractalmemory
# configure 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
ServiceImagePortRAM
APIsomafractalmemory-api101011 GB
PostgreSQLpostgres:15104321.5 GB
Redisredis:710379512 MB
Milvusmilvusdb/milvus:v2.3.3105306 GB
etcd / MinIOetcd · miniointernal256 MB

SomaBrain · reasoning

Deploys the brain with its Rust core, Kafka, OPA, Vault and observability.

terminal
cd somabrain
cp infra/standalone/.env.example infra/standalone/.env
# edit .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
curl http://localhost:30101/health

SomaAgent01 · orchestration

The orchestrator with its own Vault. Model credentials live in Vault, managed by the service.

terminal
cd somaagent01/infra/standalone
cp .env.example .env
# edit .env: VAULT_TOKEN_TTL_HOURS, SA01_DEFAULT_TENANT_ID
vault kv put secret/agent/api_keys groq_api_key='<your key>'
docker compose up --build -d
curl http://localhost:20020/api/health/
02 · Docker cluster

One network,
three services

Connect the three services to the shared soma-stack-net network. Each repository includes an override that joins its stack to that network.

Create the network once and apply the override when bringing up each service. That way the orchestrator, the brain and the memory resolve each other by service name.

create the network
docker network create soma-stack-net
join a service to the network
# In each repository (brain, memory, agent)
docker compose \
  -f infra/standalone/docker-compose.yml \
  -f infra/standalone/docker-compose.shared-network.yml \
  up -d

Or bring the whole assistant up in one command from SomaAgent01. up-cluster.sh creates the network and starts the three services in order, waiting for health between each.

somaagent01/infra/standalone
./up-cluster.sh
# status: ./up-cluster.sh --status
# stop:   ./up-cluster.sh --down

Standalone

One host, local development.

Integrated cluster

The three services on soma-stack-net.

Ports

Memory 10xxx · Brain 30xxx · Orchestrator 20xxx

03 · Kubernetes

Production
Helm

Each service includes a Helm chart and k8s/ manifests. Model secrets stay in Vault, inside the cluster.

SomaFractalMemory · Helm
helm install somafractalmemory ./helm \
  -f helm/values-prod-ha.yaml \
  --namespace somabrain --create-namespace
SomaAgent01 · manifests
kubectl apply -f k8s/somaagent/

Model secrets

Provider credentials live in Vault, managed by the service. Cluster manifests stay clean of secrets.

Vault KV v2
vault kv put secret/agent/api_keys groq_api_key='<your key>'
Operations

Production

PostgreSQL backup

pg_dump
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

Secure token

openssl
SOMA_API_TOKEN=$(openssl rand -hex 32)

The API is the only public endpoint. etcd and MinIO stay internal. Terminate TLS with a reverse proxy (nginx).

Verification

Cluster
health

SomaFractalMemory
curl localhost:10101/healthz
# {"kv_store":true,"vector_store":true,"graph_store":true}
curl localhost:10101/readyz
curl localhost:10101/metrics
SomaBrain
curl localhost:30101/health
curl localhost:30101/stats
SomaAgent01
curl localhost:20020/api/health/
curl localhost:20020/api/
FAQ

Deployment
in detail

Standalone or cluster for production?

Standalone is ideal for development and integration testing. For staging and production use the cluster with a shared network or Kubernetes with Helm.

How do I manage credentials?

Provider keys live in Vault (secret/agent/api_keys) and are managed from the agent administration. Manifests and environment files stay clean of secrets.

What vector dimension do I configure?

768 across the three: SOMA_VECTOR_DIM in memory, EMBED_DIM in the brain and MEM_EMBED_DIM in the agent. The shared dimension keeps semantic recall precise.

Can I scale a single service?

Yes. Each service scales independently: memory grows with usage, the orchestrator with load. In Kubernetes, adjust replicas per chart.