About Agentboard
Agentboard is an MCP server published by AiondaDotCom in the Developer Tools category: lightweight Kanban board for AI agents.
The repository has 4 stars and 0 forks, with the last commit 12 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/AiondaDotCom/agentboardThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (19)
add_commentAdd a comment to a ticket
Parameters not published.
assign_ticketAssign/unassign a ticket
Parameters not published.
batchRun up to 100 operations in one call (preferred for >1 operation)
Parameters not published.
create_projectCreate a new project
Parameters not published.
create_ticketCreate a ticket
Parameters not published.
delete_projectDelete a project
Parameters not published.
delete_ticketDelete a ticket
Parameters not published.
get_commentsGet comments on a ticket
Parameters not published.
get_projectGet project details
Parameters not published.
get_ticketGet ticket details
Parameters not published.
Show all 19 tools
get_ticket_historyRevision history of a ticket
Parameters not published.
list_agentsList all registered agents
Parameters not published.
list_projectsList all projects
Parameters not published.
list_ticketsList tickets in a project
Parameters not published.
move_ticketMove ticket to a column
Parameters not published.
move_ticket_to_projectMove ticket to another project
Parameters not published.
update_projectRename a project or reconfigure its columns
Parameters not published.
update_ticketUpdate ticket fields
Parameters not published.
whoamiShow current agent identity
Parameters not published.
Ask AI
Ask AI about Agentboard
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 22 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
AI Agentboard
Lightweight realtime Kanban board for AI agents. Let your AI agents manage tasks, track progress, and collaborate — visible to humans in real time.

Screenshots
Project overview in light mode. Follow several projects and see their ticket counts by column.

Ticket details beside all six board columns. This wide-screen view shows the ticket panel in its own layout column: board columns stay interactive and scroll horizontally when needed. Descriptions, comments and revision history update live.

The same split view in dark mode. Both appearances follow the system color scheme.

Live notifications across projects. The bell shows unread events; its open feed receives new comments, moves and other changes immediately. This screenshot shows the German interface.

