Skip to content

v0.99.0: OpenFleet, a swarm leaves a record behind

Choose a tag to compare

@ralyodio ralyodio released this 13 Sep 11:00
7c27afa

moshcode 0.99.0 makes a swarm leave a record behind.

Until now moshcode swarm split a task, ran the pieces in panes, and killed them. Nothing durable said which panes belonged to which swarm, who started it, what each pane was allowed to touch, or whether the human had a say. This release implements the OpenFleet specification (https://logicsrc.com/openfleet) on the moshcode side.

What changed:

  • moshcode swarm mints a swarm id before planning, writes one OpenFleet record per pane under ~/.openfleet (set OPENFLEET_HOME to move it), names each pane after its member id, and passes OPENFLEET_HOME, OPENFLEET_RECORD, OPENFLEET_FLEET, OPENFLEET_MEMBER and OPENFLEET_SWARM into the pane's environment beside the herd variables. The planner is asked for the files each piece may write, and that list is stored as data on the record, not as prose in the prompt.
  • The fleet ledger gets swarm.spawn before the first pane starts, member.start when a prompt goes in, member.end for every pane when the swarm finishes, and one swarm.end carrying the synthesis and the --verify verdicts. --keep leaves the panes running and writes no end lines. A swarm started inside another member records that member as its parent; a swarm run by hand is the human's own.
  • A swarm that would exceed the ceiling it inherited (approvals, depth, fan-out, hosts, deadline) is refused before anything starts, and the refusal is a ledger line the sysop can read.
  • The herd manifest now says truthfully when a pane runs with native approvals bypassed. herd ps groups panes by fleet and swarm and marks bypass members. herd start gains a repeatable --env KEY=VALUE. herd serve withholds bypass panes unless --expose-autonomous, as it always did for agent panes.
  • New moshcode fleet verbs: open and cap for the human alone, tree, stop and log for anyone within reach. tree folds the ledger and the records into one tree, joins the herd roster for liveness, and enforces deadlines and budgets. stop ends a swarm as one unit, nested swarms first.

The same files are read by logicsrc fleet and by the Claude Code hooks logicsrc fleet hooks install adds, so a swarm moshcode starts and a job Claude Code runs appear in one tree.