GitHub-native merge movement

Keep the whole
convoy moving.

Caravan is a deterministic merge queue for people and agents. It turns pull-request topology into a safe, visible chain—without inventing another database.

Source of truth
GitHub
Queue state
PR topology
Agent surface
CLI · JSON · MCP

HEAD IS CLEAR → ROLL

One chain. Exact evidence.
No mystery state.

01 / The topology is the queue

Nothing hiding
behind GitHub.

A caravan is simply a linear chain of open pull requests. Every member carries the caravan label; each PR targets the branch ahead of it. The head alone targets the default branch and holds squash auto-merge.

02 / The operating loop

Mechanical work rolls.
Judgment stops.

Every tick rediscovers GitHub state. Caravan advances what it can prove, then returns a typed, resumable decision whenever semantics need a person or agent.

  1. 01

    Discover

    Read branches, labels, checks, bases, and exact revisions fresh from GitHub.

  2. 02

    Prove

    Validate graph shape, mechanical compatibility, CI, and cross-convoy safety.

  3. 03

    Move

    Keep auto-merge on the head, advance merged chains, and preserve ordering.

  4. 04

    Hand off judgment

    Conflict or failed CI? Return exact evidence and safe next commands—never guess.

$cara loop --once --json

03 / Evidence over optimism

Safe by construction.
Legible by default.

⌁

Mechanical compatibility

Non-mutating merge proofs use exact head and base revisions. No history rewrite just to test a theory.

{ }

Typed decisions

Human output stays concise while JSON and MCP receive stable errors, evidence, and resumable commands.

↻

Idempotent recovery

Interrupted operations resume from rediscovered GitHub state—not a fragile local cursor.

◎

Canonical events

A bounded, secret-free journal records transitions and hook receipts in shared Git metadata.

⇄

Three equal surfaces

The human CLI, stable JSON envelopes, and MCP tools all route through one typed library path.

◇

Force is still proof

Known CI failures may be accepted, but conflicts, stale revisions, and permissions are never bypassed.

04 / Command map

From first PR
to open road.

STARTcara check

Prove the current PR can travel.

JOINcara new

Lead a convoy—or cara join a tail.

ROLLcara sync

Advance safe work and expose decisions.

OBSERVEcara status

See the entire fleet and its evidence.

Built for agent traffic

Caravan ×
Cacophony

Caravan owns bounded GitHub queue mechanics. Cacophony listens to typed hooks, sends the right specialist to a decision point, and schedules another sync. Authority stays crisp: Caravan never pretends to be the agent runtime.

Explore Cacophony
hooks:
  sync_failed:
    command: ./scripts/dispatch-agent
    timeout_secs: 30
    blocking: false

# exact evidence enters on stdin
# the next tick starts fresh

05 / Join the convoy

Ready to roll?

Build from source today. Release archives include checksums and support bounded self-update on Linux and Apple silicon.

git clone https://github.com/harryaskham/caravan.git
cd caravan && nix develop
cargo build --release