MCP and node servers take a free port when theirs is held, and a joined stack copy inherits its option's settings.
Released on September 19, 2026
Breaking changes
- A
zero_or_moreaxis option may be named in only onedeploymentsentry now; a launcher that lists the same option twice is refused, so merge those entries into one.
Ports and endpoints
- The built-in MCP server treats its
portas a preference and takes an OS-assigned loopback port when another process holds it, so any number of MCP instances run on one machine. - Rust nodes can bind with
peppylib::runtime::bind_preferredto take their chosen port, or an OS-assigned fallback on the same host when it is held, and learn which happened. - Endpoint blocks that
stack launchandnode runprint are now tinted by field when color is enabled.
Launch files
- A
stack joincopy inherits its option'sdeploymentsentry, taking that entry'swith,arguments, andadjustmentswith the join's own--withand--set-argumentson top.
Networking
- In the default
"peer"topology a node session binds a network-reachable0.0.0.0listener on an ephemeral port; use"router"for a deployment that must not accept inbound peer links.
Core-node functions
stack.listnow returns two more fields,copiesandshutdown_grace_secs, beside its node graph and daemon identity.