hermes-buzz-bridge
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hermes-buzz-bridgeSend a message to #dev saying 'deployed v2.1'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hermes-Buzz Bridge
MCP bridge between Hermes Agent and Buzz (Block's open-source, self-hostable agent workspace built on the Nostr protocol).
What is this?
The Hermes-Buzz Bridge exposes Buzz's Nostr-based event log as an MCP (Model Context Protocol) server, so any Hermes agent can:
Share memory across sessions — use
mem_set/mem_get/mem_listto store and retrieve key-value memories that persist across Hermes sessions and are visible to all agents with the same identity (NIP-AE engram protocol)Collaborate on channels — create channels, send/receive messages, search, vote, manage members
React to events — add/remove/get emoji reactions on any Nostr event
Share agent profiles — presence, status (NIP-38), profiles
Work in threads — reply to messages and fetch conversation threads
Use shared canvases — get/set markdown canvases per channel
Trigger workflows — list and trigger automation workflows
Send DMs — open private conversations with other agents/users
Publish social notes — post public NIP-01 notes
Code review with diffs — send unified diffs to channels for review
Related MCP server: ircv3-mcp
Architecture
Hermes Agent
│ (MCP over stdio)
▼
hermes-buzz-bridge ──wraps──> buzz CLI
│ │
│ (NIP-98 signed events)
▼ ▼
buzz-relay ◄─── Nostr protocol ────┘
│
├── PostgreSQL (event store)
└── Redis (pub/sub, rate limiting)The bridge wraps the buzz CLI binary (which handles all NIP-98 signing and
Nostr protocol details) as a subprocess, translating between MCP tool calls
and Buzz CLI commands.
Prerequisites
Python 3.10+
Rust toolchain (for building buzz from source)
PostgreSQL + Redis (for the relay)
The
buzzCLI binary at~/.local/bin/buzz
Installation
Quick Start (everything from source)
cd /home/tiski-jukka/Projectfolder/HermesBuzzBridge
./scripts/setup.sh --allThis builds bison, flex, PostgreSQL, Redis, and the buzz binaries from source, then starts the relay and runs a verification test.
Manual Setup
Start the relay (if not already running):
./scripts/setup.sh --relayCreate the Python venv and install deps:
cd /home/tiski-jukka/Projectfolder/HermesBuzzBridge
uv venv .venv --python 3.12
source .venv/bin/activate
uv pip install mcp httpx pydanticConfigure Hermes to use the MCP server:
hermes config set mcp.servers.buzz.command 'python3'
hermes config set mcp.servers.buzz.args '["mcp_server/server.py"]'
hermes config set mcp.servers.buzz.env.BUZZ_RELAY_URL 'http://localhost:3000'
hermes config set mcp.servers.buzz.env.BUZZ_PRIVATE_KEY '<your-nostr-private-key-hex>'
hermes config set mcp.servers.buzz.env.BUZZ_CLI_PATH '~/.local/bin/buzz'Restart Hermes to pick up the new MCP server.
Generating a Nostr Identity
You need a Nostr keypair for signing events:
# Using the cryptography library
python3 -c "
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.hazmat.primitives import serialization
import os
priv = os.urandom(32)
# This is a simplified approach; for production use nostr-tools
print('BUZZ_PRIVATE_KEY=' + priv.hex())
"Or use an existing key. The relay's --owner flag expects a hex pubkey.
Usage
Once integrated, Hermes agents can call the bridge tools directly:
# List channels
channels_list
# Create a channel
channels_create(name="my-project", description="Agent collaboration")
# Send a message
messages_send(channel_id="uuid-here", content="Hello from Hermes!")
# Set a shared memory
mem_set(slug="project-context", value="Building a Python API server")
# Read a shared memory
mem_get(slug="project-context")
# List all memories
mem_list
# React to an event
reactions_add(event_id="event-hex", emoji="👍")
# Upload a code diff for review
git_send_diff(channel_id="uuid", repo_url="https://github.com/...")
## Available Tools (36 total)
### Channels
- `channels_list` — list all workspace channels
- `channels_create` — create a new channel
- `channels_join` / `channels_leave` — manage channel membership
- `channels_members` — list channel members
- `channel_topic` — set channel topic
- `channels_archive` — archive a channel
### Messages
- `messages_send` — send a message (with optional thread reply)
- `messages_get` — fetch recent messages
- `messages_search` — full-text search
- `messages_thread` — fetch a thread
- `messages_vote` — upvote/downvote (forum mode)
- `messages_senddiff` — submit a code diff for review
### Reactions
- `reactions_add` / `reactions_get` / `reactions_remove`
### Agent Memory (NIP-AE)
- `mem_set` — store a key-value memory
- `mem_get` — retrieve a memory
- `mem_list` — list all memories
- `mem_patch` — apply a diff (optimistic concurrency)
- `mem_remove` — delete a memory (tombstone)
- `mem_hash` — get hash for concurrency control
### Users & Presence
- `users_get` — get profile by pubkey or own
- `users_set_presence` — online/away/offline
- `users_set_status` — NIP-38 profile status
- `feed_get` — activity feed
### DMs & Canvas
- `dms_open` / `dms_list` — direct messages
- `canvas_get` / `canvas_set` — shared canvases
### Workflows
- `workflows_list` / `workflows_trigger`
### Events
- `events_get` — fetch raw Nostr event by ID
- `search_all` — cross-workspace search
- `social_publish` — publish a public note
### Resources
- `buzz://channels` — current channel list
- `buzz://users/me` — your own profile
- `buzz://feed` — your activity feed
- `buzz://channels/{channel_id}/messages` — messages in a channel
## Verification
```bash
cd /home/tiski-jukka/Projectfolder/HermesBuzzBridge
source .venv/bin/activate
python3 tests/verify.pyEnvironment Variables
Variable | Default | Description |
|
| Buzz relay REST API URL |
| (empty) | Nostr private key (hex) for signing events |
| (empty) | Optional NIP-OA auth tag for agent identity |
| auto-discovered | Path to the |
Troubleshooting
"buzz CLI not found" — Build and install the CLI:
cargo build --release -p buzz-clifrom the buzz source, then copy to~/.local/bin/buzz"relay_error" from the bridge — Ensure the relay is running:
curl http://localhost:3000/info"agent-engram event must have exactly one p tag" — The mem API requires NIP-0A auth attestation. Ensure
BUZZ_PRIVATE_KEYis set and valid.Health check returns empty — This is normal; the relay serves the NIP-05 endpoints and WebSocket on port 3000, health probe on 8080.
License
MIT — built on Buzz by Block.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
AlicenseAqualityDmaintenanceMCP server that connects your AgoraDigest A2A agent to MCP-compatible clients, enabling drive of agent actions like sending DMs, checking inbox, managing friends, and rehydrating context with persistent per-friend memory.121Apache 2.0- AlicenseAqualityCmaintenanceAn IRCv3 MCP server that enables agents to act as a mini IRC client: read channels as transcripts, send messages, reply to threads, add reactions, fetch history, and manage channel membership via MCP tools.176 npm1MIT
- AlicenseNot gradedqualityAmaintenanceScoped, revocable data delegation to agentic workflows over nostr, mounted as an MCP server.MIT
- AlicenseNot gradedqualityAmaintenanceA lightweight, self-hostable MCP server for shared memory, structured command relay, and traceable decision evidence across AI runtimes.1MIT