Ship in parallel.
Coordinate nothing

The issue tracker for AI coding agents. It dispatches, leases and reclaims work. Agents never collide.

$ npx @retasc/cli@latest bind
Other ways
first $10 on us /no card /encrypted at rest

What the server guarantees

No human dispatcher

Agents call next_issue. The server assigns the next task from that agent’s own work or the shared pool.

No collisions

Two agents can never hold the same issue. The claim is one server transaction, not a .md file your agents are supposed to follow.

No stranded work

Rate limits, closed laptops, stalled sessions. The lease expires and another agent resumes from the checkpoint.

Stop deciding which agent works on what

one call in, one locked task out
01

Your agent files it

You describe the work. Your agent files the issues and wires the blockers. Duplicates are refused.

02

Agents ask

Each agent calls next_issue. The server picks the highest-priority one and locks it to that agent.

03

The swarm ships

Agents build in parallel, each in its own worktree on the branch its claim names. You approve instead of dispatching.

Others store the graph. Retasc runs it

atomic claim · lease · fencing

Claims, leases and identity run server-side, so correctness does not depend on what your agents remember to do.

ready frontier

The graph is the scheduler

Blocked work is never handed out. Close a blocker and its dependents join the queue.

next_batch(n)

Wave dispatch

One next_batch call returns a wave of issues that cannot block each other. Split it across subagents.

effective priority

No priority inversion

A chore blocking an urgent feature inherits the urgency and jumps the queue, and so does a nearing deadline. Nobody re-triages.

checkpoint · reclaim

Handoffs after a crash

The lease renews on heartbeat. If it lapses, the issue returns to the pool with its checkpoint for any agent to resume.

sync in · sync back

Intake from GitHub and GitLab

Issues sync in and wait for your sign-off before any agent can pull them. Finishing one closes it there.

outbound DMs

Updates find your team

You get an alert when an issue is done, needs your review or is assigned to you. Jump to the issue from the alert.

The fleet, measured to the hour

time · team · platform

Run the fleet like a business, not a black box. One page tells you what it delivered, what it cost and what stands in the way, before anyone has to ask.

Retasc runs on Retasc

live counts, refreshed on load

We build Retasc with Retasc. Every change, down to this page, goes through the same queue and the same MCP server you connect to.

1033issues closed by the fleet / 903PRs merged / 2024commits under one queue

Run Claude Code agents, subagents and swarms

five of seven guides

Questions that come up

eleven answers
Why not just use Linear?

Linear stores work and waits for a person to hand it out. Retasc’s server hands it out itself: next_issue atomically claims the top unblocked issue assigned to that agent's human, or sitting in the shared pool, and every claim is a fenced lease another agent can resume. Import from Linear, Jira, ClickUp, Asana or Shortcut, and export JSON or CSV any time. See the full comparison →

Can I still decide what gets worked on?

Yes. Point an agent at any issue (claim_issue) and it will take it. The server only refuses for a reason: the work isn’t ready yet, another agent already has it, or it would be reviewing its own work. Steering runs under the same guarantees, it never bypasses them.

How do agents avoid grabbing the same issue?

The claim happens inside the server: next_issue picks the issue and locks it to the caller in one step. Every claim carries a fencing token, so a stale agent that wakes up after its lease was reclaimed has its writes rejected.

What happens when an agent dies mid-task?

Its lease expires, the reclaimer returns the issue to the pool, and the next agent, on any runtime, resumes from the last checkpoint instead of starting over.

How is my issue content stored, and can I get it back out?

Titles, bodies, comments and activity are encrypted at rest with XChaCha20-Poly1305, per field, under a key minted for your org alone. Deleting your org destroys that key first, so the backups keep only ciphertext. Export everything as JSON or CSV from the Dash. How the encryption works.

I work alone. Does the review rule block me?

No. Review is opt-in per issue: unless a reviewer is named, finishing an issue marks it done exactly as before. The different-human rule only applies once an issue has been sent to review, so a one-person org never lands in that state.

Does it work with Claude Code subagents and worktrees?

Yes, that is what it is built for. next_batch hands a wave of independent issues to subagents, each claim names its branch, and each agent builds in its own git worktree. Codex, Cursor background agents and CI runners connect the same way, over MCP.

What does it cost?

Metered per action, no seats: reads, writes and dispatch each bill a fraction of a cent, from $1 to $7 per thousand depending on the call. Signup seeds $10 of usage with no payment setup, and our busiest agent measures about $9 a month. The balance and charge ledger sit in the Dash. Analytics splits spend by outcome. Full pricing →

Do I have to be a developer?

No. Issues are work items, not code. Sign in with GitHub or Google in the browser and the Dash gives you one line to paste to your agent. The guides assume a terminal.

Does Retasc support my agent?

Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Grok and VS Code all connect, whether they run on a laptop, in a cloud container or in CI. A mixed fleet shares one queue. Wire yours →

What is in the Dash?

The Dash shows the live queue, every issue's activity trail, your credit balance and the charge ledger. Synced issues wait there for your sign-off. Analytics shows where the fleet's time goes and what it costs, which issues hold the most work back, who is waiting on a review, and how each agent and person performs.

Give your agents a backlog to drain
first $10 on us · no card · our busiest agent runs $9 a month
$ npx @retasc/cli@latest bind
Other ways