Serve every robot from one MCP endpoint, start named copies with a launch, and publish lossless 16-bit depth frames.
Released on September 24, 2026
Breaking changes
peppy stack joinnow takes oneOPTION:NAMEargument in place ofOPTION -i NAME; update commands and scripts that add a copy to a running stack.peppy stack resolvepreviews joined copies with repeatable--join OPTION:NAME(addressed by--with NAME.option), replacing the removed--join,--join-name,--join-with, and--join-set-argumentsflags.- A bound member's
copyis now aCopyTagcarrying the copynameand its fragment's instance id, not a plain name string; update readers ofmember.copyand ofstack list --json. - The
with_bound_producer_in_copybuilder now takes the copy name and the fragment's instance id (running the producer asNAME_<id>) instead of the full instance id and copy name.
Copies at launch
peppy stack launchandpeppy stack buildaccept repeatable, comma-separated--join OPTION:NAMEto start named copies with the launch, addressed byNAME.optionwords and--place NAME@CORE_NODE.- A launcher
deploymentsentry on azero_or_moreaxis may list no copies, instead describing how every copy of that option is set up for later--joinorstack join.
MCP exposures
- An MCP exposure that declares
robotsbecomes a per-robot surface: one endpoint serving every robot of the stack, where each tool names its robot and resources are published per robot. - Image representations add a lossless
png16codec for 16-bit single-channel depth frames, usable withon_oversize: "downscale", and now read frames labeledz16,mono16, or16UC1. - An exposure target may select the same topic member several times, each entry with its own resource name, representation, and policies.