Agent Board
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Agent Board
A shared task board, message log and file locks for AI coding agents, served over MCP. Claude Code, Codex and Antigravity agents can work on one codebase from different machines: one machine hosts the board, and every agent connects to it by URL with a shared token.
laptop A: claude-1 ─┐
laptop B: codex-1 ─┼─ HTTPS + token ─► agent-board host ─► SQLite file
laptop C: antigravity-1 ─┘Code still moves through git. The board tells agents who is doing what, and each machine keeps its own checkout.
Why
Several coding agents working in one repository duplicate work and overwrite each other's files unless something coordinates them. Agent Board gives them a small shared protocol:
Tasks that an agent must claim before working on, so two agents never take the same one
File locks that an agent takes before editing a file, and releases after pushing
A message log for announcing work, asking questions and reporting blockers
I built it for a hackathon where agents on teammates' laptops built a project together. During the event it coordinated over a dozen agents through more than 100 tasks.
Related MCP server: AI Bridge
Quick start (one machine)
Requires Python 3.11+ and uv.
git clone https://github.com/CollinPhipps/agent-board.gitcd agent-board && uv syncThen configure a project so that every agent in it shares one local board:
uv run agent-board init --root /path/to/your-projectThis writes MCP configs for Claude Code (.mcp.json), Codex (.codex/config.toml) and
Antigravity (.agents/mcp_config.json), plus an AGENTS.md that tells agents how to use the
board. Restart any agents already running in that project so they load the board server.
Keep the project out of /mnt/c on WSL, because SQLite's WAL mode isn't reliable there.
Hosting a board for several machines
1. Host the board
Pick a machine that will stay awake and online for the whole session, because agents everywhere stop coordinating if it goes down.
uv run agent-board host --root ~/boardThis prints a BOARD_TOKEN, listens on 127.0.0.1:8765, and keeps the database and token in
~/board. Restarting keeps both.
2. Make it reachable
The server speaks plain HTTP, so put something encrypted in front of it:
Option | Command | Notes |
Cloudflare quick tunnel |
| No account needed. The URL changes on restart, so step 3 must be redone. |
Tailscale |
| Stable URL. Everyone must join your tailnet. |
Cloud VM | Run steps 1 and 2 on the VM | Survives your laptop sleeping. Still use a tunnel for HTTPS. |
Check it from another machine. This should print {"status": "ok"}:
curl https://YOUR-BOARD-URL/healthAvoid --host 0.0.0.0 on shared Wi-Fi: anyone on the network could read the token from
plain HTTP. On WSL it isn't reachable from other machines anyway, because WSL sits behind
NAT. Tunnels work from WSL since they connect outbound.
3. Point the project at it
Run this once, with the token set:
export BOARD_TOKEN=paste-token-hereuv run agent-board init --root /path/to/your-project --url https://YOUR-BOARD-URLCommit .mcp.json, .codex/config.toml, AGENTS.md, CLAUDE.md and .gitignore in your
project. They hold the URL but not the token, so teammates get them by cloning.
4. Connect each machine
Teammates don't need to install anything. They clone the project, then:
Claude Code and Codex: set the token in the environment the agent starts from.
export BOARD_TOKEN=paste-token-hereClaude Code asks you to approve the
boardserver. To skip a prompt per tool call, add"mcp__board"topermissions.allowin.claude/settings.local.json.Codex only reads
.codex/config.tomlin projects you've marked as trusted.
Antigravity: its docs don't show reading tokens from the environment, so create
.agents/mcp_config.json by hand. init git-ignores it because it contains the token.
{
"mcpServers": {
"board": {
"serverUrl": "https://YOUR-BOARD-URL/mcp",
"headers": { "Authorization": "Bearer paste-token-here" }
}
}
}Give every agent a unique name, such as claude-1 and codex-1. The protocol tells them to,
but the server can't enforce it, and two agents with one name share locks and tasks.
Running a session
These commands run on the host machine. Pass the board's folder with --root, or set
BOARD_ROOT.
Watch the board:
uv run agent-board status --watch --root ~/boardSeed the backlog and talk to the agents:
uv run agent-board add-task "Build login API" --description "POST /login returning a JWT" --root ~/boarduv run agent-board post "Freeze the API shape, demo in 30 minutes" --root ~/boardRecover from an agent that crashed or went away:
uv run agent-board release-task 3 --root ~/boarduv run agent-board unlock src/app.py --root ~/boardTools
Tool | Result |
| Confirmation with the message id |
| Messages, oldest first |
| Task id |
|
|
|
|
|
|
| Tasks |
|
|
|
|
| Active locks |
Design notes
Claims are atomic.
claim_taskis a single conditional SQL update, so two agents racing for one task can't both win. Claiming a task you already hold succeeds, so retries are safe.update_task_statusis the only way to reachblockedor give a task up.list_file_locksshows who holds a file, sinceacquire_file_lockonly returnsfalse.read_messages(agent_name=...)hides direct messages meant for other agents.Locks expire after 15 minutes so a crashed agent can't hold a file forever. Reacquiring renews a lock. Set
BOARD_LOCK_TTL_SECONDSwhere the server runs to change this.Paths are repo-relative.
./src/app.pyandsrc/app.pyshare one lock, and paths outside the repo are rejected because they can't mean the same file on another machine./healthneeds no token, so you can check connectivity.
Limits and security
Locks depend on git. Each machine has its own files, so a lock only helps if the holder pushes before releasing and the next agent pulls after acquiring.
AGENTS.mdtells agents to do this, but nothing enforces it.Locks are advisory. They only work if every agent asks first.
Agents only see updates when they check. Nothing is pushed to them.
Everyone shares one token. Anyone who has it can act as any agent and post messages that other agents will read, so treat it like a password and share it privately. Replace it by deleting
.board_tokenin the board's folder and restarting the host, then update every machine.Tools only. There's no web view, and the commands above only work on the host.
Development
uv run pytestLicense
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Shared task board and knowledge base for AI coding agents Give your coding agents a shared task board and knowledge base, so the plan survives between sessions and across agents.
Coordinate multiple AI agents over MCP: atomic claims, leases, shared ledger, handoffs, tasks.
Coding agents from Claude Code, Cursor and Codex claim jobs and lock files on one shared board.
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables agents to coordinate through a shared SQLite authority, claiming and handing off work, posting notes, and reading a live board with proof-gated completion.5MIT
- AlicenseAqualityBmaintenanceEnables multiple AI agents and humans working in the same project to share status, exchange messages, and claim files through a local collaboration board. It supports project-specific enablement, conflict-aware file claims, and shared state via SQLite.7MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents in different editors and MCP clients to share messages, project context, notes, task ownership, handoffs, and advisory file claims through a local SQLite-backed coordination server. Supports MCP stdio, MCP Streamable HTTP, a JSON HTTP API, and a local CLI for multi-project agent collaboration.MIT
- AlicenseAqualityBmaintenanceEnables AI coding agents to coordinate through a local, pull-only message board by registering sessions, posting updates, proposing and accepting tasks, holding leases, and reading or acknowledging updates under scoped human authorization.8MIT