backlog-runner is a CLI and library for running an autonomous engineering backlog with Codex and Claude. It manages a structured task store, configurable discovery passes, isolated git worktrees, runtime leases, and backlog reporting.
- Stores backlog tasks as YAML specs instead of ad hoc markdown.
- Runs implementation tasks with one or more agent backends.
- Refines vague work with a planner pass.
- Runs configured discovery passes that can append new candidate work to the queue.
- Coordinates concurrent workers with leases and runtime state.
- Produces a generated
backlog.mdreport from the task store.
npm install --save-dev backlog-runnerInitialize a repo scaffold:
npx backlog-runner initIf you want the tool to draft passes for the repo instead of relying only on deterministic recommendations:
npx backlog-runner setup --agenticsetup --agentic drafts pass ids, descriptions, heuristics, and runner choices. The runner still writes the managed prompt files itself so the queue/schema contract stays valid.
That creates:
backlog.config.mjsbacklog/scripts/backlog/.backlog-runner/
Then customize:
- Update
validationinbacklog.config.mjsto point at your real repo checks. - Read
scripts/backlog/README.mdfor the repo-local pass authoring model. - Adjust
scripts/backlog/passes/*.mdprompts to fit your workflow. - Add
classificationor extravalidation.routingrules only if the defaults are too broad.
backlog-runner init
backlog-runner setup
backlog-runner start
backlog-runner pass list
backlog-runner status --verbose
backlog-runner sync
backlog-runner doctorThe runner is configured via backlog.config.mjs:
export default {
preset: 'balanced',
validation: {
default: 'bash scripts/backlog/validate.sh',
profiles: {
frontend: 'npm run lint --workspace web',
},
routing: [
{ profile: 'frontend', pathPrefixes: ['apps/web/', 'src/components/'] },
],
},
workspace: {
workers: 2,
useWorktrees: true,
},
classification: {
uiPathPrefixes: ['apps/web/', 'src/components/'],
},
workspaceBootstrap: {
installCommand: 'npm install',
repairCommand: 'backlog-runner doctor --repair',
},
providers: {
agents: {
ui: { tool: 'claude', model: 'claude-opus-4-6' },
code: { tool: 'codex', model: 'gpt-5.4' },
planner: { tool: 'codex', model: 'gpt-5.4' },
},
},
discovery: {
enabled: true,
passes: {
frontend: {
runner: { tool: 'claude', model: 'claude-opus-4-6' },
},
deps: {
runner: { tool: 'codex', model: 'gpt-5.4' },
},
},
},
};Supported agent providers:
codexclaude
The runner is opinionated around git repos and local CLI-based agent execution. The intended customization model is:
- repo-owned
backlog.config.mjsfor pass metadata and runner selection - repo-owned
scripts/backlog/passes/*.mdfiles for pass policy - optional
backlog-runner setup --agenticto bootstrap the first pass set, followed by manual editing