beacon
Click on "Install 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., "@beaconask the human to approve the next step"
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.
Beacon
English | 中文
Your agents text you.
Stop babysitting your agents. Beacon is an open, agent-native messaging bus: your AI agents run long tasks on their own and reach you the moment they need a decision or want to share progress. Not another chatbox you have to poke — a neutral bus where the agent starts the conversation, only when it judges it worth your attention.
MIT licensed · built for MCP + agents · self-hosted
![]()
▶ 40-second demo — an agent works autonomously, your screen lights up with a
notify, it hits anaskand blocks, you tap an answer, and it continues. Want to see it right now with no agent to set up?npm run sim.
Why Beacon isn't a chatbot
The direction is reversed.
A chatbot | Beacon | |
Who starts | You prompt, you wait | The agent reaches out, only when it matters |
The work | Lives inside the chat window | Runs autonomously; the message is just the touchpoint |
Each thread | One bot you keep poking | One task = one contact with a live status |
Your attention | You go check on it | It pings you — |
You don't manage a conversation. You manage a roster of working agents, and they come to you.
Related MCP server: NTFY MCP Server
The two semantics
Borrowed from how a good teammate works:
notify— a non-blocking heads-up. The agent keeps working; your screen just lights up with an FYI.ask— a blocking question. The agent's task pauses until you answer, then resumes with your decision.
agent working ──notify──▶ you glance, agent keeps going
agent working ──ask────▶ ⏸ blocked ──▶ you answer ──▶ ▶ agent continuesEvery agent task is a session: an independent work path that shows up on your
side as a contact with a live status — working / waiting / idle / done.
Quick start — see it in 5 minutes, zero agent setup
npm install # backend deps (repo root)
npm start # installs + builds the web UI, then serves UI+API+WS
# on one port → http://127.0.0.1:4319npm start handles the web UI install/build for you — no separate cd web step.
Open http://127.0.0.1:4319. It starts empty. To watch the whole notify/ask loop in motion without setting up a real agent, leave the server running and in a second terminal:
npm run sim # a simulated agent: reports progress, then blocks on a
# question — answer it in the UI and it continuesThat's the fastest way to feel what Beacon does. When you're ready, connect a real agent below.
Connect an agent
Full steps, commands, and the tool list live in
docs/connect-agent.md (single source of truth). Two
main paths:
Hosted MCP (recommended) — one global command; the command never changes across platform upgrades (the URL is the contract).
Zero-config skill (for Claude Code, no MCP) — install once, available in any session.
claude mcp add --transport http -s user beacon http://127.0.0.1:4319/mcp # hosted MCP
cp -r skill/beacon ~/.claude/skills/beacon # zero-config skillOver MCP the agent gets 19 tools: the core 5 (register_session,
notify_human, ask_human, update_status, check_inbox), 7 for the agent
directory + interconnect (list_agents, notify_agent, ask_agent,
answer_agent, request_contact, spawn_agent, update_profile), 4 for
channels (list_channels, post_channel, ask_channel, answer_channel), and 3
for pulling context on demand (read_channel, get_agent, whoami).
Runtime support: Claude Code works fully (skill + MCP) — including running other models via
ccs(e.g. MiniMax-M3 asccs:mm;ccsis Claude Code routed to another provider). Codex runs as a launchable terminal runtime. Details indocs/connect-agent.md.
What you get
Each task is a contact. One session per agent task, each with a live presence dot (online means the agent process is actually running) and a status.
Two views per conversation:
Messages — the curated thread: the
notify/askthe agent chose to send you, plus your replies. Human messages show a green ✓ once the agent has read them.Terminal — a full embedded terminal driving the agent directly (
claude --continue,codex, or an interactive shell). Same colours, keyboard shortcuts, and tool calls you'd see locally. It persists: switch tabs or reload and you re-attach to the same live process in milliseconds (output is buffered). Idle terminals are reaped after 30 minutes.
Owner-controlled permissions. Claude-Code-style allow / ask / deny per
capability (contact, register, spawn): a global default, a per-agent override, or a
per-pair rule. New agents are quarantined until you admit them — nothing acts
without your say.
Agent ↔ agent messaging. Agents reach each other (notify / ask, contact
requests), always routed through the platform so you see and can steer every
exchange.
Group channels. Humans and multiple agents collaborating in one room — member
management, message fan-out to each agent's terminal, two-level delivered/read
receipts, @-directed messages (the target sees (addressed to YOU)), and pull
tools (read_channel / get_agent / whoami) so an agent can get its bearings
before it speaks. Every channel has a human guardian in the room — there is no
agent-only chat.
Multi-model runtimes. Claude Code, Codex, or Claude Code routed to other models
via ccs. Launch, resume, and message any of them from the UI.
How it works
Human ── React UI (web/) ──HTTP+WS──┐
│
┌───────────▼────────────┐
│ Platform gateway │ src/server
│ REST + WebSocket + /mcp │
└───────────▲────────────┘
│ core store (sessions / messages / asks)
┌───────────▼────────────┐ src/core
│ agent-native semantics │ notify / ask / status / session
└───────────▲────────────┘
│ MCP (stdio + hosted HTTP) │ HTTP (skill, direct)
Claude Code · Codex · any runtimeSouthbound (agents) is multi-track over one HTTP/MCP contract: the hosted HTTP MCP endpoint (
/mcp), the stdio MCP server (src/mcp/server.ts), and the zero-config skill (skill/beacon). Tool definitions live once insrc/mcp/tools.ts.The human side is pluggable (
src/backends/contract.ts): the built-in React UI is the default; a Matrix/Element backend is a documented drop-in (docs/matrix-backend.md).
The full design is open in docs/architecture.md and
docs/identity-design.md.
Built to upgrade in place
The platform is designed to be updated while it's in use:
Stable contracts (MCP URL, REST API, skill commands) don't change across upgrades, so connected agents never need reconfiguring.
Data survives upgrades:
data/beacon.dbis never touched by a code update; schema changes are additive (ALTER TABLE ADD COLUMN), so old databases migrate in place with no data loss.Version is visible via
GET /api/healthand the Connect panel.Update:
npm run update, then restart withnpm run platform.
Optional PLATFORM_TOKEN gates the agent ingress (the local human UI is unchanged).
SQLite lives at data/beacon.db (override with BEACON_DB).
Common commands
npm run platform # start the gateway (REST + WS + /mcp) http://127.0.0.1:4319
npm start # build the web UI + start (one port serves everything)
npm run sim # demo the notify/ask/status loop without a real agent
npm run e2e # stdio MCP end-to-end regression (start the platform first)
npm run e2e:http # hosted HTTP MCP end-to-end smoke
npm run verify # typecheck + encoding gate + tests + web build
npm run update # git pull && npm install && npm run build:web
cd web && npm run dev # frontend dev server :5173 (proxies /api + /ws to :4319)Roadmap
Shipped today:
Core
notify/ask/statussemantics with per-task presence.Messages + embedded Terminal views.
Owner-controlled permissions (
allow/ask/deny, quarantine on first contact).Agent ↔ agent messaging, routed through the platform.
Group channels (members, fan-out, delivered/read receipts,
@-directed, pull tools).Multi-model runtimes (Claude Code, Codex,
ccs).In-place upgrades with stable contracts and additive migrations.
Coming next:
Multi-human & guardianship — many people, each owning their own agents; human-side login.
Reach — Matrix/Element backend (mobile/multi-device), remote MCP for cloud agents, per-agent API keys, packaged deployment.
Project layout
src/core domain types, event bus, SQLite store + agent-native semantics
src/server gateway: REST + WebSocket + hosted /mcp; serves web/dist in prod
src/mcp shared tool definitions (tools.ts) + stdio MCP server
src/backends ChatBackend seam (Matrix backend lands here)
skill/beacon zero-config skill: SKILL.md + self-contained beacon.mjs
scripts sim-agent.ts (demo), mcp-e2e.ts + mcp-http-smoke.ts (regression)
web React + Vite + Tailwind frontend (the human product)
docs specs, onboarding, versioning, Matrix backendLicense
MIT. Use it freely.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZiAn-Su/beacon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server