pairdown
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., "@pairdownjoin the 'Design' room and summarize the recent comments"
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.
Pairdown
Multiplayer markdown, with agents in the room.
One server holds every document. People open a link and edit the same document together, live, and leave comments in the margin. Anyone in the room can bring their own Claude Code session in with them — it appears as a named participant, sits quiet until somebody mentions it, and then answers in the thread it was called into.
It works in a browser with nothing installed. Rooms, editing, comments and sharing all work with no agent attached anywhere; the Claude Code plugin is the optional way to attach a session, and it never holds the document itself.
Run the server
Hosting needs a checkout and bun:
bun install
bun run build # bundles the browser client into public/js
bun run src/server.ts # http://127.0.0.1:8790One process serves every room. / is the room index — every room on the
server, linked to its own /r/<id>, with a form to create one. Rooms persist
under data/rooms/, one file each, and outlive the process.
Related MCP server: agent-room-mcp
Bring an agent
Install the plugin from this repository — the repository is its own marketplace, so this is two commands rather than one:
claude plugin marketplace add rohanrichards/pairdown
claude plugin install pairdown@pairdownInstalling asks for four things, and the first two matter:
Setting | Why |
Agent handle | what people type after |
Your name | shown beside the handle, so people can see whose agent it is |
Room server | leave alone for a server on your own machine; set it to someone else's to join their room |
Shared key | only when their server is behind one. It is a shared demo key rather than a personal credential, and is stored in plain text in |
Change any of them later with /plugin configure pairdown.
You need node (22 or newer) on your PATH. You do not need to clone this
repository or install its dependencies — the agent ships as a single bundled
file and runs straight from it.
bun is only needed to host a room server, because the server is built on
Bun.serve. Bringing an agent to somebody else's room does not need it.
For working on the plugin itself, claude --plugin-dir . loads it from a
checkout without installing, and picks up your edits on /reload-plugins.
The plugin runs an MCP server that connects to the room server as a client. Its
pairdown binary, on PATH while the plugin is enabled, starts the room server
on demand if it isn't already up.
Once attached, a session calls room_list, then room_create or room_join,
then works with read, outline, search, edit, append, insert,
comments, reply and resolve.
An agent is dormant until named. Nothing reaches a session unless a comment mentions its handle, so a room with four agents in it is as quiet as a room with none until somebody asks for one of them.
The same four settings are environment variables, for running the agent outside the plugin:
Variable | What it does |
| this session's handle, what people type after |
| whose agent it is, shown beside the handle |
| room server to attach to (default |
| shared key, when the server is gated |
An environment variable wins over the plugin setting of the same name, which is how you run a second agent under a different handle without touching your configuration:
PAIRDOWN_AGENT=scout PAIRDOWN_OWNER=Rohan claudeUpdating
Installing does not move an existing install to a newer version — it reports that the plugin is already installed and leaves the running version alone. To pick up a new release:
claude plugin marketplace update pairdown
claude plugin uninstall pairdown@pairdown
claude plugin install pairdown@pairdownCheck what is actually running with claude plugin list; it is the version
number there that matters, not what is sitting in the cache.
Mentioning a handle notifies that session immediately; an untagged comment waits
until someone presses "send to claude". Immediate notification additionally
needs the channels research preview, and on Team/Enterprise an org admin must
set channelsEnabled — without it the notification is dropped silently and
everything else still works.
The shared-key gate
Setting PAIRDOWN_SECRET puts the whole server behind one key: browsers get a
form and then a session cookie, agents and scripts send
Authorization: Bearer <key>. Unset, the server is open, exactly as before.
PAIRDOWN_SECRET="$(openssl rand -base64 32 | tr -d /+= )" bun run src/server.tsThis is authentication, not authorisation. One key means everyone holding it is the same principal: nobody can be told apart, nobody can be revoked individually, and every room on the server is behind the same door. It exists so a supervised demo can go through a tunnel without handing the box to whoever finds the URL. It is not a way to leave a server up.
What it does do properly is the part this kind of gate usually gets wrong: the
comparison is constant-time, the cookie carries an HMAC of the key rather than
the key, and the websocket upgrade is gated along with the pages — gating the
HTML but not /ws would lock the door and leave the window open.
Test
bun test
bun run src/smoke.tssmoke.ts seeds a throwaway room, spawns the MCP server against it, and drives
the whole tool surface end to end.
Not here yet
Accounts, SSO, per-room permissions, hosting. Local first, a tunnel to demo.
See docs/superpowers/specs/2026-08-19-spec-room-design.md for the design. It
and the plan beside it are dated records written under the project's first name,
and are left as they were.
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.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to communicate with each other through Slack-like room-based channels with messaging, mentions, presence management, and long-polling for real-time collaboration.194MIT
- AlicenseNot gradedqualityBmaintenanceEnables Cursor agents to communicate via a shared chat room, allowing them to ask questions, share status, and warn about conflicts while collaborating on the same repo.710MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.300,650MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to collaborate in shared rooms with people, managing room presence, message delivery, and automatic agent registration via MCP tools.MIT
Related MCP Connectors
Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.
A room-based collaborative platform
MCP-native collaborative markdown editor with real-time AI document editing
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/rohanrichards/pairdown'
If you have feedback or need assistance with the MCP directory API, please join our Discord server