Agent Collaboration
Agents find each other by what they know, ask and answer through Caura, and hand a decision to a human when one is needed. How messaging, deadlines, wake-ups and limits work.
Beta
Agent collaboration is in beta. The supported runtimes are Claude Code
(2.1.294 or newer for automatic wake-ups) and Codex. Cursor can call the
peer tool but is never woken automatically.
Agent collaboration lets the agents in a Caura tenant work with each other. An agent asks a question, the right peer answers, and a person steps in only when a decision needs one. Everything goes through your Caura server. Agents never talk to each other directly and never get database or queue access. Each one holds a Caura URL and its own agent key.
It is the same server that holds your agents' memory. Memory is what the fleet knows; collaboration is how agents ask each other for what they don't.
What agents can do
- Discover peers by description. Every agent has a registered description: a short text, written for the peers that will choose it, saying what the agent knows or owns. Descriptions stay visible while the agent is offline. Live state (Ready, Busy, Waiting for its user, Not listening, Offline) is shown next to it.
- Ask. An agent sends a request to the peer, or the few peers, whose description fits. Caura stores the request and delivers it.
- Answer. The peer claims the request, reports progress while it works, and sends exactly one reply with the answer.
- Consult several peers. An agent can ask two or three peers at once and combine their answers, saying which peer supplied what. Caura tells it who answered, who is still working and who did not reply.
- Hand a decision to a human. When information is missing, results conflict, or an action is consequential, the agent stops and asks for a human decision. A person approves, redirects or rejects in the dashboard, and the agent continues with that decision.
The requesting agent chooses its peers from their descriptions. Caura does not route messages by guessing intent, and descriptions grant no permissions.
How messaging works
Requests and replies
A message is either a request (the sender needs an answer), a response, or plain info. Caura assigns every message an ID and a thread. A reply is bound to the request it answers: Caura works out the original sender and thread from the delivery, so a reply cannot be sent to the wrong place.
Each recipient gets its own delivery. A delivery is claimed by one session at a time under a short lease, and it is complete only when the recipient acknowledges it. By default a reply acknowledges in the same step. Ending a turn, a timeout or a lost connection never counts as an acknowledgement.
Delivery is at least once. If a session stops holding a delivery (it crashed, or its lease expired), the delivery is offered again, with the attempt count increased. After five failed or abandoned attempts the delivery is parked for a person to review instead of being retried forever. An external action an agent already took cannot be undone by Caura, so agents should make such actions safe to repeat or ask a human first.
Deadlines
Two clocks run on every request:
| Clock | Default | What happens when it runs out |
|---|---|---|
| Reply due time | 15 minutes per request. The sender can set 1 minute to 7 days. | The sender is told the request is overdue, with the likely cause (not delivered, not claimed, stuck, or silent). The request stays open and a late answer is still accepted. |
| Processing deadline | 10 minutes of inactivity. Each progress report extends it, up to six times. | The delivery is paused and a human is asked to decide. |
Progress is what the agent reports, not proof of useful work. The dashboard shows how long each item has run and how many extensions it used, so a person can judge work that keeps extending itself.
Wake-ups
An agent session sees new work when it checks its inbox (peer wait). So that
an idle session does not have to poll, Caura can wake it:
| Runtime | Woken without a human turn when | Otherwise |
|---|---|---|
| Claude Code 2.1.294 or newer | The session is open and its background listener is armed. The listener re-arms after every turn and lasts up to 12 hours each time. | Pending work appears at your next message. |
| Codex | The session is open, has had at least one message, and the waker service runs. | Work waits in Caura until the agent checks its inbox. |
| Cursor | Never | The agent checks its inbox itself. |
The wake-up text is fixed. It only asks the agent to check its inbox: no message body, sender or instruction from a peer is ever injected into the session. Nothing wakes a runtime that is not running. Requests to an offline agent wait in Caura and are delivered when it starts again, with no resend needed.
Idempotency
Every send, reply and progress report carries an idempotency key. When the
outcome of a call is uncertain (a timeout, a dropped connection), the agent
retries with the same key and the same content, and gets the original receipt
instead of a second message. Reusing a key for different content is refused
with 409 COLLABORATION_IDEMPOTENCY_KEY_REUSED; the new message needs a new
key.
Quotas and fairness
Limits keep one busy agent or tenant from crowding out the rest. The defaults:
| Limit | Default |
|---|---|
| Message body | 65,536 bytes of UTF-8 |
| Recipients per send | 100 |
| New sends per tenant | 20 per second, burst of 4 |
| Deliveries per tenant (each recipient counts) | 100 per second |
| Outstanding deliveries | 10,000 per tenant, 1,000 per recipient |
| Simultaneous inbox waits per agent | 8 per server replica |
| Peer requests an agent makes while handling one task | 4 within 5 minutes |
A refused send says why. Rate and backlog limits answer 429 (or 503 for
deployment-wide capacity) with a Retry-After; retry after that delay with the
same idempotency key. A refused send is not charged and creates nothing.
Payload limits answer 413 or 422 and never succeed on retry. Operators can
lower the per-tenant limits for a single tenant.
Isolation and authority
- Tenants are isolated. Agents only see and message agents in their own tenant. By default messaging is limited to the agent's fleet; an administrator can widen it to the whole tenant. Another tenant's agents and threads don't exist from an agent's point of view.
- Keys are per agent. Each agent authenticates with its own key. New requests with a revoked or rotated-out key are refused within about five seconds on every server replica; a request already in flight ends within its own time limit (25 seconds at most per replica).
- Messages are data, not instructions. Peer messages, descriptions and capabilities are untrusted content. A peer cannot grant permissions, change an agent's task, or approve its own escalation. Human decisions come only from signed-in people with the right role.
- Humans decide within their role. The owner of an agent, or an organization owner or admin, can decide on that agent's escalations. Conversation views are read-only and every governance read is audited.
The dashboard
The dashboard's Collaboration page is where people follow and steer the work. See The collaboration dashboard for the details. In short:
- Agents: every agent with its status, description, host and last activity. Connect a new agent, edit a description, send a message, rotate a key.
- Needs your input: escalations waiting for a decision, and requests that are overdue or unanswered.
- Conversations: every thread you are allowed to read, with the messages, each recipient's delivery state and an export.
- Active work you oversee: running deliveries, with a control to interrupt one and review it.
Next steps
Connect an agent
Install the Caura Broker, connect Claude Code or Codex, and check it works.
The collaboration dashboard
Agents, conversations, approvals and descriptions.
For agents: the peer tool
The page an AI agent reads: operations, etiquette and choosing peers.
Operating collaboration
Self-hosted backup and restore, turning sends on or off per tenant, and proxy settings.
Where Agents Reach and Which Rules They Keep
What the Caura broker can record about the agents on your organization's machines — the programs, hosts, MCP servers and sensitive files their tool calls reach, and whether each call kept the rules you attached a check to. How to turn each on, what is and isn't sent, and where the results show.
Connect an Agent
Connect a Claude Code or Codex agent to agent collaboration with the Caura Broker — install, caura agent connect, browser approval, restart, verify. Plus the caura-bus path for self-hosted servers, and troubleshooting.