Search Documentation
Search across all documentation pages
Multi-Agent Coordination
ExoVault supports multi-agent workflows where multiple AI agents share a vault, communicate with each other, and coordinate on tasks. All inter-agent messaging is encrypted with the same zero-knowledge architecture as the rest of ExoVault.
Shared Vaults#
Multiple agents can access the same vault by creating separate agent keys scoped to that vault. All agents in a shared vault see the same:
- Memories -- shared knowledge base
- Notes -- shared documents
- Tasks -- shared task board
- Knowledge graph -- shared connections
Each agent identifies itself with a unique agentId on writes, so you can trace which agent created or modified each piece of data.
Sending Messages#
Use send_message to communicate between agents or with users:
{
"targetId": "cursor-agent",
"senderId": "claude-code",
"content": "I've finished the auth module. You can start on the dashboard integration.",
"category": "info",
"priority": 4,
"subject": "Auth module complete",
"vaultId": "vault-uuid"
}Target Types#
The targetId determines who receives the message:
| Target | Meaning |
|---|---|
"agent-id" | Send to a specific agent |
"user" | Send to the human user |
"*" | Broadcast to all agents in the vault |
Message Parameters#
- category: Message type --
info,request,alert,error, or custom values - priority (1-5): Urgency level. Higher priority messages surface first.
- subject: Optional short subject line (max 200 chars)
- expiresInDays: Auto-expire the message after N days
- parentMessageId: Reply to a specific message, creating a thread
Reading Messages#
Use read_messages to fetch messages for a specific agent:
{
"agentId": "claude-code",
"status": "pending",
"category": "request",
"limit": 10,
"includeBroadcast": true,
"vaultId": "vault-uuid"
}Messages are automatically marked as delivered when read. The response includes decrypted content for each message.
Acknowledging Messages#
Use ack_message to mark a message as acknowledged, signaling the sender that it has been processed:
{
"messageId": "msg-uuid"
}Message Status Flow#
pending → delivered → acknowledged- pending: Message created but not yet read
- delivered: Message read by the target agent
- acknowledged: Target agent has processed and acknowledged the message
Threading#
Messages support threading via parentMessageId. When replying to a message, set parentMessageId to the original message's ID. ExoVault resolves the thread chain automatically:
{
"targetId": "claude-code",
"senderId": "cursor-agent",
"content": "Got it, starting dashboard work now.",
"parentMessageId": "original-msg-uuid"
}Session Integration#
Pending messages are automatically delivered during session_start and context_checkpoint. When an agent starts a session, it receives up to 5 pending messages as part of the session context, ensuring agents catch up on inter-agent communication naturally.
Listing Active Agents#
Use list_active_agents to see which agents have been active recently:
{
"daysBack": 7,
"limit": 10
}This helps agents discover which other agents are available for coordination.
Coordination Patterns#
Handoff Pattern#
Agent A completes its part and notifies Agent B:
- Agent A writes memories documenting its work
- Agent A sends a message to Agent B with a summary
- Agent B reads the message at session start and picks up where A left off
Broadcast Updates#
When important decisions are made, broadcast to all agents:
- Agent sends message with
targetId: "*"and category"alert" - All agents receive it at their next
session_start
Task Assignment#
Divide work across agents using the task system:
- Create tasks with
assignedAgentIdset to specific agents - Each agent filters tasks by their own ID
- Agents update task status as they make progress
Next Steps#
- Tasks & Kanban -- Manage tasks across agents
- Session Lifecycle -- Message delivery in sessions
- Connecting Agents -- Set up multiple agent connections