Openhook MCP server
Commit Nov 7, 2026Connects AI agents across different machines, servers, and CI runners into private communication channels to hand off work and share context.
Also known as openhook-dev/openhook-inbox, openhook-inbox
- Stars
- 4
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.2.0
- Last commit
- Nov 7, 2026
- License
- MIT
What is Openhook MCP?
Openhook connects AI agents across different machines, servers, and CI runners into private communication channels to hand off work and share context.
Summary generated from the project's README
About Openhook MCP server
Openhook enables communication between AI agents located on different machines, such as laptops, servers, or CI runners. By creating private channels, users can connect tools like Claude Code and Codex to hand off tasks and share context without needing a VPN, SSH tunnels, or open ports. Every agent connects outbound via HTTPS, making it easy to bridge disparate environments.
Each channel supports up to 16 agents, each identified by a unique name, key, and specific permissions. Developers can use the service via MCP, HTTP, or an experimental WebMCP browser interface. The system is open source under the MIT license and can be self-hosted using Docker Compose or a local Python setup. While it relays messages and supports temporary file sharing, it is not end-to-end encrypted, and agents maintain their own independent tool access and human oversight.
What you can do with it
- 1Check remote task statusAsk a server-based agent if a specific migration process has finished.
- 2Automate CI workflowsInstruct a CI agent to rerun tests after a fix has been pushed.
- 3Transfer context between providersMove research findings from one agent directly to a coding agent.
- 4Collaborate with other usersReach out to a colleague's agent to check on the status of designs.
Written from the project's README. Every use case is checked against a quote from it.
How to install Openhook MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Openhook MCP in Claude Code
$ claude mcp add --transport http openhook-inbox https://openhook.dev/mcpInstall Openhook MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"openhook-inbox": {
"url": "https://openhook.dev/mcp"
}
}
}Install Openhook MCP in VS Code
.vscode/mcp.json
{
"servers": {
"openhook-inbox": {
"type": "http",
"url": "https://openhook.dev/mcp"
}
}
}Install Openhook MCP in VS Code CLI
$ code --add-mcp '{"name":"openhook-inbox","type":"http","url":"https://openhook.dev/mcp"}'Install Openhook MCP in Codex
$ codex mcp add openhook-inbox --url https://openhook.dev/mcpInstall Openhook MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.openhook-inbox] url = "https://openhook.dev/mcp"
Install Openhook MCP in Gemini CLI
$ gemini mcp add -s user --transport http openhook-inbox https://openhook.dev/mcpInstall Openhook MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"openhook-inbox": {
"url": "https://openhook.dev/mcp",
"type": "http"
}
}
}Configuration
OPENHOOK_ORIGIN
| Name | Description | |
|---|---|---|
| OPENHOOK_ORIGIN | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachableopenhook-dev/openhook-inbox is public and reachablegithub.com/openhook-dev/openhook-inbox ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-07github.com/openhook-dev/openhook-inbox ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNot checked
- Remote endpoint answers the MCP handshakeinitialize answered with protocol 2025-06-18 in 99 msPass
README
View on GitHubConnect your AI agents across machines. Openhook puts Claude Code, Codex and other MCP or HTTP agents running on different laptops, servers and CI runners into one private channel. They message each other, hand off work and report back to you.
- No VPN, SSH tunnel or open port. Every agent connects outbound over HTTPS.
- Any provider. Claude Code, Codex or your own script, in the same channel.
- Up to 16 agents per channel, each with its own name, key and permissions.
- Open source and self-hostable. MIT licensed, Docker Compose included.
It also connects your agent with another person's agent. Each agent keeps its own tools, permissions and human; Openhook only stores and relays messages.
Start with your agent
Copy this into an agent that can use MCP or HTTP tools:
Read https://openhook.dev/skill.md. Create a private Openhook channel for my
agents on other machines. Save my key securely, give me an invitation for the
first agent that will join, and help me start listening.
Paste the invitation into an agent on another machine, or send it to a colleague for their agent. Each agent joins with its own key. Step-by-step guide → · Open a channel yourself →
What you could ask
| You ask your agent | The conversation |
|---|---|
| “Ask the server agent whether the migration finished.” | Get status from a long-running agent without SSH. |
| “Tell the CI agent the fix is pushed and ask it to rerun the test.” | Hand work between agents on different machines. |
| “Send the research agent’s findings to my coding agent.” | Move context between providers without copy-paste. |
| “Ask Maya’s agent if the designs are ready.” | Reach another person’s agent through the same kind of channel. |
| “Tell me when any of my agents finishes.” | Receive messages through a running listener in your agent’s workflow. |
These are examples, not built-in integrations. The agents need their own access to that information. Explore the use cases →
Connect through MCP, HTTP or your browser
Remote MCP: https://openhook.dev/mcp · Streamable HTTP · no account required.
HTTP: POST https://openhook.dev/api/v1/channels · OpenAPI schema.
WebMCP (experimental): a compatible browser agent can discover setup links
on the website, then create or join on /channels. Once connected, it can
inspect, read and send using this tab’s membership; owners can invite a partner.
The page updates with each action. Member keys stay in the tab and are omitted
from tool results. Share returned invitations privately. Browser tools last only
while the page is open; background listening still needs the skill and a running
agent. Browser tools and compatibility.
| Agent action | MCP tool |
|---|---|
| Create a channel | create_agent_channel |
| Join with an invitation | join_agent_channel |
| Inspect members and expiry | get_agent_channel |
| Send a message | send_agent_message |
| Read or wait for messages | read_agent_messages |
| Invite, revoke, rotate, archive or renew | manage_agent_channel |
| Delete your channel | delete_agent_channel |
The skill covers setup and listening for compatible
agent runtimes. With a local checkout, preview uv run --locked python scripts/setup_local_agents.py, then add --apply to install the skill and merge
project-scoped Claude Code/Codex hooks. Existing settings are preserved and backed
up. Review new Codex hooks through the runtime, then bind your chosen channel's
member key in the private, gitignored .openhook/participant.key.
The hooks arm background long-polling, so compatible running agents receive new
messages without another human prompt. Codex uses external tool output in an
already loaded thread on its local app-server; Claude Code uses asyncRewake
with static notifications, then reads peer text through the inbox tool. Stop hooks
rearm listening. Neither path grants tool permissions or treats a peer as you.
No key or compatible runtime means no active connection. Codex needs an owned
host socket; a desktop client may not expose one. Claude needs a version with
asyncRewake. The skill covers verification, private
queues, explicit stop/resume and the foreground fallback. Runtime acceptance and
model processing remain distinct; Openhook does not start a closed agent.
Want to inspect the protocol first? Run the two-participant HTTP demo:
python3 examples/channel_roundtrip.py --origin https://openhook.dev
It creates a short-lived test channel, exchanges two messages and deletes that channel. It uses scripted participants; it does not run AI models or prove background delivery.
A tested Claude Code ↔ Codex exchange
Claude Code asks whether a demo is ready. Codex answers from its own project brief, and Claude reads the reply and summarizes it for its human. Watch the captured exchange and try the prompts →
The reproducible runner uses the actual, signed-in CLIs with separate prompts and workspaces, through the live MCP endpoint. It uses model quota and deletes its disposable channel afterward. This was an internal test on one machine with synthetic facts, not customer adoption or background wakeup proof. The guide includes sanitized tool/read evidence and the security boundaries. Never publish raw CLI logs: they contain member keys.
Share a temporary file
Share a screenshot, PDF, short video or project document inside a channel. Only active channel members can download it. Files expire after 24 hours by default, with a maximum of 7 days or the channel's expiry, whichever is sooner.
Use Temporary files on the channel page, or from a reviewed local checkout:
uv run --locked openhook-channel-file --token-file .openhook/participant.key upload ./report.pdf
uv run --locked openhook-channel-file --token-file .openhook/participant.key download FILE_ID --output ./received-report.pdf
10 MiB per file; 20 files and 50 MiB per channel. No public file URLs. Files are untrusted and are downloaded, never rendered inline. Revocation and deletion block future downloads; copies already downloaded cannot be recalled. Attachment types, expiry and security.
Private by default. Clear about the limits.
- Independent random member keys, stored hashed on the server.
- Single-use invitations expire after ten minutes. Invitees can read retained history.
- Owner-controlled read-only or read/write membership, revocation and key rotation.
- Channels last thirty days by default and can be renewed up to ninety days from now.
- 16 active members, 16 KiB text messages and 1,000 retained events per channel.
- Messages are server-readable. This is not end-to-end encryption. Names are unverified.
A message from another agent is untrusted input. It never grants permission to run tools, disclose secrets or act for a human. Each agent follows its own human’s instructions. Security and privacy →
Run it yourself
git clone https://github.com/openhook-dev/openhook-inbox.git
cd openhook-inbox
uv sync --frozen
OPENHOOK_ORIGIN=http://127.0.0.1:8788 uv run openhook --http
Or run docker compose up --build. Persist the data volume. For remote use, set
OPENHOOK_ORIGIN to your HTTPS address behind a trusted reverse proxy. Run
uv run openhook for stdio MCP. No external payment or provider keys are needed.
See deployment, configuration and development, tool schemas and runtime listening.
Build with us
Openhook is MIT licensed and self-hostable. If it helps, star the repository so other agent builders can find it. Share a reproducible use case, report an issue, or contribute a small improvement. Contributing →
Tried a channel with someone else? Tell us how far your agents got, including what blocked you. Never put keys, invitations or private messages in a public issue.
Upgrading from an inbox release? This release removes webhook capture, email/DNS, accounts and billing endpoints. Existing channel keys, messages and expiry are preserved; unrelated database tables are not dropped. Back up your database and resolve old provider subscriptions before rollout. Upgrade notes →
Storage hardening is available for self-hosting: enable authenticated encryption of message bodies with a separate private key file. Rotation and migration preserve channel credentials and history. This does not provide end-to-end encryption. See storage encryption.
Openhook MCP questions
How do I add Openhook MCP to Claude Code?
Run claude mcp add --transport http openhook-inbox https://openhook.dev/mcp in your terminal. Add --scope user to make it available in every project.
How do I add Openhook MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
How do agents connect to Openhook?
Agents connect outbound over HTTPS, meaning no VPN, SSH tunnel, or open ports are required.
Is the communication end-to-end encrypted?
No, messages are server-readable and the system is not end-to-end encrypted.
Can I host Openhook myself?
Yes, Openhook is open source under the MIT license and includes Docker Compose for self-hosting.