Thanks for your interest in contributing! This guide covers everything you need to get started.
- Docker & Docker Compose
- An API key or OAuth token or other
git clone https://github.com/enixCode/parpaing-agent-worker.git && cd parpaing-agent-worker
cp .env.example .env
# Fill in POSTGRES_PASSWORD and at least one engine auth key (see .env.example)
docker compose up --build -dVerify with curl http://localhost:8420/health.
| Directory | Role | Stack |
|---|---|---|
tower/ |
Orchestrator (API + job queue) | Python 3.12, FastAPI, asyncpg |
worker/ |
Ephemeral agent containers | Node.js 22, engine binaries |
profiles/ |
Agent config (TOML) | tomllib (stdlib) |
templates/ |
Prompt/settings templates | Jinja2 |
db/ |
PostgreSQL schema | SQL |
docs/ |
Documentation | Markdown |
Create a branch from main with a descriptive name:
git checkout -b feat/my-featureFollow the sustainability rules - when you change one file, update all related files:
- models.py →
db/init.sql,docs/request.md,CLAUDE.md - Profiles →
docs/profiles.md - Templates →
docs/templates.md - Env vars →
.env.example,config.py,docs/config.md,CLAUDE.md(NOT docker-compose.yml -env_file: .envpasses all vars) - Endpoints →
docs/api.md,CLAUDE.md - Default values →
docs/request.md,docs/profiles.md,db/init.sql - docs/ → set
Generated:date to today
docker compose up --build -d
# Submit a test job
curl -X POST http://localhost:8420/jobs \
-H "Content-Type: application/json" \
-d '{"agent_id": "test", "engine": "claude-code", "prompt": "List files in /workspace"}'Write clear, concise commit messages. One logical change per commit.
- KISS - Keep it simple. Minimal code that works.
- SOLID - Single responsibility per module/function.
- YAGNI - Don't build what isn't needed yet.
Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- Docker and OS version
- Keep PRs focused on a single change
- Ensure docs are updated (see sustainability rules above)
- Describe what and why in the PR description