shiprunnerSign in
Open source core · one organisation free for good

The ship date your issues already know.

Shiprunner reads your GitHub issues, milestones and blocked-by links into one dependency graph, then says what is blocking, what to pick up next and when it lands at the pace you really close things. Your coding agents ask the same graph, one task each, and never collide.

Connect your GitHub organisationSee the ten toolsRead-only by default. Nothing is written to GitHub unless you turn it on.
One recorded organisation on 13 September 2026: one column per milestone, one pill per issue, one curve per blocked-by link, the launch line drawn through it, and the trace lit from the issue an agent holds.
Lands · Adventros, 13 September 202615 Oct32 d at 1.9/day · 57 closes in the last 30 days · 60 required of 166 open · not a guess: a division, with its basis printed beside it every time
Required60of 166 open · the rest is for later, and says so
Ready26startable this minute · 9 of them required
Blocked140on 48 open blockers you can see
This week+26 d13 closed · 41 opened · the line moved
The problem

A percentage lies. A pile does not.

Every tracker shows done over total and calls it progress. It cannot see that forty issues were filed this week, that half of what is open is not needed to ship, or that the one issue three agents want is the same issue. So the date it implies is wrong, and you find out in the last week.

Shiprunner draws scope beside done, counts only what the line requires, and prices every milestone as if it were the line. The date moves when the graph moves, and it says why.

What this week cost · Adventros

last 7 local days
Closed13at 1.9/day
Opened41scope grew by 41
Line moved+26 dboth weeks at today's pace

Both counts run through today's pace, so the movement isolates scope: file exactly as much as you close and it reads zero.

What's blocking.
What's next.

When it lands.

Three questions, one structure. A screen for the founder and a tool for the agent never compute a number differently.

What you get

Four numbers, each with the line that earned it.

A date with its basis

Launch line · M5
Lands15 Oct32 d at 1.9/day · 57 closes in the last 30 days
M4
38M5
21
M6
15

Required divided by the pace you actually close at. A number without a basis never appears, and a date nobody set is never shown: without a launch line you get a priced menu of milestones instead.

Only what the line requires

Required60of 166 open

The milestone you call shippable, everything before it, and every open blocker of that work wherever it was filed.

A fleet that never collides

#40Real night wiringfable-a#113Party size at the doorfable-b#205Deep link arrivalsarea busy

A claim is an exclusive lease that expires. One agent per issue, one agent per area.

Scope beside progress

This week+26 d13 closed · 41 opened

Opened sits next to closed, scope is drawn next to done. A falling percentage never hides a growing pile.

Directives travel with the task

"directives": {
  "definitionOfDone": [...],
  "conventions": [...],
  "reviewBar": [...]
}

Every claim carries the project's playbook. Not a wiki to remember: the payload.

How it works

Three steps. The third is optional.

01

Connect GitHub

Sign in with GitHub. The scopes it reads are listed, the two writes it could make are shown off. Pick the repositories; new ones appear by themselves.

  • Issues, milestones, labels and blocked-by linksread
  • Which repositories the organisation hasread
  • Labels, to mirror a claim as claimed-byoff
  • Blocked-by links, to write a dependency a person acceptedoff
02

Draw the launch line

Every milestone is priced as if it were the line: what it requires, and how many days that is at your pace. You pick the one that means shippable. The graph never guesses, and you can skip it and keep every number except a date.

M4 · The night loop38 · 20 d
M5 · Adventures and tickets60 · 32 d
M6 · Monetization78 · 42 d
03

Point your agents at it

One command. From then on every agent asks for its next task and receives the issue, the score it won on, what matters this week and the project's playbook, together.

claude mcp add --transport http shiprunner \
  https://www.shiprunner.dev/api/mcp \
  --header "Authorization: Bearer <token>"
For the fleet

Ten tools. Every claim comes with its directives.

An agent is never handed work without the definition of done, the conventions and the review bar of that project. Not a document to remember: the payload of the claim.

next_taskparallel_setcompletereleaserenewlist_readywhy_blockedimpactlaunch_statusdirectives
Claims lease an issue exclusively. Writes finish it with the pull request, hand it back with a reason, or extend the lease. Reads never change anything, and every claim carries the score it won on, the week's line and the project's directives.
Pricing

Depth is sold. Honesty never is.

Free$0one organisation, the graph and the date1 organisation · 5 repositories · 1 agent · 30 days of history · community supportConnect an organisation
Runner$24 a montha founder with a fleet3 organisations · unlimited repositories · unlimited agents · 365 days of history · email support
Fleet$79 a month, 5 seats, then $12 a seata team across organisationsunlimited organisations · unlimited repositories · unlimited agents · unlimited history · priority support
EnterprisecustomSSO, self-hosted, SLAunlimited organisations · unlimited repositories · unlimited agents · unlimited history · SLA support
Every organisation starts on Free, and what is never sold renders the same on every tier: the launch date, the split, the basis of a pace, the directives. When you stop paying nothing is deleted.
Questions

Before you connect

Does Shiprunner write to my repositories?

No. Ingest is read-only. Mirroring claims as claimed-by labels and writing accepted dependencies as blocked-by links are two switches, off by default, and Connect says which way each is set either way.

How is the date computed?

Required issues divided by pace, from today, as a local date. Required is the launch milestone, every milestone before it and any open blocker of that work wherever it was filed. Pace is closes per day over the last 30 local days, clipped to the project's own age. The basis is printed beside every date.

What if my backlog has no milestones or dependencies?

You get ready, blocked and open counts, the pace, and what this week cost. The date needs a launch line, which needs milestones, and the screen says so instead of guessing.

How do agents avoid collisions?

A claim is a lease: exclusive, expiring, 30 minutes by default, renewed explicitly. At most one agent per area at a time.

Does it measure people?

No. No individual throughput, no leaderboards, no streaks. The unit is the project.

What happens when I stop paying?

Nothing is deleted. History past the free window stays readable and stops growing, agents beyond the first drop to the read tools, and the split simulator shows its last state, read-only.

Connect an organisation. Get a date you can defend.

Free for one organisation, for good. Read-only until you say otherwise.

Connect your GitHub organisation