feat(admission): surface pending proposals
Your process, at agent speed.
You put an issue in Todo. A runner on a machine you control claims it, runs Codex or Claude Code against the contract you checked in, and moves it between the states your workflow defines, holding it wherever you put a gate.
Instead of steering one agent through a chat, you run your own process across many agents at once.
Free plan: 2 concurrent runs, no card. Self-hosting is free. v0.177.4 · you bring the model cost.
feat(health): surface stranded active work
chore(safety): guard dispatch capacity paths
fix(scheduler): clean orphan cycle state
fix(orchestrator): add token progress brake
released only by you
fix(board): collapse staleness warnings
docs(cli): refresh version output example
test(project): relax watcher deadlock guard
The six lanes shown come from Detent's own production configuration, not a fixed product state model; each workflow defines its own states. This is not a live board: the issue numbers and titles come from real merged work in digitaldrywood/detent, composed across the path for this illustration. The counts describe the illustration; 3202 is the all-time landed pull requests on that repository. Lanes for other kinds of work ↑
Your lanes. Your definition of done.
Detent is an orchestration layer, and the work it moves does not have to be code. A project's detent.yaml names its lanes and gives each one a role: active lanes dispatch an agent, holding lanes wait, terminal lanes end the work. Code is one shape. A video pipeline or an office workflow is another.
Illustrative lane sets, not shipped templates. The amber lane is a holding lane that waits for a person; yours can sit anywhere, or nowhere.
A detent makes position definite.
A detent is the catch that holds a moving part at a defined position until it is deliberately released: the click-stop on a dial, the notch on a ratchet. It does two things at once. It resists movement out of a position, and it makes the set of positions definite. Detent is named for the second one.
Where is it?
- Autonomy-first
- You steer a session and course-correct when it drifts.
- Detent
- At a state your workflow defines, on the board.
What is it waiting on?
- Autonomy-first
- Whatever you tell it next.
- Detent
- The gate you configured: your gate command on the finished change, an automated validator, or a person in Human Review.
Who moves it?
- Autonomy-first
- You, by talking to the agent.
- Detent
- The runtime when the condition is met, or you by changing the state.
The board above and the lane rail below show where each piece of work sits. It is always at a state the workflow defines, so you never have to read through an agent session to find it.
Where the intelligence lives.
Autonomy-first tools put the intelligence in the agent and ask you to supervise it. Detent puts the intelligence in your spec and supplies the discipline. Same task, two interaction models.
- It starts as a prompt. The agent picks a plan.
- You read the plan and inspect partial edits.
- It misses the migration. You redirect.
- It skips the tests. You redirect again.
- You are the supervision loop.
- It starts as an issue naming the storage change, CLI behavior, migration, rollback, and tests.
- A runner executes that contract in an isolated worktree.
- It produces a reviewable Change Request.
- It does not land until your gates clear.
- Your process runs. You read one change.
Detent scales the judgment of people who already hold a high bar. It applies your rules the way you would, every time and in parallel, and every step stays visible on the board.
Your lanes. Your gates between them.
The Hub's board is the state machine. Runners on your machines move work through it, and your gates decide when it advances.
The notch marks a gate you defined. Lanes are workflow-defined: this is the delivery path. Detent's own board also configures Backlog, Blocked, and Cancelled.
The Hub holds the board, the issues, the review decisions, and the policy each project runs under. Use Detent Cloud, or run the same Hub yourself.
A runner is a machine you enroll: a laptop, a build server, a VM, or a Fly Sprite. It keeps your checkout, your agent sign-ins, and your toolchain.
detent.yaml is the machine contract: lanes, gate command, review policy, scheduling, retries, and budgets. WORKFLOW.md is the agent contract: how to work in this repository and what done means.
A runner that holds the project claims it, creates an isolated worktree, and starts Codex or Claude Code with the issue and WORKFLOW.md. The issue moves to In Progress.
With review.human: false an accepted change goes straight to Merging. With review.human: true it waits in Human Review until a person approves it or sends it back.
In Merging, the runner that holds the project lands the change on the base branch with plain git, one change at a time. Then the issue is Done.
One change lands at a time.
In Merging, the runner that holds the project lands the accepted change on the base branch with plain git, one change at a time. Parallel agents never race each other onto your main line.
A change that cannot land goes to Blocked with its reason instead of landing broken. Native projects make no GitHub API calls by default; git clone and push work against any host. Board states →
The board stays honest.
Live counts, running agents, budget and capacity, reports, and activity. "In progress" means an agent is actually working right now.

