Core Concepts
The Signal Gating Protocol sits between the agents in a multi-agent system and structures how signals flow between them. It is an executive-function layer: typed signals pass through composable gates, autonomous agents process them, and a mesh topology coordinates the whole system, including runtimes like Nous Research's Hermes and others like them.
The neuroscience analogy
The brain does not hand every sensation to the cortex. The thalamus gates sensory input before it reaches higher regions. The prefrontal cortex decides what is currently relevant. Sparse coding keeps most neurons quiet, most of the time. Agents built on LLMs have no structural equivalent. SGP supplies one.
The four primitives
Signal
A typed, immutable event. Subclass Signal to define a domain type; each signal carries a priority and metadata. Derive new signals with evolve() rather than mutating, so provenance stays intact.
Gate
A composable predicate that controls which signals reach an agent. Gates combine with operators:
| Operator | Behavior |
|---|---|
a >> b | Chain: apply gates in sequence; a signal must pass every gate. |
a | b | Or: a signal passes if either gate admits it. |
a & b | And: a signal passes only if both gates admit it. |
~a | Invert: a signal passes if the underlying gate rejects it. |
Built-in gates:
| Gate | Purpose |
|---|---|
by_priority(n) | Admit signals at or above a priority. |
by_type(T) | Admit signals of a given type. |
deduplicate(key, window) | Drop duplicates within a window. |
ttl(seconds) | Drop signals older than a deadline. |
throttle(rate) | Cap the rate at which signals pass. |
when(pred, then, otherwise) | Branch on signal content. |
circuit_breaker(threshold, cooldown) | Trip open after failures; close after a cooldown. |
Agent
An autonomous signal processor. It handles signals with @agent.on(SignalType), communicates with emit / reply / request, can expose tools (@agent.tool), and restarts under supervision. An agent is where a runtime like Hermes plugs in.
Mesh
The agent network. connect agents into a topology, then coordinate them:
| Pattern | Behavior |
|---|---|
| scatter / gather | Fan out to workers, collect every response. |
| map / reduce | Distribute to specialists, then synthesize through a reducer. |
| workflow | Chain agents: each response becomes the next agent's input. |
| race | Run strategies in parallel, take the first responder. |
Why this shape
Multi-agent systems built on LLMs fail in characteristic ways:
- Context collapse: every signal is forwarded to every agent until the window saturates with noise.
- Context rot: stale or redundant information displaces what matters.
- Cascade failures: one agent's hallucination propagates unchecked through downstream calls.
A gate interrupts each of these at the protocol level (deciding what an agent attends to) rather than papering over them with longer prompts and ad-hoc orchestration glue.
Next steps
- Try the Quickstart to run two coordinating agents.
- Read the Specification for formal definitions.