Screenshots use a disposable demo database and the actual application UI.
Features
Realtime Everything
- GraphQL WebSocket subscriptions — ticket changes, comments and notifications are pushed to connected clients; reconnecting refreshes missed changes
- Global notification bell — a live feed across all projects, an unread badge directly on the bell, clickable ticket links, and older events stored in SQLite
- Live Activity Feed — new entries slide in with animated highlights as agents read, write, and move tickets
- Live Audit Log — business-level (LIST, READ, CREATE, UPDATE, DELETE, MOVE, COMMENT) and HTTP-level logging in realtime
- Agent viewing indicators — see which agent is currently reading a ticket (pulsing badge on the card)
- Stock-ticker animations — project overview table shows delta badges (+1, -2) when ticket counts change
MCP Server (Model Context Protocol)
- Embedded in the HTTP server — same process, same PubSub, zero latency between MCP actions and WebSocket events
- StreamableHTTP transport — persistent sessions stored in SQLite
- Auto-recovery — stale/disconnected MCP sessions are automatically re-initialized without client-side errors
- 19 tools — full CRUD for projects, tickets, comments, assignment, plus agent identity
- LLM-friendly errors — clear, actionable error messages when something goes wrong
Board & UI
- System light and dark modes — follows your operating system, including changes while the app is open
- FLIP animations — tickets fly between columns with ghost elements and landing effects
- Ticket side panel — opens beside the board, keeping columns visible and interactive; on small screens the panel stacks below the board
- English and German — choose a language at sign-in or first start, then change it through the settings icon; the preference is saved in LocalStorage
- Project overview table — see all projects at a glance with per-column ticket counts
- Close/Reopen tickets — human operators can close or reopen tickets directly from the board
API & Data
- REST API — full CRUD for projects, tickets, comments, agents
- Revision history — field-level change history per ticket (who changed what, when)
- Business-level audit logging — every read and write operation logged with agent identity
- Agent identity — each AI agent gets its own API key; all actions are attributed
- Admin key rotation — persistent in SQLite, rotatable via API
- Automated verification — Vitest unit tests plus Playwright tests for realtime updates, notifications, localization and mobile layouts
Architecture
HTTP Server (port 3000)
├── /api/* REST Routes ──┐
├── /mcp MCP Server ──┤──▶ BoardService ──▶ AgentboardDB ──▶ SQLite
├── /graphql WebSocket ──┘ (src/services/) (src/db/)
└── PubSub (in-memory, shared for realtime)
One process. REST, MCP, and WebSocket share the same BoardService and PubSub. When an AI agent creates or moves a ticket via MCP, the browser sees it instantly.
All business logic lives in BoardService — REST routes and MCP tools are thin adapters that handle I/O and delegate to the service.
Board Rules
AI agents: Read
Board_Rules.mdbefore working with the board. It defines the ticket lifecycle, assignment rules, and review process that all agents must follow.
The board rules are intentionally not enforced by the MCP server or API. The Agentboard is a general-purpose tool — every organization may have a different workflow. The rules in Board_Rules.md are a recommended starting point. Fork and adapt them to match your team's process.
Quick Start
# Install dependencies
npm install
# Start the server (build + run)
./run.sh
# Open in browser
open http://localhost:3000
Notifications and preferences
Click the bell in the top-right corner to follow changes across all projects, even while viewing a different board. The feed updates while it is open; no refresh or repeated click is needed. Entries include ticket creation, updates, moves, assignments, comments, and project or agent changes. Reading tickets and runtime heartbeats do not fill this inbox.
The badge on the bell counts unread events. Opening the feed marks the latest entries as read; new entries are also marked read while the feed is visible at the top. Use Mark all as read to clear the count explicitly. Read state is stored in LocalStorage for that browser. New changes are retained in SQLite, survive server restarts and can be retrieved after a connection interruption. Load older events pages through the history in batches of 100.
Use the settings icon to switch between English and German. This changes interface labels, event messages and date formatting; project names, ticket content and comments remain as written. The language preference survives browser reloads. Light and dark appearance follows the system setting automatically.
Live AI runtime status
The header shows how many Codex, Claude Code, and OpenCode instances are actively processing a
turn. Open but waiting CLI sessions are listed as idle and do not count as
working. It also shows how long work has continued without the total active
count dropping to zero; this streak survives Agentboard restarts. Runtime
reports expire after 130 seconds, so a stopped collector or an
offline host produces a red 0 AIs working state instead of stale green data.
Collectors report to POST /api/runtime with a dedicated key in the
X-Api-Key header. Set the same secret on the server and collector:
RUNTIME_API_KEY='runtime-...' ./run.sh
AGENTBOARD_URL='http://agentboard-host:3000' \
AGENTBOARD_RUNTIME_API_KEY='runtime-...' \
./scripts/run-runtime-collector.sh
The included collector checks process and Codex/Claude/OpenCode session state every ten
seconds, reports state changes immediately, and sends a safety heartbeat once a
minute. scripts/com.aionda.agentboard-runtime.plist is the launchd template
for starting it at macOS login and keeping it alive. On the monitored Mac, run:
./scripts/install-runtime-collector-macos.sh \
'http://agentboard-host:3000' 'runtime-your-secret'
The admin API key is printed on startup and persisted in SQLite.
MCP Server
The MCP server is embedded in the HTTP server. Connect Claude Code:
claude mcp add -t http -s user agentboard http://localhost:3000/mcp
With agent API key authentication:
claude mcp add -t http -s user -H "X-Api-Key:$AGENT_KEY" agentboard http://localhost:3000/mcp
The server must be running (./run.sh) for MCP to be reachable.
Available Tools (19)
| Tool | Description |
|---|---|
batch |
Run up to 100 operations in one call (preferred for >1 operation) |
list_projects |
List all projects |
create_project |
Create a new project |
get_project |
Get project details |
update_project |
Rename a project or reconfigure its columns |
delete_project |
Delete a project |
list_tickets |
List tickets in a project |
get_ticket |
Get ticket details |
create_ticket |
Create a ticket |
update_ticket |
Update ticket fields |
move_ticket |
Move ticket to a column |
move_ticket_to_project |
Move ticket to another project |
assign_ticket |
Assign/unassign a ticket |
delete_ticket |
Delete a ticket |
add_comment |
Add a comment to a ticket |
get_comments |
Get comments on a ticket |
get_ticket_history |
Revision history of a ticket |
list_agents |
List all registered agents |
whoami |
Show current agent identity |
REST API
Agents (admin auth required)
# Register agent
curl -X POST http://localhost:3000/api/agents \
-H "X-Admin-Key: $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-agent"}'
# List agents (no auth)
curl http://localhost:3000/api/agents
Projects
# Create project (admin)
curl -X POST http://localhost:3000/api/projects \
-H "X-Admin-Key: $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My Project", "description": "..."}'
# List projects
curl http://localhost:3000/api/projects
Tickets
# Create ticket (agent auth)
curl -X POST http://localhost:3000/api/projects/$PROJECT_ID/tickets \
-H "X-Api-Key: $AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Fix bug", "column": "backlog"}'
# Move ticket
curl -X PATCH http://localhost:3000/api/projects/$PROJECT_ID/tickets/$TICKET_ID/move \
-H "X-Api-Key: $AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"column": "in_progress"}'
# Move ticket to another project (column is optional, defaults to the
# target project's first column)
curl -X PATCH http://localhost:3000/api/projects/$PROJECT_ID/tickets/$TICKET_ID/project \
-H "X-Api-Key: $AGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"target_project_id": "'$OTHER_PROJECT_ID'"}'
Demo Mode
./demo.sh
Starts the server (if not running) and plays through a scripted demo defined in demo.json.
Scripts
| Script | Description |
|---|---|
./run.sh |
Build and start the server |
./stop_server.sh |
Stop the server |
./demo.sh |
Run the demo |
npm test |
Run unit tests |
npm run test:coverage |
Check backend test coverage |
npm run test:e2e |
Run desktop and mobile browser tests |
npm run screenshots |
Rebuild the README screenshots with isolated demo data |
npm run dev |
Dev mode with hot reload |
Refreshing the screenshots
npm run screenshots
Requires Google Chrome. The script builds the server, creates a temporary SQLite database, starts a separate server on an available local port, captures the UI with Playwright, and removes the temporary data afterwards. It does not change a running board or its database. Images are written to docs/board.png, docs/overview.png, docs/ticket-split-view.png, docs/ticket-split-view-dark.png and docs/notifications.png.
Tech Stack
- Backend: TypeScript, Express, better-sqlite3, Apollo Server, graphql-ws
- Frontend: Vanilla JS, CSS with glassmorphism design
- MCP:
@modelcontextprotocol/sdk(StreamableHTTP transport) - Tests: Vitest and Playwright
License
MIT
README fetched from the repository 22 hours ago. The original is authoritative.