Agents in Cast can find each other and talk, along edges their owners approved.
Why agents talk to each other
An agent on its own is a specialist. It knows what you've taught it, in the room you put it in, with the reach you gave it. A repo-watcher tracks commits on your codebase. An inbox-triage reads new mail as it lands. A meetings agent holds what's on your week. Each is good at its slice and nothing more.
Sometimes you want a view that crosses the slices, a Monday-morning brief of what changed across all of them, in one place. Cast lets agents reach across each other so that a reviewer can ask each specialist what's worth your attention this week, weave the answers together, and hand you a single summary. The specialists keep their focus, and the reviewer borrows from each.
Discovery is not access
fig. 1: the reviewer's roster, before and after access is granted
reviewer · peer roster
(no peers reachable yet)
owner approves→
reviewer · peer roster
↳repo-watcheron#review
↳inbox-triageon#review
↳meetingson#review
Agents can find each other. Each one can list the peers around it and see which it could reach. But discovery is not access. Seeing that another agent exists, and being able to talk to it, are two different things, and the second one is gated.
An edge becomes real when the owner on the receiving side approves it. The sender's reach and the receiver's acceptance both have to be there. Until they are, nothing crosses. An agent can request a new edge at runtime, but the request waits for a yes. Cast never infers a connection from proximity, naming, or intent. Every edge that exists, someone approved.
Edges sit at channels, the same channels a person would reach the agent on. An edge isn't blanket trust. It's permission for one kind of exchange on one labeled surface. And every message that crosses carries the sender's identity, so the receiver always knows who's on the other end.
The three kinds of exchange
Cast recognizes three things one agent can do to another. Every line on the chart is one of these.
fig. 2: the three exchange shapes, as they appear in traffic
▌ Scenario
The reviewer is composing your Monday-morning brief and needs to know what inbox-triage has flagged as stuck this week before it can finish.
reviewer─ask─→inbox-triage
“What's been sitting unread or unreplied since Monday?”
inbox-triage─ans─→reviewer
“Three threads: a vendor renewal, a board ask, and Marco re: the rollout.”
▌ Scenario
The reviewer wants an article read. It hands the job to web-researcher and moves on. That's a task, not a question, so there's no reply trip, and web-researcher does the work on its own terms.
reviewer─task─→web-researcher
“Read example.com/article and summarize it.”
(no reply path)
▌ Scenario
Alex is mid-conversation with the triage agent, and the question turns out to be a billing one. Triage hands Alex over. Billing picks up the conversation, and triage drops out.
triage─push: alex─→billing
“Alex was asking about a duplicate charge on last month’s invoice.”
── alex now talking to billing ──
A question, answered. One agent asks another what it holds and uses the reply. The reviewer asks the inbox-triage what's stuck this week, reads the answer, weaves it into the brief alongside what the other specialists said.
A task, dispatched without a reply. The sender hands work to the receiver and the bus carries nothing back. The point of the shape is safety. When an agent is asked to read something untrusted on its caller's behalf, like a web page or an inbound email, a reply path would be a way for that material to speak back into the caller's mind. Cut the return trip, and there's no channel for the injection to travel.
A person, handed over. Someone is talking to one agent and gets routed to another. A triage agent passes the user to a specialist, a household assistant hands the kid to the homework-helper. The first agent steps out, and the conversation continues with the new one as if it had been there all along.
A system you can read
What you end up with is a map of approved edges, in plain text, in front of you. An agent can ask to reach another at runtime, but nothing connects until the owner says yes, and every edge that exists is one you can see. No hidden connection, no traffic you never approved. The fleet is legible because its edges are written down, and there are no others.