Files
compose-anything/apps/archon/docker-compose.yaml
T

109 lines
3.7 KiB
YAML

# Archon defaults to a single-container SQLite deployment.
# Enable the with-db profile and set DATABASE_URL to use local PostgreSQL.
x-defaults: &defaults
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 100m
max-file: '3'
services:
archon:
<<: *defaults
image: ${GLOBAL_REGISTRY:-ghcr.io/}coleam00/archon:${ARCHON_VERSION:-latest}
ports:
- '${ARCHON_PORT_OVERRIDE:-3000}:${PORT:-3000}'
environment:
- TZ=${TZ:-UTC}
- ARCHON_DOCKER=true
- PORT=${PORT:-3000}
- HOST=${HOST:-0.0.0.0}
- CLAUDE_USE_GLOBAL_AUTH=${CLAUDE_USE_GLOBAL_AUTH:-false}
- CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN:-}
- CLAUDE_API_KEY=${CLAUDE_API_KEY:-}
- CODEX_ID_TOKEN=${CODEX_ID_TOKEN:-}
- CODEX_ACCESS_TOKEN=${CODEX_ACCESS_TOKEN:-}
- CODEX_REFRESH_TOKEN=${CODEX_REFRESH_TOKEN:-}
- CODEX_ACCOUNT_ID=${CODEX_ACCOUNT_ID:-}
- DEFAULT_AI_ASSISTANT=${DEFAULT_AI_ASSISTANT:-claude}
- DATABASE_URL=${DATABASE_URL:-}
- GH_TOKEN=${GH_TOKEN:-}
- GITHUB_TOKEN=${GITHUB_TOKEN:-}
- WEBHOOK_SECRET=${WEBHOOK_SECRET:-}
- GITLAB_URL=${GITLAB_URL:-https://gitlab.com}
- GITLAB_TOKEN=${GITLAB_TOKEN:-}
- GITLAB_WEBHOOK_SECRET=${GITLAB_WEBHOOK_SECRET:-}
- GITEA_URL=${GITEA_URL:-}
- GITEA_TOKEN=${GITEA_TOKEN:-}
- GITEA_WEBHOOK_SECRET=${GITEA_WEBHOOK_SECRET:-}
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-}
- DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN:-}
- SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN:-}
- SLACK_APP_TOKEN=${SLACK_APP_TOKEN:-}
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
- GEMINI_API_KEY=${GEMINI_API_KEY:-}
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY:-}
- BOT_DISPLAY_NAME=${BOT_DISPLAY_NAME:-Archon}
- TELEGRAM_STREAMING_MODE=${TELEGRAM_STREAMING_MODE:-stream}
- DISCORD_STREAMING_MODE=${DISCORD_STREAMING_MODE:-batch}
- SLACK_STREAMING_MODE=${SLACK_STREAMING_MODE:-batch}
- LOG_LEVEL=${LOG_LEVEL:-info}
- MAX_CONCURRENT_CONVERSATIONS=${MAX_CONCURRENT_CONVERSATIONS:-10}
- SESSION_RETENTION_DAYS=${SESSION_RETENTION_DAYS:-30}
- DO_NOT_TRACK=${DO_NOT_TRACK:-}
volumes:
- ${ARCHON_DATA:-archon_data}:/.archon
- ${ARCHON_USER_HOME:-archon_user_home}:/home/appuser
healthcheck:
test: [CMD, curl, -f, 'http://localhost:${PORT:-3000}/api/health']
interval: 30s
timeout: 10s
retries: 3
start_period: 20s
deploy:
resources:
limits:
cpus: ${ARCHON_CPU_LIMIT:-2.0}
memory: ${ARCHON_MEMORY_LIMIT:-4G}
reservations:
cpus: ${ARCHON_CPU_RESERVATION:-0.1}
memory: ${ARCHON_MEMORY_RESERVATION:-1G}
postgres:
<<: *defaults
image: ${GLOBAL_REGISTRY:-}postgres:${POSTGRES_VERSION:-17-alpine}
profiles:
- with-db
environment:
- TZ=${TZ:-UTC}
- POSTGRES_DB=remote_coding_agent
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}
ports:
- '127.0.0.1:${POSTGRES_PORT_OVERRIDE:-5432}:5432'
volumes:
- archon_postgres_data:/var/lib/postgresql/data
- ./migrations/000_combined.sql:/docker-entrypoint-initdb.d/000_combined.sql:ro
healthcheck:
test: [CMD-SHELL, 'pg_isready -U postgres -d remote_coding_agent']
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
deploy:
resources:
limits:
cpus: ${POSTGRES_CPU_LIMIT:-1.0}
memory: ${POSTGRES_MEMORY_LIMIT:-1G}
reservations:
cpus: ${POSTGRES_CPU_RESERVATION:-0.1}
memory: ${POSTGRES_MEMORY_RESERVATION:-256M}
volumes:
archon_data:
archon_user_home:
archon_postgres_data: