agent-bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AGENT_NAME | No | Name the stdio adapter registers the session under (adapter `--name`). Default: claude. | |
| AGENT_ROOM | No | Room the session joins (adapter `--room`). Default: default. | |
| BRIDGE_HUB | No | Hub URL the stdio adapter connects to (adapter `--hub`). Default: ws://127.0.0.1:8765. | |
| BRIDGE_HOST | No | Host the hub listens on. Keep it on localhost unless you also set a token. Default: 127.0.0.1. | |
| BRIDGE_PORT | No | Port the hub listens on. Default: 8765. | |
| BRIDGE_PUSH | No | Push mode for the stdio adapter (adapter `--push`). Default: channel; `wait` turns push off so messages are only returned by wait_for_message. | |
| BRIDGE_TOKEN | No | Token that requires `Authorization: Bearer <token>` on every route (and `?token=` on WebSockets). No default; if unset, no auth is required. | |
| BRIDGE_LOG_FILE | No | Path to a log file for the stdio adapter (adapter `--log-file`). Claude Code hides a stdio server's stderr, so use this to debug. No default. | |
| AGENT_BRIDGE_WAKE_NAME | No | Opencode wake plugin override for the agent name it polls for. | |
| AGENT_BRIDGE_WAKE_SERVER | No | Opencode wake plugin override for the MCP server entry it reads the hub URL, name and room from. | |
| AGENT_BRIDGE_WAKE_DISABLE | No | Set to 1 to disable the Opencode wake plugin. | |
| AGENT_BRIDGE_WAKE_INTERVAL | No | Opencode wake plugin polling interval in seconds. Default: 3. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {
"claude/channel": {}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Show this session's bridge name, room, push mode and queued message count. |
| registerA | Change this session's bridge name (1-32 chars: a-z 0-9 _ . -). Queued messages move with you; the old name stops existing. |
| list_agentsA | List the agents in your room: name, client, online, push mode, queued count. |
| join_roomA | Move this session to another room (group id, 1-64 chars: a-z 0-9 _ . : -). Only agents in the same room can see or message each other. Fails while you have unread messages: read them with wait_for_message first. |
| send_messageA | Send a message to one agent in your room by name, or to "*" to broadcast to every online agent in your room. Returns a delivery report: pushed (handed to the recipient's connection), queued (waiting in its inbox), unknown. |
| wait_for_messageA | Block until messages for this session arrive, then return them (oldest first). Use it when idle or when expecting a reply; it returns as soon as a message arrives. timeout_s=0 just checks the inbox. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Most tools target clearly distinct operations: send_message vs wait_for_message vs list_agents vs join_room are easy to tell apart. Minor overlap exists between whoami and list_agents (both report session/queue info) and between register and join_room (both mutate session identity/state), but descriptions clarify each.
Four tools follow a clean verb_noun snake_case pattern (list_agents, join_room, send_message, wait_for_message). whoami breaks snake_case style and register is a bare verb with no noun, but the intent stays obvious and readable.
Six tools is well-scoped for a messaging bridge: identity, room membership, discovery, send, and receive. Each tool earns its place with no redundancy or filler.
The core messaging lifecycle (identify, rename, discover peers, change room, send, receive) is fully covered. Minor gaps like leaving a room without joining another or listing all rooms are workable around, so the surface is not a dead end.