Adds observer slots, unifies binding and pairing into links, reworks zenoh config, and spans stack list across daemons.
Released on July 23, 2026
Breaking changes
- The
peppy authcommand group is renamed topeppy platform; update any commands or scripts that callpeppy auth. - The
--bindand--pairflags are replaced by a single--linkflag; switch your commands to use--link. - Launch files now use unified
linksanddefer_linksfields in place of the previous separate binding and pairing entries; migrate your launch files to the new fields. - Zenoh settings in
peppy_config.json5are restructured into azenohsection with taggedzenoh.managedandzenoh.externalblocks, replacing the flatzenoh,zenohd, andpeerfields, and unknown fields underzenohare now rejected; move your settings into the new blocks. The newzenoh.externalblock lets peppy run against an operator-managed zenoh router. peppy stack listno longer prints DOT graph output; it now always renders a report of per-core-node sections aggregated across every live daemon, including live instance counts and the answering daemon's identity, so update anything that parsed the old graph output.- Generated peppygen modules for slots are now nested at
<category>/<link_id>/<member>; update the import paths for your generated code. - The
PEPPY_DAEMON_STATE_FILEenvironment override is removed; the daemon state file now lives under$PEPPY_HOME, so stop settingPEPPY_DAEMON_STATE_FILE. - The "organization"/"org-id" concept is renamed to "workspace"/"namespace" across authentication and daemon output; update references and scripts that use the old terms.
Observers
- Nodes can now declare observer slots to observe topics, with generated observer bindings (including an
ObservedSourcetype) and delivery of observers to running nodes. - Guides and launch-file documentation now cover observer slots and the
links/defer_linksmodel.
Multi-daemon and federation
- Daemons can participate in a federated peer topology across zenoh routers.
- Federation-aware CLI commands now surface listener and serve errors instead of hanging.
Other changes
- Removing a node with
node remove --stop-instancesnow also dissolves that node's links. - A new
PEPPY_CONFIGenvironment variable overrides the daemon config file path. - Only one peppy daemon can run per
$PEPPY_HOMEdata root, enforced by an exclusive singleton lock. - Config drift now logs which
peppy_config.json5settings it adds when completing missing defaults. - Newly generated core-node default names use the compact
cn-{adj}-{surname}format instead of the longercore-node-{adj}-{surname}-{4digits}-{10digits}form. - The bundled Cap'n Proto compiler is now installed under
$PEPPY_HOME/bin, and its location is documented.
Documentation
- External federation guidance adds a dedicated section on namespace handling outside the Peppy platform.