claw-forge CLI
claw-forge is a multi-provider autonomous coding agent harness.
Agents run in parallel, claim features from a dependency DAG, and keep working
until every feature passes — or you stop them.
GitHub: https://github.com/clawinfra/claw-forge
PyPI: https://pypi.org/project/claw-forge/
Install
pip install claw-forge
# or (recommended):
uv pip install claw-forge
Full Workflow
1 — Bootstrap a project
cd my-project
claw-forge init
Creates:
CLAUDE.md— agent instructions (stack-aware).claude/— slash commands (/create-spec, etc.)claw-forge.yaml— provider pool config.env.example— API key template
2 — Write a spec
Create app_spec.txt (plain text) or app_spec.xml (structured XML):
Project: My App
Stack: Python, FastAPI, SQLite
Authentication:
- JWT login endpoint
- Token refresh
- Session management
Dashboard:
- Real-time stats via WebSocket
- Export CSV
Or use the Claude slash command inside Claude Code: /create-spec
3 — Plan: parse spec → feature DAG
claw-forge plan app_spec.txt
- Decomposes spec into atomic features
- Assigns dependency edges (A must pass before B starts)
- Writes task graph to
.claw-forge/state.db - Uses Opus by default (planning is the most critical step)
# Use Sonnet if cost matters more
claw-forge plan app_spec.txt --model claude-sonnet-4-6
4 — Run agents
claw-forge run
Default: 5 parallel coding agents, reads claw-forge.yaml.
# More concurrency
claw-forge run --concurrency 8
# Pin a specific model
claw-forge run --model claude-opus-4-6
# YOLO mode — skip human-input gates, max speed, aggressive retry
claw-forge run --yolo
# Preview without executing
claw-forge run --dry-run
# Use hashline edit mode (better for weaker models — 6.7%→68.3% benchmark)
claw-forge run --edit-mode hashline
5 — Check progress
claw-forge status
Shows: passing/failing/running/pending feature counts, recommended next action.
6 — Open the Kanban UI
claw-forge ui
Opens a browser-based Kanban board at http://localhost:8888.
Shows real-time agent activity, feature status, costs, and logs.
All Commands
| Command | Purpose |
|---------|---------|
| init | Bootstrap project (CLAUDE.md, config, slash commands) |
| plan <spec> | Parse spec → feature DAG in state DB |
| run | Run agents until all features pass |
| status | Show progress and recommended next action |
| ui | Launch Kanban UI at localhost:8888 |
| dev | Start API + Vite dev server (for UI development) |
| add <spec> | Add features to an existing project (brownfield) |
| pause | Drain mode: finish in-flight, start no new agents |
| resume | Resume after pause |
| fix <desc> | Fix a bug using RED→GREEN reproduce-first protocol |
| merge | Squash-merge a feature branch to target |
| input | Answer pending human-input questions interactively |
| pool-status | Show provider pool health and current routing |
| state | Start the AgentStateService REST + WebSocket API |
Config: claw-forge.yaml
# Provider pool — add as many as you have keys for
providers:
anthropic-primary:
type: anthropic
api_key: ${ANTHROPIC_API_KEY}
priority: 1
enabled: true
max_rpm: 50
model: claude-sonnet-4-6
anthropic-backup:
type: anthropic
api_key: ${ANTHROPIC_API_KEY_2}
priority: 2
enabled: true
max_rpm: 30
model: claude-sonnet-4-6
# Pool routing strategy
pool:
strategy: priority # priority | round_robin | least_cost
# Model aliases (use in --model flag)
model_aliases:
fast: claude-haiku-4-5
smart: claude-opus-4-6
default: claude-sonnet-4-6
# Git integration
git:
enabled: true
merge_strategy: auto # auto | squash | merge
Edit Modes
str_replace (default)
Standard exact-text matching. Works well with capable models (Sonnet, Opus).
hashline (recommended for weaker models)
Content-addressed line tagging. Each line gets a 3-char hash prefix.
Model references lines by hash — immune to whitespace/indentation drift.
Benchmark: 6.7% → 68.3% success rate improvement on Grok Code Fast.
claw-forge run --edit-mode hashline
Brownfield (add to existing project)
# Write additions spec
cat > additions_spec.xml << 'EOF'
<project_specification>
<project_name>my-app</project_name>
<features_to_add>
<auth>
- Add OAuth2 Google login
- Add rate limiting to auth endpoints
</auth>
</features_to_add>
</project_specification>
EOF
claw-forge add additions_spec.xml
Bug Fix Protocol
# Reproduce-first: agent writes failing test, then fixes it
claw-forge fix "Login fails when email has uppercase letters"
Common Patterns
Quick greenfield project
mkdir my-api && cd my-api
claw-forge init
# write app_spec.txt
claw-forge plan app_spec.txt
claw-forge run --concurrency 3
claw-forge status
Cost-optimised run
# Mix cheap + expensive: cheap model in pool for simple tasks
claw-forge run --model claude-haiku-4-5 --concurrency 10
Multi-provider failover
# Add multiple providers to claw-forge.yaml
# Pool auto-fails over on rate limits or errors
claw-forge pool-status # check health
claw-forge run # runs with automatic failover
YOLO overnight run
claw-forge run --yolo --concurrency 8
# Come back in the morning — all features should be passing
Tips
- Planning quality = outcome quality. Don't skimp on the planning model. Use Opus for
plan. - More concurrency ≠ always better. Each agent needs context. 3–5 is usually the sweet spot.
--edit-mode hashlinedramatically helps weaker/cheaper models that struggle with exact text matching.claw-forge statustells you exactly what to do next — trust it.claw-forge uiis the best way to monitor long runs — live logs per agent, cost tracking, dependency graph.- Provider API keys go in
.env(never commit)..env.exampleis the template.
Scan to join WeChat group