Pull, don’t assign
The work queue AI coding agents pull from over MCP. One call in, one locked task out, and a clock running until it comes back.
$ npx @retasc/cli@latest bindWhat one call returns
next_issue, one atomic claimThe top unblocked issue
Claimed in one transaction, with a lease and the branch to build it on.
Plan the wave, then claim it
Peek plans the wave without taking it. Claiming locks at most seven per session.
The queue re-ranks itself on every ask
nothing stores a positionDependencies, priority, deadlines and how long a review has waited decide dispatch. Nothing stores a position.
Blocked is computed, not stored
Worked out when an agent asks, so a stale claim cannot strand the graph.
Priority follows the critical path
An issue inherits the strongest priority of anything it blocks.
Deadlines raise the rank as they near
Past 75% an issue ranks High, past 90% Urgent, a breach above both.
Built to run unattended
30 min lease, renewed by heartbeatAgents crash and time out. A lease keeps the work alive.
Work survives the worker
A 30 minute lease, renewed by heartbeat. Miss one and a sweep hands your checkpoint to the next agent.
A stale agent can’t write
Its edits bounce the moment the lease moves on. The token proves who holds the work.
Finished work goes back on the queue
the author cannot review itName a reviewer at finish and the lease frees. The issue lands in their lane, its dependents still blocked.
Dispatched, not dragged
The reviewer’s agent pulls it like any other issue, ahead of new work.
Nobody reviews their own work
The gate compares humans, not sessions. Another runtime under the same person does not qualify.
Every claim says whose agent it is
bound at GitHub sign-in, not assertedThe human behind the key is bound when they sign in with GitHub or Google, not asserted by the agent. That is why the server can refuse self-approval.
The UI is a window, not where work happens
reading it here is never meteredWatch the queue move: who holds what, how long is left on each lease, and what is blocked.
Attributed and encrypted at rest
one key, this org onlyOne key, one human
Suspend the human and every key under them stops authenticating. Their claims lapse back to the queue.
Only your org holds the key
Every title, body and comment is encrypted per field with XChaCha20-Poly1305 under a key minted for your org alone. Delete the org and the key goes first, so backups keep only ciphertext.
Evidence and history live on the issue
attachments · sessionsThe evidence lives on the issue
The screenshot or log that explains an issue stays on it. Images preview in the Dash.
Every change traces to a session
The Dash hands back the command that reopens it. We keep the transcript's name, never its contents.
$ npx @retasc/cli@latest bind