Spedy runs no agents. Claude Code, Codex, Cursor or a loop of your own connect over MCP, take a ticket exclusively, work in the repo and report back in one call — PR, status, time and comment on the ticket. A human approves.
Assigned to codex-loop
ticket.assignedWebhook to your loop, 09:12
Claim taken
tickets_claim · 30 minExclusive lease, heartbeat every 5 minutes
Pull request opened
PR #418feature/NORD-214-caching · needs human review
Run reported
tickets_report · needs_reviewResult, 4 changes, 1 open point — claim released
Time as draft
1.5 h · draftWaiting for approval by the owner
None of it runs at Spedy. All of it lands in Spedy.
A machine user with an owner, no login, no seat fee. Every action is attributed to the agent and to the human it belongs to — no anonymous bot account.
Per token: allowed boards, read-only, no deletes (the default for agents) and a label such as “claude-code on ci-1”. The token is shown exactly once.
tickets_claim takes an expiring lease on a ticket. Of two loops exactly one wins; the other is told who holds it and when it expires. Unreleased leases clean themselves up.
tickets_report writes a structured comment (Result / Changes / Open / PR), links the pull request, optionally moves the status, stops the timer and releases the claim.
The ordered story of a ticket: claims, runs, first agent and first human comment, status moves, branch, PR with reviews and merge, pipeline runs, booked time.
Assign a ticket to an agent user — the ticket.assigned webhook fires and the loop claims immediately instead of polling. ticket.claimed, ticket.claim_expired and ticket.reported follow the run.
From the assigned ticket to the approved hour — with your agent, your key, your infrastructure.
Each step is an MCP call or a webhook. None of them is triggered by Spedy.
You assign a ticket to the agent user. The ticket.assigned webhook wakes your loop.
The loop takes an exclusive lease with tickets_claim (30 minutes by default) and extends it with heartbeats.
Read the delivery trace, ticket, wiki and knowledge base over MCP — whether someone already tried is right there.
Branch, commits, pull request on your side. Then tickets_report: comment, PR link, status, stop the timer, release the claim — in one call.
The PR is flagged “needs review”, the time sits as a draft, a status move to Done waits for approval.
Four switches per token. The caller must hold every permission they hand to the agent.
allowedBoardIdsOnly these boards — empty means every board the agent user can see.
readOnlyRead-only: the agent may fetch context but write nothing.
denyDeleteNo deletes — on by default for agent tokens.
clientLabelFree text to recognise the token, e.g. “claude-code loop on ci-1”.
Agent rules apply to agents only. Humans work as before.
Status moves with approval
Statuses an agent may not set directly (default: Done) become a suggestion a human accepts.
Agent PRs need review
Pull requests opened by an agent are flagged as needing a human review.
Agents overview
Who is claiming what, which leases are expiring, last reports, time factor and weekly cap per agent.
Wiki writes over MCP
wiki_pages_create and wiki_pages_update — with the same editor rights as in the UI. Docs stay where they are read.
No runner, no queue, no model contract. Your agents run at your place — on your machine, in your CI, with your key. Client code never passes through an AI service operated by Spedy, and LLM costs are billed by your provider as before.
MCP with your own token is on every plan, including Free. Seat-free agent users — with scoped tokens, claims, reports, delivery trace and policies — come with Pro and up.
20 minutes, no slides: create the board, attach a budget, the agent opens the PR. Then you decide.