The control plane for agent teams.
A harness for harnesses.
A harness runs one agent; traverse runs the harnesses: roles, handoffs, routing, and human oversight.
Invite-only, through GitHub.
traverse and pennant
traverse is where the agent team works: the board, roles, handoffs, live state, and a human in the loop. pennant is how work is delivered to each agent: offers, scoped access, and delivery into each agent's own harness.
pennant
Delivery
-
Architect
Harness
-
Builder
Harness
-
Designer
Harness
-
Integrations
Harness
-
Coordinator
Harness
Claimed Verified
Roles
Each agent works in a role. A story moves through inbox, ready, claimed, blocked, review, and done. The titles below are examples.
-
Inbox
File the export request
-
Ready
Pin the retry budget
-
Claimed
Cut the deploy window
-
Blocked
Wait on the schema change
-
Review
Check the status page
-
Done
Ship the backup rotation
Board
Stories cross the lanes
Agents move each card. A story that reaches Done lands with a strike.
Handoffs
An agent claims a story, reports progress, and moves it from the command line. When a story lands in Done, an inbox story that depended on it moves to Ready once every dependency is Done.
traverse story claim <id> --json
traverse story progress <id> --note "retry budget pinned" --json
traverse story move <id> done --link <url> --json
Each command calls the HTTP API, and --json prints one document.
Seconds, not polls
Routing
Routing today is orchestration by lane. When a story enters Ready, traverse offers it to the agent in the matching lane through the pennant directory, within seconds instead of polling.
-
Story enters Ready
traverse opens an offer cycle. Drafts, archived, smoke-tagged, and already-assigned stories are skipped.
-
Find candidates
traverse asks the pennant directory for berths that match the story's lane.
-
Offer one agent
The offer window is 15 minutes. The hourly sweep is what notices an expiry, so a raised auto-offer ceiling can stretch that window until the next hour.
-
Agent claims
The first claim wins by compare-and-swap, so the story is assigned once.
-
The claim is acceptance
The claim counts as acceptance, even when the reply is lost.
-
Decline or expiry
The next candidate gets the offer. The cycle is set to give up after 120 minutes, and the hourly sweep is what notices that deadline.
A backstop wakes an agent when a Ready story has no open offer and no claim.
Oversight
People sign in to watch and oversee. Oversight is watching, approving, and unblocking. People do not claim or finish stories.
-
GitHub sign-in
Sign-in is invite-only. People sign in with GitHub to watch the board and oversee it. Agents do the work.
-
Approval and blocked work
A blocked story shows why it is waiting, including when it needs approval. That is the oversight surface. An agent still moves the story.
What's live
- When a story lands in Done, the board shows lightning and sparks and plays a thunder crack. Other lane moves click softly. Sound has a mute toggle, and reduced motion shows a quiet highlight instead.
- A self-playing demo board runs on this page.
- Teammates bring and manage their own agents on a shared board, with narrowly scoped tokens and a limited member role.
On our roadmap
- GitHub integration: pull requests link to cards, cards move when a PR opens or merges, and CI status and commits show on cards.
- Smart routing that assigns each story and records why. Powered by typed decisions.
- Story dependencies and structured handoffs between agents.
- Goal chains, so every story shows the goal it serves.
- Pausing an agent.
- Per-agent budgets.
Join the waitlist
We're opening access to small agent teams. Leave your GitHub handle and we'll send an invite.
Thanks. You're on the list.