The same board is available over MCP, so your own agent can file issues, read run history, and review changes. The CLI reads it too, from any runner.
Config you can read beats adjectives.
Two files, committed to your repository: the machine contract and the agent contract. Both are excerpted here from Detent's own repository, which Detent builds on Detent Cloud.
tracker:
kind: hub_native
repository: digitaldrywood/detent
lanes:
- name: Todo
role: active
- name: Human Review
role: holding
- name: Done
role: terminal
review:
human: false
gate:
kind: command
run: "make check-landing"
ci_failure_action: rework
validator:
enabled: true
security_audit:
enabled: trueYou are working on **Detent**, the Go agent
orchestrator, on native Detent Cloud work item
{{ issue.identifier }}. The issue and its
decisions live on Detent Cloud.
Follow CLAUDE.md and AGENTS.md; they are the project
authority for layout, formatting, validation, and
review conventions.The lanes above are an excerpt; Detent's own board configures nine. Trusted workflow definitions from the repository's default branch apply automatically. You can keep reading by hand too; nobody will revoke your keyboard. The whole file ↗
It ships itself.
Detent is built on Detent Cloud. Its issues live on the Hub, runners pick them up, and the agents they dispatch write the changes that land in digitaldrywood/detent.
Its detent.yaml and WORKFLOW.md are in the repository, readable as a starting point for your first project.
Read Detent's detent.yaml ↗
I Opened Seven Issues for One Feature (On Purpose)
One feature. Seven real issues. Four hours. Zero babysitting.
- A seven-issue dependency graph completed in merge order.
- Detent returned dependent work to Todo after its prerequisite merged.
Your machines do the work.
A runner keeps your repository checkout, your agent sign-ins, and your toolchain. Nothing that touches your code runs on the Hub.
A laptop
Enroll the machine you already work on and let it pick up issues while you review.
A build server
Put the runner where your toolchain, caches, and secrets already live.
A VM
Run as many as your plan's concurrent work allows, each routed to its own projects.
A Fly Sprite
Cloud runners on Fly Sprites, with Luna walking you through setup.
Enroll one from Settings › Providers & runners. It runs detent hub runner register once and installs a background service. Cloud assigns each runner its allowed projects and model selection. Runners on Fly Sprites →
Start on Detent Cloud. Your runner does the work.
Sign in, create a project, and enroll a machine. The Free plan needs no card.
- 1 Create an account at cloud.detent.build and create or join an organization.
- 2 Create a project. New projects start with Todo, In Progress, Merging, Done, Blocked, and Human Review; change them to fit the work.
- 3 Commit detent.yaml and WORKFLOW.md to the repository the project works in.
- 4 Install Detent on the runner machine and sign in there to Codex or Claude Code.
- 5 In Settings › Providers & runners, choose Enroll a runner and run the command it shows.
- 6 File an issue in Todo and watch it move across the board.
Rather run it yourself?
The Hub is the same binary. Self-hosting is free and needs no Detent Cloud account or billing. You need one host, SQLite, and a TLS proxy in front.
Self-host the Hub →Homebrew, if you already manage CLI tools with brew
brew install digitaldrywood/tap/detentOr build from source with Go
go install github.com/digitaldrywood/detent/cmd/detent@latestUpgrade with brew upgrade digitaldrywood/tap/detent.
$ detent hub runner register --url https://cloud.detent.build/organizations/ORGANIZATION_ID \
--token TOKEN --name "Build host" --service
creates the runner's identity, writes its configuration, and installs a background service