Autonomous AI development system that turns GitHub issues into pull requests.
Quick Start • How It Works • Configuration • API
- GitHub Issue → PR - Label an issue
whim, get a pull request back - Spec Generation - Converts issue descriptions to structured task specs via Ralphie
- Parallel Workers - Run multiple Claude Code instances simultaneously
- AI Verification - Separate worker validates PRs actually work
- Learnings System - Workers share discoveries via vector embeddings
- Rate Limiting - Respects API limits with daily budgets and cooldowns
- File Locking - Prevents conflicts when workers touch the same files
- CLI Dashboard - Real-time terminal UI for monitoring
GitHub Issue (labeled "whim")
↓
Intake Service
(generates spec via Ralphie)
↓
Orchestrator Queue
↓
Worker Container
(Claude Code + Ralphie)
↓
Pull Request
↓
Verification Worker
(tests + validates)
- Intake - Picks up GitHub issues labeled
whim - Spec Generation - Converts issue to SPEC.md task checklist
- Queue - Prioritizes work items (critical > high > medium > low)
- Execution - Docker worker runs Claude Code autonomously
- PR Creation - Completed work becomes a pull request
- Verification - AI worker checks the PR actually works
- Docker & Docker Compose
- GitHub CLI (
gh) authenticated - GitHub PAT with repo permissions
- Anthropic API key
git clone https://github.com/skylarbarrera/whim.git
cd whim
# Run setup script
./scripts/setup.sh
# Configure environment
cp .env.example .env
# Edit .env with your tokens and repos
# Start services
./scripts/dev.shVia GitHub:
- Create an issue in a configured repo
- Add the
whimlabel - Wait for PR
Via API:
curl -X POST http://localhost:3002/api/work \
-H "Content-Type: application/json" \
-d '{
"repo": "owner/repo",
"description": "Add a /health endpoint that returns JSON status"
}'Monitor:
whim dashboard # Interactive dashboard
whim status # Quick status check| Variable | Description |
|---|---|
GITHUB_TOKEN |
GitHub PAT with repo permissions |
ANTHROPIC_API_KEY |
Anthropic API key |
REPOS |
Comma-separated repos: owner/repo1,owner/repo2 |
POSTGRES_PASSWORD |
Database password |
ALLOWED_USERS |
GitHub usernames authorized to trigger work |
| Variable | Default | Description |
|---|---|---|
MAX_WORKERS |
2 |
Maximum concurrent workers |
DAILY_BUDGET |
200 |
Max iterations per day |
COOLDOWN_SECONDS |
60 |
Seconds between worker spawns |
INTAKE_LABEL |
whim |
GitHub label to watch |
HARNESS |
claude |
AI backend: claude, codex, or opencode |
| Service | Default | Env Var |
|---|---|---|
| Orchestrator | 3002 | ORCHESTRATOR_PORT |
| PostgreSQL | 5433 | POSTGRES_PORT |
| Redis | 6380 | REDIS_PORT |
POST /api/work- Create work itemGET /api/work/:id- Get statusPOST /api/work/:id/cancel- CancelPOST /api/work/:id/requeue- Retry
GET /api/status- System statusGET /api/queue- Queue contentsGET /api/workers- List workersGET /api/metrics- MetricsGET /health- Health check
# Initialize a repo for Whim
whim init
# Run AI verification on current branch
whim verify
whim verify --pr 123 --comment
# Monitor
whim dashboard
whim status- User Allowlist - Only configured GitHub users can trigger work
- Docker Socket Proxy - Limited container operations, no exec/volumes/build
- Container Limits - 4GB memory, 2 CPU cores, 256 PID limit
- Input Validation - Parameterized queries, request size limits
See ARCHITECTURE.md for detailed system design.
bun install # Install dependencies
bun run build # Build all packages
bun test # Run tests
bun run lint # LintMIT
