Federated launches span machines, repositories resolve through a committed index, and launchers pin registry sources.
Released on August 3, 2026
Breaking changes
- Repository entries now resolve through a committed repository index rather than being resolved ad hoc, and every cache entry is pinned to a git commit; generate and commit the index with the new
peppy repo indexcommand, whose--checkmode verifies the committed index is up to date. - Launcher deployment sources are restricted to
name:tagregistry references that resolve to node pins, and retired source keys are refused with a migration message, so update your launcher files to reference nodes by registryname:tag.
Federation
- A federated launch now spans multiple machines through cross-machine dispatch.
- The launcher places and preflights federated core node links across machines.
peppy resetrediscovers federated reset targets from the federation instead of from local memory.- Cross-daemon pairing peers are stamped with their own core node in display reads.
- Filesystem-backed repositories cannot participate in federation.
Pairing and dependencies
depends_ongains a fourth peer-coupling level,pairing_observers, across the daemon and launcher.- The surviving instance of a pair still receives the dissolution notice after its partner has already stopped.
Launcher and launch
- Launcher files accept per-instance
env_vars. - The launch summary lists every machine's node log files.
- A coordinator's next launch takes over its own stale reservation through a lease instead of being blocked by it.
- The caller's environment stays on the caller's machine, so peer builds no longer inherit it.
Containers
- Each peer prepares its own container bind mounts, and relative container mount sources are forwarded to Lima as absolute paths.
- Restarts that would kill running containers are refused, and container bind sources are prepared before a participant slice takeover.
- Apptainer SIF images are FUSE-mounted instead of extracted, with squashfuse bundled alongside apptainer.
Repositories
peppy repo refreshcaches its checkout for reuse, prunes orphaned checkouts, applies filesystem exclusions before reading declared items, and skips re-pushing stack entries whose manifest is unchanged.- Repository resolution failures are reported and contained instead of guessed, with clearer failure reports.
Messaging and code generation
- The Rust and Python generators handle
$optionalscalars and payload-less feedback topics consistently.
Documentation
- The documentation is aligned with the current commands, outputs, and behavior.
- Federation coordination guidance and the producer-link example are clarified, with the example showing separate per-node manifests.