Skip to content

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:

json
{
  "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:

TargetMeaning
"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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

json
{
  "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:

  1. Agent A writes memories documenting its work
  2. Agent A sends a message to Agent B with a summary
  3. 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:

  1. Agent sends message with targetId: "*" and category "alert"
  2. All agents receive it at their next session_start

Task Assignment#

Divide work across agents using the task system:

  1. Create tasks with assignedAgentId set to specific agents
  2. Each agent filters tasks by their own ID
  3. Agents update task status as they make progress

Next Steps#