Install
$ agentstack add mcp-jendrypto-command-center ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Command Center
> A command space for your agent. You review exceptions, it does the rest.
Command Center is an opinionated workspace your AI agent drives on a schedule. Your agent captures, clusters, triages, promotes, and archives items through a defined state machine. You get a dashboard for inspecting exceptions, duplicates, and progress — not a manual inbox to clean.
It ships with a Next.js dashboard, a SQLite-backed store, a REST API, and an MCP server so agents can operate natively. Reference setups are included for Hermes Agent and OpenClaw, both covering MCP registration plus cron-driven daily triage and weekly consolidation.
> This is a personal project I maintain on hobby time. Fork it, steal ideas, open issues — but there's no SLA. PRs welcome.
⚠ Security — read before deploying
Command Center has no authentication by design. It assumes you are the only caller. The default dev/start scripts bind to 127.0.0.1 so nothing outside your machine can reach the API.
Do not expose this to a public network. Running it on a public IP, or forwarding the port without auth in front, lets anyone on the internet read, modify, delete, and promote your captures — and trigger outbound webhook calls from your server.
For remote access, tunnel over SSH (ssh -L 3005:localhost:3005 …) or put it behind a reverse proxy that enforces auth (Caddy + basicauth, Tailscale, Cloudflare Access, etc.). Don't put captures you'd be uncomfortable sharing into the workspace — the promoted item's full content is sent to the webhook target.
What it looks like
- Dashboard (
http://localhost:3005): exception-first view of your workspace — today's priorities, blockers, stale items, lane status, pending decisions, waiting-on follow-ups, 24h pulse. - State machine: every item flows
raw → clustered → candidate → promoted, withreferenceandarchivedas terminal states. - Lanes: items are sorted into configurable strategic lanes (Work / Personal / Later by default, or whatever you define).
- Outcome loop: agents can track owners, revisit dates, decisions needed, outcomes, evidence, supersession, and execution handoffs.
- MCP tools:
get_workspace,update_items,promote_items,scan_queue_noise, and six more — all thin wrappers over the REST API so agents can read and write the whole workspace in one trip.
Quickstart
git clone https://github.com/jendrypto/command-center.git
cd command-center
npm install
cp .env.example .env
# Edit command-space.config.ts to set your agent's name, lanes, and promotion target.
# Edit .env to set your webhook URL (if using the default webhook promotion).
npm run dev
Open http://localhost:3005. You'll see an empty dashboard.
Wire your agent
Command Center is runtime-agnostic: MCP-aware agents can use the MCP server, and any agent can use the REST API. The examples folder includes two maintained references:
- [Hermes Agent](examples/hermes/README.md) — MCP registration with
hermes mcp add, snippets forAGENTS.md/TOOLS.md, andhermes cron createjobs. - [OpenClaw](examples/openclaw/README.md) — MCP registration with
openclaw mcp set, snippets for workspace files, andopenclaw cron addjobs.
Hermes Agent
One-time setup for Hermes users — see [examples/hermes/README.md](examples/hermes/README.md) for the full walkthrough. Short version:
npm run mcp:build
./examples/hermes/install-mcp.sh
# Paste the Hermes snippets into your workspace
# (AGENTS.md, TOOLS.md)
./examples/hermes/install-daily-triage.sh
./examples/hermes/install-weekly-consolidation.sh
OpenClaw
One-time setup for OpenClaw users — see [examples/openclaw/README.md](examples/openclaw/README.md) for the full walkthrough. Short version:
# Build the MCP server
npm run mcp:build
# Register it with openclaw
./examples/openclaw/install-mcp.sh
# Paste the three openclaw bootstrap snippets into your workspace
# (SOUL.md, AGENTS.md, TOOLS.md)
# Install the daily triage cron
./examples/openclaw/install-daily-triage.sh
./examples/openclaw/install-weekly-consolidation.sh
Your agent will run a triage pass every weekday morning. You open the dashboard to see what it did and what it kicked up for review.
Wire a different agent
The MCP server speaks standard Model Context Protocol over stdio, so any MCP-aware client (Hermes, OpenClaw, Claude Desktop, Claude Code, Cursor, Zed, etc.) can use it. For non-MCP agents, the REST API at /api/agent is a straight JSON contract — see [HOWTO.md](HOWTO.md#custom-agents).
Configuration
Edit command-space.config.ts. That file is the only per-install surface you control:
{
agent: {
name: "Scout", // Shown in the dashboard
purpose: "...", // One-line description
},
focusAreas: [
{ id: "work", label: "Work", color: "#6c2bee", priority: 100 },
// ...
],
promotionTarget: {
type: "webhook", // or "none"
url: process.env.PROMOTION_WEBHOOK_URL,
headers: { Authorization: `Bearer ${process.env.PROMOTION_WEBHOOK_TOKEN}` },
},
dashboard: { title: "Command Center" },
}
States, dispositions, metadata fields, and the dashboard layout are product-level decisions and live in the code. If you need to change those, fork the repo. Everything else is config.
State machine
┌─────┐ cluster ┌───────────┐ surface ┌───────────┐ promote ┌──────────┐
──▶│ raw │─────────────▶│ clustered │─────────────▶│ candidate │────────────▶│ promoted │
└──┬──┘ └─────┬─────┘ └─────┬─────┘ └──────────┘
│ │ │
│ │ └───▶ reference
└──────────▶ archived ◀─┴──▶ archived
raw: new capture, no classification yetclustered: tied to a theme viacluster_keycandidate: needs human judgment or agent confidence is lowpromoted: pushed to an external system (via webhook or your chosen adapter)reference: kept but not action-drivingarchived: dead, merged duplicate, or resolved
Agent metadata
The agent writes these fields on every triage pass. Your dashboard surfaces them.
| Field | Purpose | |---|---| | reviewed_at | When the agent last touched the item | | agent_confidence | 0–1 confidence in the disposition | | disposition | keep_incubating, connect_cluster, promote, reference, archive, merge_duplicate | | duplicate_of | If this item is a duplicate, the canonical item's id | | cluster_key | Free-form string grouping related items | | promotion_target | Optional target label passed to the promotion adapter | | needs_review | Boolean — set true when human judgment is needed | | attention_reason | Short sentence explaining why it needs review | | focus_area | Which lane this belongs to (from config) | | focus_score | Priority score (derived from lane by default) | | owner | Person/agent responsible for the next check | | revisit_at | ISO datetime when the item should resurface | | decision_needed | The unresolved question blocking closure | | outcome_status | open, decided, done, blocked, superseded, or dropped | | outcome_note | Human-readable result of the loop | | evidence | Link, issue id, commit, note, or other proof | | superseded_by | Item id that replaced this item | | execution_target | Downstream queue/lane/run target | | execution_ref | External ticket/run/reference id | | execution_url | External ticket/run/reference URL |
API contract
For full MCP/REST contracts see [HOWTO.md](HOWTO.md#api-contract). Quick reference:
GET /api/agent— workspace snapshot (stats, active plan items, attention queue, duplicates, backlog, connections)POST /api/agent— batch updates/connections/disconnects/promotions in one callGET /api/queue-cleaner— noise report (duplicates, stale groups, heartbeat clutter, orphans)POST /api/queue-cleaner— cleanup actionsPOST /api/promote— promote a single item to the configured target
Repo layout
command-center/
├── app/ # Next.js dashboard + REST API
├── components/ # React UI
├── lib/ # Core logic (db, config, promotion, queue-cleaner)
├── mcp-server/ # Stdio MCP server wrapping the REST API
├── examples/hermes/ # Drop-in bootstrap snippets + cron scripts for Hermes
├── examples/openclaw/ # Drop-in bootstrap snippets + cron scripts for OpenClaw
├── command-space.config.ts # Per-install config (edit me)
├── .env.example
├── HOWTO.md # Extending: adapters, agents, API
└── README.md # You are here
Extending
See [HOWTO.md](HOWTO.md):
- Writing a custom promotion adapter (Notion, Linear, your own system)
- Using Hermes, OpenClaw, or another agent runtime
- Using a raw REST contract
- Adding capture sources (browser, CLI, email-in)
- Customizing the dashboard
License
MIT — see [LICENSE](LICENSE).
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jendrypto
- Source: jendrypto/command-center
- License: MIT
- Homepage: https://docs.openclaw.ai
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.