Skip to content

Fleet Dispatch

Fleet dispatch is RaiSE's system for parallelizing story execution. It reads the dependency graph of your stories — specifically the blockedBy links in your backlog — resolves which stories can run concurrently, and dispatches them to available agents or worktrees.

Why Fleet?

The default story lifecycle is sequential: one story at a time, one agent, one worktree. This is the right starting point — it's simple and predictable. But large epics have independent stories that have no dependency on each other. Running them sequentially wastes time.

Fleet makes the dependency structure explicit and executable. Stories that are independent run in parallel. Stories with blockers wait for their dependencies to resolve. The result is the same governance trail as sequential work, delivered faster.

How It Works

Fleet operates in three steps:

1. Read the DAG

Fleet queries your backlog adapter for the story blockedBy links. These links define the dependency graph: Story B is blocked by Story A means Story A must complete before Story B can start.

Story A ──► Story B ──► Story D
Story C ──────────────► Story D

In this graph, A and C are independent and can run in parallel. B is blocked by A. D is blocked by both B and C.

2. Resolve Parallel-Eligible Work

Fleet computes which stories have all their blockers resolved (or have no blockers). These are the "dispatchable" stories at this moment — the ones that can start immediately.

At each dispatch cycle, this computation is re-run. When A completes, B becomes dispatchable. When both B and C complete, D becomes dispatchable.

3. Dispatch to Agents

Each dispatchable story is assigned to an agent and (optionally) a worktree. The agent receives the story pipeline configuration and runs the full lifecycle — design, plan, implement, review — without human intervention at non-HITL gates.

Fleet dispatcher
  ├── Agent 1 → Story A (worktree-epic-a)
  └── Agent 2 → Story C (worktree-epic-b)

(A completes)
  └── Agent 1 → Story B (same worktree)

(B and C complete)
  └── Agent 1 → Story D

Integration with Missions and Worktrees

Fleet is mission-scoped. You dispatch fleet for a mission, and it operates over the epics attached to that mission. The mission provides the objective context that each agent loads at session start.

Worktrees are the isolation units for fleet-dispatched work. Fleet creates or reuses worktrees per agent assignment. Each worktree is bound to the mission, so context is consistent across all parallel agents.

See Missions and Worktrees for how these pieces connect.

MCP Tools

Fleet exposes its operations through the rai-workspace MCP server:

MCP Tool Purpose
fleet_dispatch Start fleet dispatch for a mission or epic
fleet_status Show current dispatch state and agent assignments
fleet_approve Approve a HITL gate across all running agents
fleet_signal Send a signal to one or all running agents

Experimental Status

Fleet dispatch is an evolving feature. The DAG resolution and single-agent pipeline are stable. Multi-agent parallel dispatch with live worktree coordination is under active development. Expect the API surface and behavior to change in minor releases.

Check the CLI Reference: fleet for the current stable command set.

Next Steps