Skip to content

v0.35.1

Lease and halt robots with peppy fleet, call daemon interfaces from nodes, and call any contract with the codec API.

Released on October 26, 2026

Robot leases and the halt

  • Run peppy fleet list, peppy fleet halt, and peppy fleet clear-halt to inspect the fleet, halt every client that moves a robot, and clear the halt.
  • A node with a scoped fleet daemon target holds a lease goal to take, offer, and open robot leases, and follows the fleet's listing and changes.
  • MCP servers, peppy node call, and lease holders check the daemon before calling a member marked moves_robot, and refuse it during a halt or on a robot another client leases.
  • Mark a launcher axis with role: "robot_commander" so the fleet listing names each robot's commander.

Daemon targets

  • List daemon interfaces in a node's manifest.depends_on.daemon; the generated client calls them on the daemon that runs the instance.
  • Scope each daemon target in a launcher's daemon_scopes, or leave it unserved with { vacant: "<why>" }.
  • A node reaches the daemon only through its daemon targets; the daemon refuses stack-changing raw calls from nodes of the stack.

The codec API and contract metadata

  • Set codec_api: true in a node's execution block to get the codec API, which parses any contract (comments included), converts its messages, and calls its members.
  • Give contract members a marks list (peppy defines moves_robot), string fields a closed $enum set, and fields a $marks list, all readable through the codec API.

MCP exposures

  • stack_copies:v1 list now reports each option's kind, whether each copy is running, and the stack's launcher, and join and remove can refuse with halted or leased.

View all releases