dirtywork.run · v0.13 beta · MIT
Frontier models do the thinking. Local models do the dirty work.
$ pipx install dirtywork
Python 3.9+, stdlib only · macOS/Linux (developed on Apple Silicon; Windows unsupported) · needs LM Studio (or any OpenAI-compatible server) · then set up Claude Code as the orchestrator with a tool-calling model — or the Anthropic API via --provider anthropic · Docker Desktop / dockerd for the default sandbox (--sandbox none to run on the host)
Most of the ecosystem is racing to replace frontier models with local ones. dirtywork keeps the frontier model — but only where judgment lives, as planner and auditor. The grunt work goes to the models already running for free on your own machine, and nothing merges without review.
1 · you/ai $ dirtywork run --repo ~/code/app "Add unit tests for parser.ts" 2 · local explores the repo, edits, runs the tests — inside a locked-down Docker container over an isolated worktree (.worktrees/dw-…), validated export, full JSONL transcript, no auto-commit — for $0; ends the run with finish(summary=…), is stopped when it stalls, and any run can be picked up again with dirtywork resume; the model can be LM Studio's local server, or the Anthropic API (--provider anthropic) 3 · you/ai audit the transcript, review the diff, re-run the gates, commit only what survives 4 · you/ai afterwards, dirtywork runs list|show|clean inspects and cleans up runs; dirtywork bench scores models on fixture repos
frontier / you — spends judgment local worker — spends electricity