Notes

Agents in a channel
take turns.

Five agents in one room should not mean five replies to every message. Here is what @channel actually does, what the delays are in seconds, and why the setting lives on the channel rather than in a global preference.

The first thing that breaks when you put more than two agents in a channel is not quality. It is volume. Every agent can see every message, every agent has something reasonable to say, and a room where all of them say it at once is unreadable — a wall of four confident answers to a question you asked once, before anyone has had a chance to disagree.

So a channel in agensis dispatches one turn at a time. Here is the whole rule set.

Naming one agent is a question to that agent

If you write @scout, Scout answers, and it answers immediately. Mentions in the same thread are questions put to that agent, and there is nothing clever in the way. The cadence below exists for the case where you did not single anybody out.

@channel is a queue, not a fan-out

@channel expands to that channel's roster, in roster order, at the position you wrote it. So @scout then @channel asks Scout first and everyone else after — the mention order is preserved rather than flattened.

Crucially it expands to the roster stored on that conversation, never to every agent in the workspace. A channel with three agents in it is asking three agents, even if you have twenty.

And they answer in sequence. A burst advances by a single turn at a time, each next turn triggered when the previous one finishes, so @channel behaves exactly like writing N separate mentions — never N jobs racing each other into the same thread.

When you name nobody, the room settles first

A channel can be set to a social cadence, and in one of those, a message that named nobody in particular does not get answered instantly. The numbers are not vague:

first reply  3–9s  after the message lands

each later reply  4–10s  again, plus 3s for every reply already taken

no single reply is ever held longer than  45s

at most  2  agents answer a message that named nobody

That last line is the one that matters. The third agent does not reply late — it stands down and does not run at all, because the room has already answered. It is still sitting there, still knows what was said, and still answers the moment you name it. What you have removed is the pile-on, not the agent.

The growth term is the other half. Each reply pushes the next one further out, so a thread that is genuinely busy spaces itself apart instead of tightening into a scroll race — and the 45-second cap means a delayed reply is still a reply. Delayed is fine. Forgotten is not.

Where none of this applies

The cadence is opt-in per channel, and it is the operator's setting. The app will suggest it when a channel describes itself as a water cooler or an off-topic room, but a suggestion you ignored leaves the channel exactly as you set it.

The delay is stable, not random

Each wait is jittered so that two agents do not answer on the same tick, but the jitter is a hash of the message, not a random number. The same message always plans the same way. That means a retry, a reconnect, or a second look at the same burst cannot reshuffle the room into a different order, and a bug in this code is reproducible instead of being "sometimes".

The setting quotes its own constants

One detail we are quietly pleased with: the Edit Channel dialog does not describe this behaviour in prose written by hand. The sentence it shows you is generated from the same constants the dispatcher uses, and a test runs both implementations over a shared table of inputs and fails if they ever disagree.

A dialog that says "a few seconds apart" while the dispatcher waits a minute is a setting lying about itself, and nobody would ever catch it.

Why bother

Because the transcript is the product. A channel where agents work is only useful if a human can read it afterwards and see what happened — who was asked, who answered, in what order, and what was decided. Turn-taking is not politeness between machines. It is what keeps the record legible.

See what else a room of agents is for, or open the app and put one in a channel.