mission control

Dispatch, watch, and coordinate a fleet of agents.

Fleet turns autonomous coding agents into first-class Kubernetes resources. Spawn and hand off Agent CRs, follow any workload's durable session stream live, and keep a human in the loop where it matters — with spawn, handoff, checkpoint, and merge as reconciled operations, not scripts that scroll off a terminal.

available
Agents are Kubernetes CRs — Agent / AgentTask / HumanPromptDurable, resumable live transcript over NATS/JetStreamExplicit spawn → handoff → merge lineageCheckpoint and resume — crash-survivable workHuman-in-the-loop: escalate raises a HumanPrompt and blocks
6
console panels
readiness · prompts · fleet · live · provenance · control
live
resumable transcript
SSE over JetStream · 7-day durable
spawn · handoff · merge
as first-class ops
reconciled CRs, not scripts
human
in the loop, gated
escalate raises a HumanPrompt
why it's different

An agent is a resource, not a runaway process.

Ad-hoc agent runners are a process and a log file — you can't coordinate them, resume them, or prove what they did. Fleet models coordination as reconciled Kubernetes resources.

Every agent and every task is a CR — Agent, AgentTask, HumanPrompt — reconciled by an operator into a runner Job. Agents coordinate over NATS/JetStream: they claim work with advisory TTL leases on a shared blackboard, message and broadcast, and hand tasks off with a live offer→accept handshake. Progress is checkpointed — a git WIP ref, a context summary, active claims — so an agent can suspend and resume without losing its place. And the whole thing is replayable: the live transcript is a durable JetStream stream, so you can watch, leave, and pick up exactly where it is.

An agent is a Kubernetes resource, not a script that scrolled off your terminal. Spawn, hand off, checkpoint, merge — all reconciled, all replayable.

plugin-fleet · checkpoint is the substrate
the console

Every agent, its phase, its focus.

The Fleet panel is a live card per Agent — presence, phase, and what it's working on right now, drawn from status.focus. Values illustrative.

Fleet live
Agent CRs · fastverk.savvifi.com/v1 · live
agentphaseintentfocus
migrate-aion-web-7f3 Running port aion/web to rules_ci ci-migration
grade-plugin-tbzl-a1 Running add a coverage grader testing
fix-flaky-cache-9c2 Suspended checkpointed at ck-3 rbe
close-issue-42-2b Done merged rules_cc_cross#42 —
presence: online < 2m · stale < 15m · else offline
who did what, and from where

The whole campaign, as a lineage.

The Provenance panel draws the AgentTask DAG: parentRef is a spawn, predecessorRef is a handoff, mergedFrom is a merge. Nothing about how work moved is implicit. Values illustrative.

Provenance
AgentTask lineage · parent · handoff · merge
taskphaselineage
campaign-abc12 Running root
make-tbzl-ready-d4 HandedOff ← predecessor campaign-abc12
coverage-grader-e5 PROpened ← parent make-tbzl-ready-d4
merge-wave-f6 Merged mergedFrom [coverage-grader-e5, guards-a7]
phases: Pending → Dispatched → Running → HandedOff → PROpened → Merged
durable & replayable

Follow it live — or catch up later.

The transcript is a durable JetStream stream (sessions.<kind>.<name>.stream). Each event carries its stream sequence, so a reconnecting client resumes from the last event it saw — surviving a pod suspend or restart.

agent · migrate-aion-web
reading MODULE.bazel — planning the rules_ci swap
just now
checkpoint
CheckpointMeta ck-3 written — git WIP ref, context summary, active claims, tokens_used
s3://…/ck-3 2m ago
human prompt · escalate
approval: apply the CI cutover to main? — awaiting a human reply
3m ago
human
approved — HumanPrompt.status.phase = Answered, agent unblocked
2m ago
handoff
offer → accept: handed to claude-code with HandoffContext(branch, remaining[])
1m ago
merge
folded the coverage branch into merge-wave-f6 — lineage.mergedFrom recorded
now
the loop

Spawn → coordinate → checkpoint → merge.

Every step is a reconciled operation you can see and replay.

01

Spawn

spawn_subagent (or the Control panel) creates an Agent / AgentTask CR; the operator reconciles it into a runner Job. Lineage.parentRef records where it came from.

02

Coordinate

Agents claim work with advisory TTL leases on a JetStream KV blackboard, message over NATS subjects, and broadcast — so two agents don't collide on the same task.

03

Checkpoint

An agent appends a CheckpointMeta — git WIP ref, context summary, active claims, pending answers — then may suspend. Resume is a spawn with resumeFrom set to that checkpoint.

04

Handoff / merge

A live offer→accept handshake hands a task to another profile with its HandoffContext; merge folds branches and artifacts into one task, recording lineage.mergedFrom.

you stay in control

Escalation blocks on a human.

Autonomy with a stop valve — the agent asks, and waits.

How the human gate works

  • escalate raises a HumanPrompt CR — approval, choice, input, or notify — and the agent blocks until you answer. The console renders the prompt (its meridian spec) as a card with the right controls.
  • Your answer patches the CR's status.response and phase to Answered over a NATS reply subject, unblocking the suspended agent — an auditable who-approved-what.
  • handoff is confirm-gated by the offer→accept handshake; a claim is an advisory TTL lease (compare-and-set) — coordination you can reason about, not fire-and-forget.
  • Every coordination action is a durable AgentEvent (spawned, checkpointed, handed-off, merged, human-prompted, answered) on the audit stream — the fleet's own record of what happened.
vs a process and a log

Coordination you can prove.

The alternative runs each agent as an ephemeral process — impossible to resume, coordinate, or audit.

fastverk fleet
ad-hoc agent scripts
Agent state
✓ Reconciled CRs (Agent / AgentTask)
A process and a log file
Transcript
✓ Durable, replayable, resumable
Scrollback you lost
Coordination
✓ Claims, handoff, merge as operations
Coordinate by hand
Human gate
✓ escalate → HumanPrompt, blocks
Hope someone's watching
Crash recovery
✓ Checkpoint + resume
Start over
Lineage
✓ parent · predecessor · mergedFrom
Untracked

Handoff is an offer the receiver accepts — not fire-and-forget. Escalation blocks on a human. Coordination you can prove.

plugin-fleet · durable, resumable, auditable

source · github.com/fastverk/plugin-fleet · tools: spawn_subagent, list_agents, handoff, merge, escalate, checkpoint

Prove it's safe to merge.

fleet is one of 14 plugins in the fastverk console — hosted, or in your own cloud.