Repository navigation
CLI
codingdude --help lists everything; codingdude --version prints the version.
Inside a uv project, prefix with uv run.
The same engine as the UI, in-process, with no server and no worker:
uv run codingdude run "fix the failing test in tests/test_auth.py" \
--workdir . --budget 2.00 --fix-loop| Option | Purpose |
|---|---|
--workdir <dir> |
project directory (default: current) |
--model provider:model |
model override for this run |
--yolo |
auto-approve every gated action (scripting; headless otherwise fails safe) |
--budget <usd> |
hard spend cap for the run |
--fix-loop |
run tests after the task and feed failures back (max 3 rounds) |
--long-run assisted|unattended |
long-run work mode for this run — see Agents and Tools |
Exit codes:
| Code | Meaning |
|---|---|
0 |
finished |
1 |
failed |
2 |
a gated action needed approval — the command is printed |
3 |
budget exceeded |
Exit code 2 is the important one: headless runs fail safe. A CI job that needs the agent to push must ask for it, not discover afterwards that a gate went nowhere.
uv run codingdude serve --port 8765Binds 127.0.0.1 only. Serves the built frontend from frontend/dist when it
exists.
| Option | Effect |
|---|---|
--port |
which instance |
--status |
report PID and health, change nothing |
--dry-run |
show what would be bounced |
Use after changing CodingDude's own code. Config changes need no restart — they load per run.
# record a real session as a scenario, with checks attached
uv run codingdude eval --record SESSION_ID --name flow --out scenarios/flow.json \
--check gates-passed
# replay
uv run codingdude eval --scenarios scenarios/ --workdir .Replay exits 0 only when every declared check passes. --check is repeatable.
This is how a behaviour becomes a regression test without hand-writing a fixture.
| Route | Use |
|---|---|
| HTTP API | everything the UI does is an endpoint — see Architecture for the surface |
| Token auth |
Authorization: Bearer $(cat ~/.codingdude/server-token); browsers log in passwordlessly |
/health |
unauthenticated: version, git_sha, started_at — the stale-server probe |
| Gates |
gates.bat (Windows) runs pytest + ruff + mypy; npm run build + vitest for the frontend |
Bounded, non-pushing CI run:
uv run codingdude run "make the failing test pass, then run the full gate" \
--budget 5.00 --fix-loop
# 0 = green, 2 = it wanted a gate (do not pass --yolo in CI blindly), 3 = spend stopAsk what it did before you trust it:
curl -s -H "Authorization: Bearer $(cat ~/.codingdude/server-token)" \
"http://127.0.0.1:8765/api/sessions/$SID/trace?limit=200" | tail -40The trace, not the summary, is the record.
Start
How it works
Using it
Project