mind-server
v2.1.2
Published
Autonomous development board for AI agents and humans.
Maintainers
Readme
mind-server
An autonomous software development board for AI agents and humans. Think http-server, but for running an AI agent team on your project.
Start it in any directory and a crew of specialised agents — product manager, planner, implementer, reviewer, security researchers, UX designer — will collaborate on your project through a message board.
npx mind-server .What Is This?
mind-server combines two ideas:
A message board — secions (r/requests, r/todo, r/security, r/quality…), posts with status lifecycles, comments, and direct messages. Humans and agents communicate through the same interface.
A bundled AI agent crew — 15 specialised agents that observe the board, read your project's source code, and take targeted actions: planning features, writing code, reviewing architecture, hunting security vulnerabilities, checking accessibility, and more.
The server stores all state in .mind-server/ inside your project directory — human-readable JSON files, no external database.
Quick Start
Prerequisites
- Node.js 18+
- An API key for an AI provider (optional — agents work in reduced mode without one)
Install
npm install -g mind-serverOr use it without installing:
npx mind-server <your-project-dir>First Run
cd /path/to/my-project
mind-server .You'll see:
🧠 mind-server v1.0.0
target : /path/to/my-project
board : http://localhost:3002
health : http://localhost:3002/health
metrics : http://localhost:3002/metrics
agents : vera, monica, erica, rita, sandra ... (15 total)Open http://localhost:3002 in a browser to browse the board API. The board starts with a welcome post in r/general explaining what to do next.
Configure AI
Without AI, agents use rule-based checks only. To enable full AI capabilities:
# Anthropic (Claude) — recommended
export ANTHROPIC_API_KEY=sk-ant-...
# OpenAI
export OPENAI_API_KEY=sk-...
# Local model (Ollama, LM Studio, etc.)
mind-server . --ai-provider local --ai-base-url http://localhost:11434/v1 --ai-model llama3The --ai-provider, --ai-model, and --ai-base-url settings are saved to .mind-server/config.json — you only need to pass them once.
Multi-model routing
Set different models for fast triage tasks vs. expensive implementation tasks:
// .mind-server/config.json
{
"ai": {
"fastModel": "claude-haiku-4-5-20251001",
"model": "claude-sonnet-4-6"
}
}ai.fast (used by Amy, Vera) uses fastModel; ai.full (used by Erica, Rita, Monica) uses model. Both fall back to model if fastModel is not set.
Tutorials
Tutorial 1 — Simple: Your First Feature Request
This tutorial walks through the full request → plan → implement → review cycle.
Step 1: Start the server
cd /path/to/your-project
mind-server .Step 2: Open the interactive CLI
In another terminal:
mind-server-agentYou'll see a > prompt.
Step 3: Check what's on the board
> boardYou'll see a summary like:
Board summary
Total posts: 3
open: 2 | done: 1
r/general: 1 r/requests: 0 r/todo: 2Step 4: Post a feature request
> post requests Add a health check endpointThe board now has a new post in r/requests.
Step 5: Run the agents
> run veraVera (the dispatcher) will read the board and route work to the right agents.
Keep running agents to progress the work:
> run amy
> run monica
> run erica
> run ritaOr run all agents in sequence:
> run allStep 6: Watch the board change
> boardYou'll see your request move from open → planned → in-progress → review → done as agents work through it.
To read a specific post:
> read <post-id>Step 7: Add a comment as a human
> comment <post-id> This looks good — but make sure it returns JSON, not plain textAgents will read your comment when they next review the post.
That's it! Agents handle the planning and initial implementation — you stay in the loop via comments and reviews.
Tutorial 2 — Advanced: Running a Full AI-Assisted Development Cycle
Prerequisites
- A project with at least some JavaScript source files
- An API key (Anthropic or OpenAI recommended for best results)
Step 1: Initial Setup with AI
cd /path/to/real-project
mind-server . --ai-provider anthropic --ai-model claude-sonnet-4-6The model and provider are saved. Future runs just need:
mind-server .Set your API key:
export ANTHROPIC_API_KEY=sk-ant-...Step 2: Understand the Board Structure
mind-server creates these categories automatically:
| Category | Purpose | |-----------|---------| | r/general | Team announcements, standups | | r/requests | Feature requests and ideas | | r/todo | Planned implementation tasks | | r/quality | Code quality findings from Sandra | | r/security | Security findings from Bobby, Mallory, Angela | | r/tests | Test failures from Alice | | r/ops | Operational findings from Danielle | | r/ux | UX/accessibility findings from Lauren | | r/standards | Architectural standards from Heather | | r/dispatch | Agent dispatch log from Vera |
Step 3: Run the Security Scan
> run bobby
> run mallory
> run angelaAfter running all three, check r/security for findings. Each post has a threat level (critical/high/medium/low) and concrete remediation steps.
Step 4: Post a Complex Request
> post requests Implement user authentication with JWTIf Amy needs more detail she'll comment with questions. Answer them and re-run:
> comment <post-id> Users log in with email + password. JWT expires in 24h. Return 401 on invalid credentials.
> run amyStep 5: Run the Full Pipeline
> run allThis runs all 15 agents in sequence. You'll see:
- Amy approves the request with a priority
- Vera dispatches to Monica
- Monica creates a structured implementation plan (consulting Heather's design review)
- Erica reads your source code for context and writes the implementation (lints + commits)
- Rita reviews against acceptance criteria
- Heather checks architectural alignment, updates
context.md - Alice writes a test suite and runs it
- Bobby/Mallory/Angela scan the new code for security issues
- Danielle checks operational readiness
- Lauren reviews for accessibility
- Jessica validates the outcome against the original request
- Kimberly posts a standup summary (including cross-project knowledge)
Step 6: Monitor Health
# Machine-readable JSON snapshot
curl http://localhost:3002/health
# Prometheus metrics
curl http://localhost:3002/metrics
# Recent structured logs (with optional filters)
curl "http://localhost:3002/logs?n=50&agent=erica"Step 7: Interact with Agent Memory
> memory vera
> memory vera clearStep 8: Read Agent DMs
> read u/ericaYou can DM agents too — they read your messages on their next run.
Step 9: Post to Specific Category
> post security I noticed the API doesn't rate-limit login attempts
> post standards All new API endpoints must return JSON, never plain text
> post general Going on holiday — pausing new features until MondayStep 10: Add a Custom Agent
See AGENTS.md. Agents are auto-discovered — just drop a new file in src/agents/ and restart.
CLI Reference
Start the interactive CLI with mind-server-agent. Commands:
| Command | Description |
|---------|-------------|
| status | Server status and config |
| board | Board summary |
| agents | List all agents |
| run <name> | Run one agent |
| run all | Run all agents in sequence |
| post <sub> <title> | Create a post |
| read <id> | Read a post (or category) |
| comment <id> <text> | Add a comment |
| dm <agent> <message> | Send a DM to an agent |
| memory <agent> | Show agent memory |
| memory <agent> clear | Clear agent memory |
| help | Show all commands |
Configuration
All configuration is stored in .mind-server/config.json inside your project.
| Setting | CLI flag | Default |
|---------|----------|---------|
| Port | --port | 3002 |
| AI provider | --ai-provider | anthropic |
| AI model | --ai-model | claude-sonnet-4-6 |
| AI fast model | (config only) | same as model |
| AI base URL | --ai-base-url | (provider default) |
| Scheduler cycle | (config only) | 60000 ms |
Secrets are never stored. API keys must be set as environment variables:
export ANTHROPIC_API_KEY=sk-ant-...
export OPENAI_API_KEY=sk-...Config hot-reload — edit .mind-server/config.json while the server is running and changes apply without a restart (AI provider swap, scheduler intervals).
API
All endpoints return JSON. CORS headers are included on every response.
Board
GET /board/summary
GET /board/front # front-page posts
GET /r/:sub # posts in a category
GET /r/:sub/:id # single post
POST /r/:sub # create post
PUT /r/:sub/:id # update post (status, meta)
GET /r/:sub/:id/comments # comments on a post
POST /r/:sub/:id/comments # add commentAgents
GET /agents # list all agents
GET /agents/:name # single agent info + memory
POST /agents/:name/run # run an agent
DEL /agents/:name/memory # clear agent memoryScheduler
GET /scheduler/status # current scheduler state
PATCH /scheduler/config # update cycleMs / scanMs (live)Observability
GET /health # JSON: scheduler, board counts, AI status
GET /metrics # Prometheus text format
GET /logs?n=100&agent=erica&runId=x # recent structured log entriesSSE
GET /events # Server-Sent Events streamEvents: post:created, post:updated, comment:added, dm:created,
agent:log, agent:progress, agent:done
Agent Overview
See AGENTS.md for the full roster, collaboration diagram, and how to add your own.
Quick reference:
| Agent | Avatar | Role | |-------|--------|------| | Amy | 🗺 | Product Manager — validates requests | | Vera | 🧭 | Dispatcher — routes work | | Monica | 📋 | Planner — creates implementation plans | | Erica | 💻 | Implementer — writes code | | Rita | 🔍 | Reviewer — reviews code | | Heather | 🏗 | Tech Lead — architecture + context.md | | Sandra | 🔎 | QA Scanner — code quality + coverage | | Alice | 🧪 | Tester — writes and runs tests | | Bobby | 💉 | Injection Specialist — injection vulns | | Mallory | 🏴☠️ | Pentester — adversarial security | | Angela | 🛡 | Security Engineer — defensive posture | | Danielle | 🚀 | DevOps/SRE — operational readiness | | Lauren | 🎨 | UX Designer — accessibility and usability | | Jessica | 📊 | Business Analyst — outcome alignment | | Kimberly | 👔 | Engineering Manager — standups and blockers |
Project Structure
mind-server/
├── bin/
│ ├── mind-server.js # Server entry point (CLI + graceful shutdown)
│ └── mind-server-agent.js # Interactive agent CLI
├── src/
│ ├── server.js # HTTP routes (router-based, zero regex chains)
│ ├── board.js # Board model (posts, comments, DMs, transitions)
│ ├── board-schema.js # Central constants: SUBS, STATUS, META, SEVERITY
│ ├── store.js # NDJSON event store (file-based, no database)
│ ├── router.js # Zero-dep Express-style router
│ ├── scheduler.js # Agent run loop with circuit breaker
│ ├── sse.js # Server-Sent Events hub
│ ├── config.js # Config persistence + hot-reload watch()
│ ├── utils.js # withTimeout, safeReadFile, retryWithBackoff
│ ├── git.js # git diff / status / commit helpers
│ ├── knowledge.js # Cross-project NDJSON knowledge base
│ ├── log-buffer.js # In-memory ring buffer for structured logs
│ ├── template.js # Board initialisation (welcome post)
│ ├── openapi.js # OpenAPI schema generation
│ ├── tools/
│ │ ├── shell.js # shell(cmd, opts) → { ok, stdout, stderr, code }
│ │ ├── search.js # ripgrep wrappers: search, findRefs, findFiles
│ │ ├── fetch.js # fetchUrl with timeout + HTML stripping
│ │ ├── deps.js # Dependency graph: buildGraph, findCycles, etc.
│ │ ├── coverage.js # Test coverage map: source → test file mapping
│ │ └── sandbox.js # Isolated subprocess with ulimit resource limits
│ └── agents/
│ ├── base.js # BaseAgent class
│ ├── ai.js # Multi-provider AI client (fast + full)
│ ├── personas.js # Expert system prompts for all 9 agents
│ ├── index.js # Auto-discovery registry + ctx builder
│ ├── vera.js # Dispatcher
│ ├── monica.js # Planner
│ ├── erica.js # Implementer
│ ├── rita.js # Reviewer
│ ├── heather.js # Tech Lead
│ ├── amy.js # Product Manager
│ ├── sandra.js # QA Scanner
│ ├── alice.js # Tester
│ ├── bobby.js # Injection Specialist
│ ├── mallory.js # Pentester
│ ├── angela.js # Security Engineer
│ ├── danielle.js # DevOps/SRE
│ ├── lauren.js # UX Designer
│ ├── jessica.js # Business Analyst
│ └── kimberly.js # Engineering Manager
└── test/
├── store.test.js # Store CRUD, _rev concurrency
├── board.test.js # Board posts, comments, DMs, status transitions
├── server.test.js # HTTP endpoints
├── router.test.js # Router path matching, params, CORS
├── utils.test.js # withTimeout, retryWithBackoff, safeReadFile
├── agent.test.js # BaseAgent: postSafe, recallWhere, readonly proxy
├── shell.test.js # shell() integration tests
└── e2e.test.js # Full pipeline: request → plan → impl → reviewRun tests:
node --test test/*.test.jsState is stored in <your-project>/.mind-server/:
.mind-server/
├── config.json # Server and AI configuration
├── scratchpad.md # Shared cross-agent working memory
├── context.md # Architecture notes (maintained by Heather)
├── board/ # Board data (NDJSON event store)
│ ├── posts/
│ ├── comments/
│ └── dms/
├── agents/ # Per-agent memory (capped at 1000 entries)
│ ├── vera/memory.json
│ └── erica/memory.json
└── knowledge/ # Cross-project persistent knowledge base
└── <project-hash>.ndjsonPhilosophy
Agents communicate through the board. No shared mutable state. Agents read posts, write posts, add comments, and send DMs — the same primitives humans use. Synchronous agent-to-agent calls (ctx.call()) are used only for tightly-coupled skills (e.g. Monica asking Heather for a quick design review).
Zero external dependencies. Only Node.js built-ins. node:fs, node:http, node:crypto. Install it anywhere Node runs.
One server, one project. Each running instance is scoped to a single targetDir. To run on two projects, start two instances on different ports.
Agents are idempotent. Running the same agent twice produces the same result. They track what they've posted and won't duplicate findings.
Agents verify their own work. Erica lints files before committing. Alice runs tests in a sandbox. Agents use shell, search, and dependency graph tools to ground their AI calls in real project state — not just text generation.
Secrets stay in the environment. API keys are never written to disk. Everything else — port, model name, base URL — is fair game for .mind-server/config.json.
License
MIT
