Skip to main content
Glama

Murmur

build npm license MCP

Before you ship a pricing or launch change, find the objections that would kill it — ranked by blast radius, each tied to the simulated post behind it, inside the coding agent you already use, with no extra API keys.

IMPORTANT

Murmur produces astructured set of arguments, not a prediction. Simulated personas are invented critics, not your customers; nothing here is evidence of what real users will do. The output is a list of objections to test with real humans — including which questions discriminate and what answers should stop the launch. The included demo is mock-driven; it shows the workflow, not a live-model result.

This positioning is deliberate. Peer-reviewed work in 2026 measured LLM-simulated users against real people and found them unreliable as proxies: Seshadri et al., "Lost in Simulation" (ACL 2026, calibration error 15–20 points) and Chen et al., "When Synthetic Users Fail" (no LLM beats the best non-LLM baseline on real survey data). Murmur does not claim what those papers rule out. See METHODOLOGY.md for what a run is and is not, and bench/ for the pre-registered attempt to measure recall against real reactions.

What you get

  • Surface the killing objections to a pricing, launch, policy, or crisis decision — each stated at its strongest, with the evidence and the decision it threatens.

  • Argue the other side honestly: every dossier carries the counter-case, so an adversarial tool cannot talk you out of a good idea silently.

  • Stay in your coding workflow with Claude Code, Codex, Gemini CLI, Cursor, Windsurf, and other MCP clients.

  • Add no API keys or Murmur network calls; model use stays inside the host agent you already use.

  • Trace every claim to the simulated post behind it, and every number to the run that produced it — the engine rejects drafts that invent figures.

  • Replay the same seed, inputs, and host model to reproduce the same run.

See the shipped dashboard in 3 clicks

  1. Get the repository. Clone it or download the repository archive.

  2. Reveal the hidden folder. .murmur is a dot-folder, so macOS Finder hides it by default: choose Go → Go to Folder (Cmd+Shift+G), paste murmur-demo/.murmur/reports/pricing-reaction, and press Return. From the repository root, open murmur-demo/.murmur/reports/pricing-reaction/report-1.html also works on macOS; in Windows PowerShell use start .\murmur-demo\.murmur\reports\pricing-reaction\report-1.html; on Linux use xdg-open murmur-demo/.murmur/reports/pricing-reaction/report-1.html.

  3. Open report-1.html. Double-click it to open the self-contained dashboard in your browser; no build or local server is required.

The 61 KB report covers Acme Cloud's 30% price increase with 7 supporters versus 5 opponents, five rounds of reaction, platform divergence, persona spotlights, risks with the simulated posts behind them, recommendations, limitations, and a post index. It makes no external requests and works offline.

Viewing on GitHub: GitHub displays this file as source rather than rendering it. Use Raw → Download raw file, then open the downloaded report-1.html locally.

Related MCP server: crowd-test-mcp

① Open the demo dashboard (10 seconds)

Double-click murmur-demo/.murmur/reports/pricing-reaction/report-1.html.

It is fully self-contained — no scripts, no external requests, works offline — and shows the simulated "Acme Cloud pricing change" projection: executive dashboard, multi-entity sentiment chart, faction donut + cards, platform divergence, persona spotlights, risk register with evidence, recommendations, and five appendices. The Markdown twin (report-1.md) is the same data in diffable form.

Then skim murmur-demo/DEMO-TRANSCRIPT.md to see the 34 tool calls that produced it.

② Connect it to your coding agent

One-time setup — pick either option:

# Option A — install from source (dist is pre-built inside the bundle)
cd murmur && npm install

# Option B — install from npm (the registry package — the primary route)
npm install -g murmur-mcp
murmur-mcp doctor                                # environment check
npx murmur-mcp doctor                            # …or run one-off, no global install

Then register the server with your client — e.g. Claude Code:

# after Option B (global binary on PATH)
claude mcp add murmur -- murmur-mcp serve
# …or via npx, no global install
claude mcp add murmur -- npx murmur-mcp serve

# after Option A (direct path — no global install needed)
claude mcp add murmur -- node /<path-to>/murmur-complete-v1.0.0/murmur/packages/server/dist/index.js serve

Also handy:

murmur-mcp templates                           # browse the 5 scenario packs
murmur-mcp init --client claude-code --write   # writes the client config for you

The server speaks plain MCP over stdio. murmur/README.md has the full 10-client install matrix (Codex, Gemini CLI, Antigravity, OpenCode, Hermes, Cursor, Windsurf, Cline/Continue, VS Code) with copy-paste snippets.

Once connected, ask your agent things like: "Simulate how r/devops reacts to our new pricing page" — the agent drives the 11 Murmur tools; the LLM you already pay for does the persona voices.

③ Develop, test, replay

cd murmur
npm install            # if you skipped Option A (dev toolchain: typescript, vitest, sqlite)
npm test               # 651 unit + golden tests (byte-identical replay, citation integrity)
npm run test:e2e       # 190 end-to-end: 188 market-twin contracts + integration + cleanroom, real SDK client ↔ server over stdio
npm run cleanroom      # zero-egress gate: no network APIs, no URLs, no key surfaces
npm run build          # rebuild dist from source (all 5 packages)

Replay the demo (rewrites murmur-demo/.murmur/ deterministically — same seed, same bytes, every time; needs the npm install above first):

node tools/demo-live.mjs

The scripts in tools/ resolve murmur/ and murmur-demo/ relative to their own location, so the bundle can sit anywhere on disk. scale-benchmark.mjs measures token budget and wall time at any scale: node tools/scale-benchmark.mjs 48 8.

