Skip to content

v0.30.2

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_more axis option may be named in only one deployments entry 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 port as 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_preferred to 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 launch and node run print are now tinted by field when color is enabled.

Launch files

  • A stack join copy inherits its option's deployments entry, taking that entry's with, arguments, and adjustments with the join's own --with and --set-arguments on top.

Networking

  • In the default "peer" topology a node session binds a network-reachable 0.0.0.0 listener on an ephemeral port; use "router" for a deployment that must not accept inbound peer links.

Core-node functions

  • stack.list now returns two more fields, copies and shutdown_grace_secs, beside its node graph and daemon identity.

View all releases