synapse-a2a
This skill provides comprehensive guidance for inter-agent communication using the Synapse A2A framework. Use this skill when sending messages to other agents, routing @agent patterns, understanding priority levels, handling A2A protocol operations, managing task history, configuring settings, or using File Safety features for multi-agent coordination. Automatically triggered when agent communication, A2A protocol tasks, history operations, or file safety operations are detected.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Synapse A2A Communication
Inter-agent communication framework via Google A2A Protocol.
Quick Reference
| Task | Command |
|---|---|
| List agents (Rich TUI) | synapse list (event-driven refresh via file watcher with 10s fallback, ↑/↓ or 1-9 to select, Enter/j jump, k kill, / filter) |
| Send message | synapse send <target> "<message>" --from <sender> |
| Wait for reply | synapse send <target> "<message>" --response --from <sender> |
| Reply to request | synapse send <target> "<response>" --reply-to <task_id> --from <sender> |
| Emergency stop | synapse send <target> "STOP" --priority 5 --from <sender> |
| Stop agent | synapse stop <profile|id> |
| Check file locks | synapse file-safety locks |
| View history | synapse history list |
| Initialize settings | synapse init |
| Edit settings (TUI) | synapse config |
| View settings | synapse config show [--scope user|project] |
| Show instructions | synapse instructions show <agent> |
| Send instructions | synapse instructions send <agent> [--preview] |
| Version info | synapse --version |
Tip: Run synapse list before sending to verify the target agent is READY.
Sending Messages (Recommended)
Use synapse send command for inter-agent communication. This works reliably from any environment including sandboxed agents.
synapse send gemini "Please review this code" --from claude
synapse send claude "What is the status?" --from codex
synapse send codex-8120 "Fix this bug" --priority 3 --from gemini
Important: Always use --from to identify yourself so the recipient knows who sent the message and can reply.
Target Resolution (Matching Priority):
- Exact ID:
synapse-claude-8100(direct match) - Type-port:
claude-8100,codex-8120,opencode-8130,copilot-8140(shorthand) - Type only:
claude,gemini,codex,opencode,copilot(only if single instance)
Note: When multiple agents of the same type are running, type-only targets (e.g., claude) will fail with an ambiguity error. Use type-port shorthand (e.g., claude-8100) instead.
Choosing --response vs --no-response
Rule: If your message asks for a reply, use --response
| Message Type | Flag | Example |
|---|---|---|
| Question | --response |
"What is the status?" |
| Request for analysis | --response |
"Please review this code" |
| Status check | --response |
"Are you ready?" |
| Notification | --no-response |
"FYI: Build completed" |
| Delegated task | --no-response |
"Run tests and commit" |
# Question - needs reply
synapse send gemini "What is the best approach?" --response --from claude
# Delegation - no reply needed
synapse send codex "Run tests and fix failures" --from claude
Roundtrip Communication (--response / --reply-to)
For request-response patterns:
# Sender: Wait for response (blocks until reply received)
synapse send gemini "Analyze this data" --response --from claude
# Receiver: Reply to the request (use task_id from [A2A:task_id:sender])
synapse send claude "Analysis result: ..." --reply-to <task_id> --from gemini
The --response flag makes the sender wait. The receiver MUST use --reply-to with the task_id to link the response.
Short Task IDs & :R Flag: PTY displays 8-character short IDs. When the sender used --response, a :R suffix appears after the sender_id to indicate a reply is required:
- With
--response:[A2A:54241e7e:synapse-claude-8100:R]- reply required - Without
--response:[A2A:54241e7e:synapse-claude-8100]- no reply needed
Use the task_id (not including :R) with --reply-to:
- Short ID:
--reply-to 54241e7e - Full UUID:
--reply-to 54241e7e-1234-5678-abcd-ef1234567890
Receiving and Replying to Messages
When you receive an A2A message, it appears as:
[A2A:<task_id>:<sender_id>:R] <message> ← Response required (:R flag)
[A2A:<task_id>:<sender_id>] <message> ← No response required
When to use --reply-to:
| PTY Format | Action |
|---|---|
:R flag present |
MUST reply with --reply-to <task_id> |
No :R flag |
Do NOT use --reply-to (send new message if needed) |
# :R flag present → use --reply-to (task_id only, not including :R)
synapse send claude "Here is my analysis..." --reply-to abc12345 --from gemini
# If sender delegated a task → just do the task, no --reply-to needed
Example - Question:
Received: [A2A:abc12345:synapse-claude-8100] What is the project structure?
Reply: synapse send claude "The project has src/, tests/..." --reply-to abc12345 --from gemini
Example - Delegation:
Received: [A2A:xyz67890:synapse-claude-8100] Run the tests and fix failures
Action: Just do the task. No reply needed unless you have questions.
Priority Levels
| Priority | Description | Use Case |
|---|---|---|
| 1-2 | Low | Background tasks |
| 3 | Normal | Standard tasks |
| 4 | Urgent | Follow-ups, status checks |
| 5 | Interrupt | Emergency (sends SIGINT first) |
# Normal priority (default)
synapse send gemini "Analyze this"
# Higher priority
synapse send claude "Urgent review needed" --priority 4
# Emergency interrupt
synapse send codex "STOP" --priority 5
Agent Status
| Status | Meaning | Color |
|---|---|---|
| READY | Idle, waiting for input | Green |
| WAITING | Awaiting user input (selection, confirmation) | Cyan |
| PROCESSING | Busy handling a task | Yellow |
| DONE | Task completed (auto-clears after 10s) | Blue |
Verify before sending: Run synapse list and confirm the target agent's Status column shows READY:
synapse list
# Output:
# NAME TYPE STATUS PORT WORKING_DIR
# synapse-claude-8100 claude READY 8100 my-project
# synapse-gemini-8110 gemini WAITING 8110 my-project # <- needs user input
# synapse-codex-8120 codex PROCESSING 8120 my-project # <- busy
Status meanings:
-
READY: Safe to send messages -
WAITING: Agent needs user input - use terminal jump (see below) to respond -
PROCESSING: Busy, wait or use--priority 5for emergency interrupt -
DONE: Recently completed, will return to READY shortly
Interactive Controls
In synapse list, you can interact with agents:
| Key | Action |
|---|---|
1-9 |
Select agent row (direct) |
↑/↓ |
Navigate agent rows |
Enter or j |
Jump to selected agent's terminal |
k |
Kill selected agent (with confirmation) |
/ |
Filter by TYPE or WORKING_DIR |
ESC |
Clear filter first, then selection |
q |
Quit |
Supported Terminals:
- iTerm2 (macOS) - Switches to correct tab/pane
- Terminal.app (macOS) - Switches to correct tab
- Ghostty (macOS) - Activates application
- VS Code integrated terminal - Opens to working directory
- tmux - Switches to agent's session
- Zellij - Focuses agent's terminal pane
Use case: When an agent shows WAITING status, use terminal jump to quickly respond to its selection prompt.
Key Features
- Agent Communication: @agent pattern, priority control, response handling
-
Task History: Search, export, statistics (
synapse history) -
File Safety: Lock files to prevent conflicts (
synapse file-safety) -
Settings: Configure via
settings.json(synapse init)
References
For detailed documentation, read:
-
references/commands.md- Full CLI command reference -
references/file-safety.md- File Safety detailed guide -
references/api.md- A2A endpoints and message format -
references/examples.md- Multi-agent workflow examples
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!