Publishing to npm (when you're ready)

  1. repository / homepage / bugs in murmur/packages/server/package.json already point at github.com/Ratz00007/murmur-mcp — the repo exists and is public; if you rename it, update those three fields plus the badge URLs at the top of this README.

  2. Push the repo, add the NPM_TOKEN secret, and the release workflow (.github/workflows/release.yml) runs every gate and publishes with provenance — or simply npm publish from murmur/packages/server/.

The npm name murmur-mcp is published (murmur-mcp@1.0.0, Apache-2.0, npm registry).

The guarantees (why no API key)

  • Host-Powered Inference — the server never calls an LLM and ships no network code. It prepares batched generation tasks; your coding agent's own LLM completes them as part of the session you already pay for.

  • Deterministic — seeded RNG everywhere (mulberry32 + FNV streams, test-enforced). Same seed + same inputs = same world and the same report, byte for byte, enforced by golden replay tests.

  • Cleanroom-verified — the gate asserts the published bundle contains no network APIs, no URLs, and no key/token surfaces. The HTML dashboard inherits this promise: open it offline and check for yourself.

Token cost

Murmur ships zero API keys — the server itself never calls an LLM. What a run consumes is host-LLM generations completed inside the coding session you already pay for:

  • world + persona drafting tasks (ontology and persona-voice submissions),

  • per-round action sets — at the defaults of 24 personas × 8 rounds that is on the order of 192 persona action-set generations per run,

  • report drafting tasks (plan → draft → risks → recommendations → confidence),

i.e. order of hundreds of host-LLM generations per run at defaults.

Estimation method (the same one the e2e tests use): tokens ≈ chars / 4. Reproduce with node tools/scale-benchmark.mjs <personas> <rounds>.

Measured engine-side budget per full run (deterministic mock brain, so these are content-independent: they measure the task payloads the host must read and the shape of what it must write — not how verbose a real model is):

scale

generation items

input tasks

output content

round trip

engine wall time

defaults 24 × 8

80

≈ 57.8k

≈ 6.5k

≈ 64.3k

1.48s

flagship 48 × 8

160

≈ 85.4k

≈ 10.9k

≈ 96.3k

2.98s

Input splits roughly: ontology ≈0.8k, personas ≈1.0k, per-round sim batches ≈7.9k–9.8k each, report task ≈5.0k. Output splits ≈ generations (9.3k at flagship) + report draft (≈1.6k). Report markdown ≈26k chars either way.

Measured from the bundled mock demo (murmur-demo/.murmur/ — mock brain, 12 personas · 5 rounds, a smaller run than the defaults above):

Artifact

Measured

≈ tokens (chars/4)

Report output report-1.md

27,936 bytes (27,289 chars)

≈ 6.8k output

Round-1 generation batch prompt (reported in DEMO-TRANSCRIPT.md)

≈ 932 tokens

as reported

Largest single host response, budget 12,000 (reported in DEMO-TRANSCRIPT.md)

5,015 tokens

as reported

audit.jsonl / interviews.jsonl / qa.jsonl

28 / 1 / 1 records (3,265 / 433 / 339 B)

≈ 0.8k / 0.1k / 0.1k

Real-LLM cost varies by model, provider pricing and prompt caching. The tables above are char-based estimates from deterministic runs — treat them as a ceiling on task payload size, not a bill. A run also costs your session's wall-clock time (the engine is 3s; the LLM round-trips are the slow part). Pending: median billed tokens/report from the first real-LLM gallery run — publish it in gallery/ and replace this line with the measured figure.

Where to read more

  • METHODOLOGY.md — what a run is and is not, the metrics that restate each other, and how to argue with a report

  • BENCHMARK.md — the pre-registered attempt to measure recall against real reactions, and what it found

  • GOAL.md — the standing objective, success criteria, and the full build log with verification evidence

  • gallery/ — published runs (real ones and clearly labeled mock measurements)

  • murmur-demo/FLAGSHIP-DEMO.md — the real-LLM protocol and its status (blocked on model access, recorded honestly)

  • murmur/GOOD-FIRST-ISSUES.md — ten scoped starter tasks for contributors

  • docs/archive/ — superseded process docs (handoffs, worklogs, roadmaps, release checklists), kept for history

Topic

File

Project goal and build log

GOAL.md

Original PRD + technical plan (24 pp)

murmur/docs/Murmur-PRD-Technical-Plan-v1.0.pdf

Install matrix, guarantees, layout

murmur/README.md

Release notes

murmur/CHANGELOG.md + murmur/packages/server/CHANGELOG.md

Clean-room + zero-key policies

murmur/CONTRIBUTING.md

Security / injection hardening

murmur/SECURITY.md

License

murmur/LICENSE (Apache-2.0) + murmur/NOTICE

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Concept-test your product with synthetic consumers, straight from Claude Code. It turns free-text reactions from roleplayed personas into purchase-intent reports using Semantic Similarity Rating.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    ▎ Enables AI assistants to unleash a crowd of role-played virtual users — impatient shoppers, seniors, keyboard-only users, privacy hawks, chaos monkeys — on a website. Each persona browses in a real Chromium browser, files UX/QA findings in character, and the site receives a damage report with an S–F survival grade. Accusations can be cross-examined by up to three independent verification engines
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to unleash a crowd of role-played virtual users — impatient shoppers, seniors, keyboard-only users, privacy hawks, chaos monkeys — on a website. Each persona browses in a real Chromium browser, files UX/QA findings in character, and the site receives a damage report with an S–F survival grade. Accusations can be cross-examined by up to three independent verification engines
    4
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables coding agents such as Claude Code and Cursor to check a team's learned decisions from pull requests, reviews, and docs before writing code, showing whether breaking them is blocking or advisory. It also provides locally computed symbol impact/blast-radius analysis so source code never leaves the machine.
    79 npm
    2
    MIT