Deployment

Your project is already containerized. Deployment is about where you run those containers.

Docker Compose (single machine)

The simplest option. Good for small teams and moderate traffic.

# Start everything
docker compose up -d

# Rebuild after code changes
docker compose up --build -d

# Stop
docker compose down

Environment variables

Create a .env file in your project root:

# LLM
MODEL_NAME=qwen2.5:3b
OLLAMA_HOST=http://ollama:11434

# Cloud LLM (if using)
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=AI...

# Security
A2A_VALIDATION_MODE=strict
MAX_RISK_THRESHOLD=0.7

# Logging
LOG_LEVEL=INFO
LOG_TO_ARTIFACT_STORE=true

Docker Compose reads .env automatically.

Scale agents

# Run 3 instances of an agent
docker compose up -d --scale my-agent=3

Note: you’ll need a load balancer in front if scaling. The Semantic Layer handles discovery — it routes to whichever instance is healthy.

Docker Swarm (cluster)

For multi-machine deployments:

docker swarm init
docker stack deploy -c compose.yaml my-system
docker service ls
docker service scale my-system_my-agent=5

Kubernetes

Convert your compose file:

kompose convert -f compose.yaml
kubectl apply -f .
kubectl get pods

Production checklist

  • [ ] A2A_VALIDATION_MODE=strict

  • [ ] API keys in environment variables, not in code

  • [ ] LOG_LEVEL=INFO (not DEBUG)

  • [ ] Health checks configured for all services

  • [ ] Volumes for persistent data (Weaviate, MinIO, Ollama models)

  • [ ] Resource limits set in compose.yaml

  • [ ] Backup strategy for Weaviate data and agent cards

  • [ ] HTTPS termination in front of web interfaces

Backup

# Ollama models
docker run --rm -v ollama_data:/data -v $(pwd):/backup alpine \
  tar czf /backup/ollama-backup.tar.gz /data

# Weaviate data
docker run --rm -v weaviate_data:/data -v $(pwd):/backup alpine \
  tar czf /backup/weaviate-backup.tar.gz /data

# Configuration
tar czf config-backup.tar.gz .abi/ services/ agents/

Next step

👉 CLI Reference