This repository has been archived on 2026-05-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
damascus-frontier/docker-compose.yml
root a22d67d1b7 feat: add PostgreSQL shared state (Issue #6)
- Add postgres:16-alpine service to docker-compose.yml with healthcheck
- Create db/schema.sql with projects, deliverables, decisions, threads tables
- Create db/connection.py (singleton connection manager with auto-schema)
- Create db/project_manager.py (CRUD for all project state)
- Update BaseAgent to use ProjectManager instead of JSON for state
- Keep context.json for transient message history, move project state to DB
- Add psycopg2-binary to requirements.txt
- Add POSTGRES_HOST/POSTGRES_DB/POSTGRES_USER/POSTGRES_PASSWORD env vars to all agent services
- Mount db/ directory into containers at /app/db
- Add conversation.py to Dockerfile (was missing)
- All agents share state via PostgreSQL now — VP can query PM/Sales/Engineer state
2026-05-21 14:59:55 +00:00

185 lines
4.9 KiB
YAML

version: '3.8'
services:
postgres:
image: postgres:16-alpine
container_name: damascus-postgres
environment:
- POSTGRES_DB=damascus
- POSTGRES_USER=damascus
- POSTGRES_PASSWORD=damascus
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- damascus-net
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U damascus -d damascus"]
interval: 5s
timeout: 3s
retries: 5
redis:
image: redis:7-alpine
container_name: damascus-redis
command: redis-server /usr/local/etc/redis/redis.conf
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf:ro
- redis-data:/data
networks:
- damascus-net
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
vp:
build:
context: ./agents
dockerfile: Dockerfile
container_name: damascus-vp
environment:
- AGENT_ROLE=vp
- AGENT_NAME=Alex Chen
- REDIS_HOST=redis
- LITELLM_URL=${LITELLM_URL:-http://litellm:4000/v1}
- LITELLM_MODEL=${LITELLM_MODEL:-ollama-cloud-pro}
- GITEA_URL=${GITEA_URL:-https://git.homelab.local}
- GITEA_TOKEN=${GITEA_TOKEN}
- GITEA_USER=${GITEA_USER:-kaykayyali}
- POSTGRES_HOST=postgres
- POSTGRES_DB=damascus
- POSTGRES_USER=damascus
- POSTGRES_PASSWORD=damascus
- DB_SCHEMA_PATH=/app/db/schema.sql
volumes:
- ./agents/personas:/app/personas:ro
- ./shared:/app/shared
- ./config.yaml:/app/config.yaml:ro
- ./db:/app/db:ro
- agent-vp-data:/app/data
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
networks:
- damascus-net
restart: unless-stopped
pm:
build:
context: ./agents
dockerfile: Dockerfile
container_name: damascus-pm
environment:
- AGENT_ROLE=pm
- AGENT_NAME=Sarah Okafor
- REDIS_HOST=redis
- LITELLM_URL=${LITELLM_URL:-http://litellm:4000/v1}
- LITELLM_MODEL=${LITELLM_MODEL:-ollama-cloud-pro}
- GITEA_URL=${GITEA_URL:-https://git.homelab.local}
- GITEA_TOKEN=${GITEA_TOKEN}
- GITEA_USER=${GITEA_USER:-kaykayyali}
- POSTGRES_HOST=postgres
- POSTGRES_DB=damascus
- POSTGRES_USER=damascus
- POSTGRES_PASSWORD=damascus
- DB_SCHEMA_PATH=/app/db/schema.sql
volumes:
- ./agents/personas:/app/personas:ro
- ./shared:/app/shared
- ./config.yaml:/app/config.yaml:ro
- ./db:/app/db:ro
- agent-pm-data:/app/data
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
networks:
- damascus-net
restart: unless-stopped
sales:
build:
context: ./agents
dockerfile: Dockerfile
container_name: damascus-sales
environment:
- AGENT_ROLE=sales
- AGENT_NAME=Marcus Rivera
- REDIS_HOST=redis
- LITELLM_URL=${LITELLM_URL:-http://litellm:4000/v1}
- LITELLM_MODEL=${LITELLM_MODEL:-ollama-cloud-pro}
- GITEA_URL=${GITEA_URL:-https://git.homelab.local}
- GITEA_TOKEN=${GITEA_TOKEN}
- GITEA_USER=${GITEA_USER:-kaykayyali}
- POSTGRES_HOST=postgres
- POSTGRES_DB=damascus
- POSTGRES_USER=damascus
- POSTGRES_PASSWORD=damascus
- DB_SCHEMA_PATH=/app/db/schema.sql
volumes:
- ./agents/personas:/app/personas:ro
- ./shared:/app/shared
- ./config.yaml:/app/config.yaml:ro
- ./db:/app/db:ro
- agent-sales-data:/app/data
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
networks:
- damascus-net
restart: unless-stopped
engineer:
build:
context: ./agents
dockerfile: Dockerfile
container_name: damascus-engineer
environment:
- AGENT_ROLE=engineer
- AGENT_NAME=Jordan Kim
- REDIS_HOST=redis
- LITELLM_URL=${LITELLM_URL:-http://litellm:4000/v1}
- LITELLM_MODEL=${LITELLM_MODEL:-ollama-cloud-pro}
- GITEA_URL=${GITEA_URL:-https://git.homelab.local}
- GITEA_TOKEN=${GITEA_TOKEN}
- GITEA_USER=${GITEA_USER:-kaykayyali}
- POSTGRES_HOST=postgres
- POSTGRES_DB=damascus
- POSTGRES_USER=damascus
- POSTGRES_PASSWORD=damascus
- DB_SCHEMA_PATH=/app/db/schema.sql
volumes:
- ./agents/personas:/app/personas:ro
- ./shared:/app/shared
- ./config.yaml:/app/config.yaml:ro
- ./db:/app/db:ro
- agent-eng-data:/app/data
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
networks:
- damascus-net
restart: unless-stopped
networks:
damascus-net:
driver: bridge
volumes:
pgdata:
redis-data:
agent-vp-data:
agent-pm-data:
agent-sales-data:
agent-eng-data: