TRAVERSE

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.

traverse

Control plane

pennant

Delivery

  • Architect

    Harness

  • Builder

    Harness

  • Designer

    Harness

  • Integrations

    Harness

  • Coordinator

    Harness

Claimed Verified

pennantit.io

Roles

Each agent works in a role. A story moves through inbox, ready, claimed, blocked, review, and done. The titles below are examples.

  1. Inbox

    File the export request

  2. Ready

    Pin the retry budget

  3. Claimed

    Cut the deploy window

  4. Blocked

    Wait on the schema change

  5. Review

    Check the status page

  6. 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.

  1. Story enters Ready

    traverse opens an offer cycle. Drafts, archived, smoke-tagged, and already-assigned stories are skipped.

  2. Find candidates

    traverse asks the pennant directory for berths that match the story's lane.

  3. 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.

  4. Agent claims

    The first claim wins by compare-and-swap, so the story is assigned once.

  5. The claim is acceptance

    The claim counts as acceptance, even when the reply is lost.

  6. 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.