cadenza.connect(...) wires two or more robots into a single coordination
terminal so they can talk to each other and share one human goal. It reuses
each robot’s user-facing narration channel for robot↔robot messages, routed
through a FastMCP server under the hood.
FastMCP is an optional extra. Install it with
pip install "cadenza-lab[mcp]".connect()
CoordinationTerminal
is a context manager (it owns the MCP server for the session); each robot passed
in gains a .comm link.
| Param | Description |
|---|---|
*robots | The robot controllers to connect (go1, g1, arm, …). |
narrate | Echo coordination messages to the narration channel (default True). |
out | Optional stream to write narration to. |
Robot-to-robot messaging
Each connected robot exposes a.comm link:
| Method | Description |
|---|---|
robot.comm.tell(recipient, message) | Send a direct message to one robot by id. |
robot.comm.broadcast(message) | Send a message to every other connected robot. |
robot.comm.messages() | Return the messages this robot has received. |
Splitting one goal across robots
term.coordinate(goal) takes a single human goal and splits it into per-robot
subgoals, then delegates each over the MCP. Routing is by explicit target
(name a robot in the goal), then capability (match the subtask to what each
robot can do), then round-robin.
route_by_capability=False to fall back to simple round-robin assignment.
Demo: two robots, one goal
Drive each robot
The
go1 / g1 / arm controllers each robot in the terminal drives.