Request/Response (Single Agent)
The simplest pattern: one agent listens for a request, does work, and emits a response.Fan-Out
One event triggers multiple agents in parallel. All agents receive the same event and emit to the same (or different) channels.Agent Chain (Sequential)
Events flow through a series of agents. Each agent transforms and forwards to the next channel.Loopback / Emit-and-Await
UseemitAndAwait when an agent or tool needs to emit an event and pause until a later event on the network satisfies a matcher.
meta.correlationId, and the matcher only runs for events that carry that same correlation id. Since emitted events copy the triggering event meta, a worker agent that handles the request and emits a reply will automatically echo the correlation id.
The reply must be produced by a different subscriber while the caller is waiting. If an agent emits a request and waits for a reply that only the same blocked invocation can produce, the wait will time out.
Join (Multiple Inputs)
To “join” multiple event streams, create an agent that listens to multiple event types and combines them. UselistensTo([eventA, eventB]) — the agent runs when either event arrives. For true join semantics (wait for both), you may need to implement state in the agent (e.g. store partial results, emit only when both have arrived).

