The Sonny Mesh

Sonny sessions are not pinned to the terminal that started them. The mesh turns a set of machines into a session fabric: any node can host a session, any authorized operator can watch or drive that session from anywhere else in the mesh, and a running session can be transferred between nodes without losing context.

This is the mechanism behind long-running work that outlives one laptop session — a refactor that keeps going while you move from your desk machine to your workstation, or a supervised fleet of workers pinned to a beefy build host.

What the mesh gives you

CapabilityCommand
Start a node that hosts sessionssonny mesh serve
See which nodes are upsonny mesh nodes
List sessions across the meshsonny mesh sessions
Push a local session to a nodesonny mesh push
Watch or drive a remote sessionsonny mesh attach <session-id>
Leave a session running remotelysonny mesh detach
Move a session to another nodesonny mesh transfer <session-id> <target-node>
Stop sessionssonny mesh terminate

Two planes carry the traffic:

  • Client plane — gRPC, on Config.GRPCAddress (default :50052). This is what sonny mesh attach, the CLI, and the desktop app connect to.
  • Peer plane — Synapse QUIC with a WebSocket fallback for rolling upgrades, on Config.SynapseListen (default :50053). This is node-to-node.

Two ways to be in the mesh

You do not have to run a dedicated node to participate.

  1. Ad hoc. Run sonny --mesh-self. Your chat embeds an in-process mesh node and registers the session with it, so another machine can attach to it.
  2. Managed node. Run sonny mesh serve as a long-lived service. Sessions are created on it (or pushed to it) and it is the thing you point at with --mesh-addr.

Where to go next

  • Mesh architecture — the two planes, isolation reporting, and the control-plane database.
  • Running the mesh — flags, mTLS, peer SVIDs, authorization policy, and a two-node example.
  • Working with sessions — attach, detach, transfer, terminate, and the session filters that matter on a busy mesh.

For the per-command flag tables see the mesh CLI reference .

pages