@metaharness/support is a one-command scaffold that drops a complete customer-support multi-agent template into a fresh directory, wired for Claude Code. You run npx @metaharness/support@latest my-bot, and you get a working four-agent pipeline — triager, KB-searcher, responder, escalator — plus the MCP servers, permissions, and pipeline contract that make those agents cooperate instead of stepping on each other.
It is a template, not a product. There is no hosted dashboard, no vendor lock-in, no SaaS account. The scaffold gives you files on disk that you own, edit, and version-control. Bring your own knowledge base, ticketing backend, and escalation channel.
The minimum workflow:
npx @metaharness/support@latest my-bot
cd my-bot
npm install
harness doctorharness doctor is the smoke test. It verifies Node 20+, the Claude CLI, MCP server reachability, agent file structure, and the permissions allowlist. Anything red, fix before you send real traffic.
To send a ticket through the pipeline headlessly:
claude -p --plugin-dir my-bot "Triage and respond to: 'My invoice is wrong'"The triager runs first (Haiku, fast and cheap), routes the intent. The KB-searcher (Haiku) hits the memory MCP server for relevant articles. The responder (Sonnet) drafts a grounded reply. The escalator (Opus) decides whether a human takes over, and if so, writes the internal handoff note with PII redacted.
To point the scaffold at your real knowledge base, edit mcp.json — replace the default local AgentDB path in the memory entry with whatever MCP-compatible memory server you already run (pgvector, Pinecone via an MCP adapter, hosted AgentDB, etc.). The agent prompts only call MCP tools, so the backend is swappable without prompt changes.
To wire your real ticketing system, replace the stub tickets MCP server in mcp.json with one that wraps your vendor API. There are open-source MCP adapters for Zendesk, Intercom, and GitHub Issues you can drop in.
- Four-agent pipeline with explicit tier routing. Triager and KB-searcher run on Haiku (high-volume, low-cost). Responder runs on Sonnet (balanced reasoning and tone). Escalator runs on Opus (judgment-heavy, low-volume).
- Comms-first coordination. Agents talk to each other via
SendMessage, not via shared scratch files. The pipeline contract is documented inCLAUDE.mdso the lead always knows who messages whom. - MCP-backed memory. The KB-searcher uses the memory MCP server, so semantic search over your knowledge base is plug-and-play once you ingest content. The scaffold ships a
harness kb ingesthelper. - Permissions tuned for support work.
settings.jsonallows the reads support agents need (transcripts, KB, ticket metadata) and only the writes that the responder and escalator legitimately produce. - Stub ticketing server you replace. No vendor coupling — swap the
ticketsentry inmcp.jsonfor an MCP wrapper around your real backend. - PII redaction in the escalator. The escalator prompt enforces a redaction pass on handoff notes before they cross the human boundary.
- Override agent tiers without editing prompts. Set
tier: opusin an agent's frontmatter and the harness re-routes; useful when a noisy intent class needs more reasoning power than Haiku provides.
harness validate walks the scaffold and confirms every agent file has the required frontmatter, every MCP server entry parses, and the permissions allowlist is well-formed. Run it in CI to catch drift.
claude -p --plugin-dir my-bot "<ticket text>" runs the whole pipeline non-interactively and prints each agent's output. This is how you batch-process a backlog or wire the harness into a cron job.
For staged rollout, run the harness in dry-run mode by editing settings.json to deny the tickets.create_reply permission — the responder will draft, the escalator will gate, but nothing leaves the box. Review N drafts, then flip the permission on.
For evaluation, point a second instance of the harness at a fixture set of historical tickets and diff the responder output against the human reply that actually shipped. The scaffold's CLAUDE.md documents this eval loop.
To extend the pipeline — say, add a sentiment agent between triager and KB-searcher — drop a new agents/sentiment.md, add a SendMessage hop in CLAUDE.md, and harness validate will confirm the wiring. No build step, no plugin registry, no compilation.
Built on metaharness (https://www.npmjs.com/package/metaharness). MIT licensed.