Docker Compose Quickstart
Deploy the complete Everruns platform using Docker Compose. This guide sets up the control plane, workers, UI, and database in a single command.
Prerequisites
Section titled “Prerequisites”- Docker Engine 20.10+
- Docker Compose v2.0+
- 4GB available RAM
Quick Start
Section titled “Quick Start”1. Download Docker Compose File
Section titled “1. Download Docker Compose File”# Create directory and download docker-compose filemkdir everruns && cd everrunscurl -o docker-compose.yaml https://raw.githubusercontent.com/everruns/everruns/main/examples/docker-compose-full.yaml2. Generate Encryption Key
Section titled “2. Generate Encryption Key”Everruns encrypts LLM API keys at rest. Generate a key:
python3 -c "import os, base64; print('kek-v1:' + base64.b64encode(os.urandom(32)).decode())"3. Create Environment File
Section titled “3. Create Environment File”Create a .env file with your encryption key and optional LLM API keys:
SECRETS_ENCRYPTION_KEY=kek-v1:<your-generated-key>
# Optional: Add API keys here to skip UI configurationDEFAULT_OPENAI_API_KEY=sk-...DEFAULT_ANTHROPIC_API_KEY=sk-ant-...4. Start Services
Section titled “4. Start Services”docker compose pull # Fetch latest imagesdocker compose up -dThis starts:
- PostgreSQL database
- Control plane API
- 3 worker instances
- Next.js UI
- Caddy reverse proxy
- Jaeger tracing
5. Access the Platform
Section titled “5. Access the Platform”| Service | URL |
|---|---|
| Web UI | http://localhost:8080 |
| Swagger API Docs | http://localhost:8080/swagger-ui/ |
| Health Check | http://localhost:8080/health |
| Jaeger Tracing | http://localhost:16686 |
Configuration
Section titled “Configuration”Configure LLM Provider
Section titled “Configure LLM Provider”If you didn’t set DEFAULT_OPENAI_API_KEY or DEFAULT_ANTHROPIC_API_KEY in your .env file, configure via UI:
- Open http://localhost:8080
- Navigate to Settings > Providers
- Add your OpenAI or Anthropic API key
- Save and verify connection
Create Your First Agent
Section titled “Create Your First Agent”- Go to Agents in the UI
- Click Create Agent
- Set a name and system prompt
- Select your configured LLM provider
- Save the agent
Start a Session
Section titled “Start a Session”# Create a session (agent_id in request body)curl -X POST http://localhost:8080/api/v1/sessions \ -H "Content-Type: application/json" \ -d '{"agent_id": "{agent_id}"}'
# Send a messagecurl -X POST http://localhost:8080/api/v1/sessions/{session_id}/messages \ -H "Content-Type: application/json" \ -d '{"message": {"role": "user", "content": [{"type": "text", "text": "Hello!"}]}}'Scaling Workers
Section titled “Scaling Workers”Add more workers by scaling the worker services:
# Scale to 5 workersdocker compose up -d --scale worker-1=1 --scale worker-2=1 --scale worker-3=3Or modify docker-compose.yaml to add more worker services.
Monitoring
Section titled “Monitoring”View Logs
Section titled “View Logs”# All servicesdocker compose logs -f
# Specific servicedocker compose logs -f apidocker compose logs -f worker-1Distributed Tracing
Section titled “Distributed Tracing”Jaeger UI is available at http://localhost:16686 for viewing request traces across services.
Stopping Services
Section titled “Stopping Services”# Stop all servicesdocker compose down
# Stop and remove volumes (deletes data)docker compose down -vTroubleshooting
Section titled “Troubleshooting”Database Connection Issues
Section titled “Database Connection Issues”If services fail to connect to PostgreSQL:
# Check postgres healthdocker compose ps postgres
# View postgres logsdocker compose logs postgresMigration Failures
Section titled “Migration Failures”Migrations are auto-applied when the API server starts. If migrations fail:
# Check API logs for migration errorsdocker compose logs api
# Restart API to retry migrationsdocker compose restart apiTo check migration status before deployment:
docker compose exec api everruns-admin migrate-infoWorker Not Processing
Section titled “Worker Not Processing”Verify workers can reach the control plane:
# Check worker logsdocker compose logs worker-1
# Verify gRPC connectiondocker compose exec worker-1 /bin/sh -c "echo" || echo "Cannot exec (distroless image)"Next Steps
Section titled “Next Steps”- API Reference - Full API documentation
- Capabilities - Extend agent functionality
- Environment Variables - Advanced configuration