npm @mushi-mushi/mcpstreamable-httpMITupdated 11d ago
Your AI wrote it. Mushi tells you why it broke.
What can you do with Mushi Mushi?
Mushi Mushi
Your AI wrote it. Mushi tells you why it broke.
Plain-English diagnosis + a paste-ready fix, right inside Cursor and Claude Code. No log-reading. No second LLM API key for MCP.
Fastest path ā drop Mushi into your AI editor:
npx mushi-mushi setup --ide cursor # or: --ide claude
Already shipping an app? One command installs the SDK + env vars + an optional test report:
npx mushi-mushi
Open source, self-hostable, MIT JS core ā bring your own LLM key, no second key for MCP, no lock-in. Self-host in minutes Ā· licensing.
What is Mushi, exactly? Read the one-page constitution: VISION.md ā the single source of truth for positioning, the north-star sentence, and who this is for.
Node ā„22 Ā· CI Ā· SDK MIT Ā· enterprise Ā· Smithery
Vision Ā· Quick start Ā· Connect your editor Ā· Self-host Ā· Why not just Sentry? Ā· Packages Ā· Docs Ā· Live demo Ā· Operators / platform Ā· Roadmap
ā the diagnosis: plain-English root cause + a paste-ready fix prompt Ā· click to open the live demo
60-second proof
Using Cursor, Claude Code, or another AI editor? Paste this prompt and your agent does the whole setup ā install, wiring, and a verified test report:
Install the Mushi skills from github.com/kensaurus/mushi-mushi (
npx skills add kensaurus/mushi-mushi), then run the mushi-setup skill to wire the Mushi SDK and MCP server into this app and send a test report to verify the connection.
Or run the wizard yourself:
npx mushi-mushi
The wizard auto-detects your framework, installs the right SDK, writes framework-prefixed env vars (e.g. VITE_MUSHI_PROJECT_ID / VITE_MUSHI_API_KEY, or NEXT_PUBLIC_MUSHI_*) to .env.local, and prints the snippet to paste. Those two vars are all the SDK needs ā no Supabase, no LLM key (see examples/sdk.env.example; the root .env.example is for self-hosting the backend only). Then, the moment something breaks:
- The bug lands in your queue ā screenshot, the user's note, the route, the last console + network events, device context.
- Mushi produces the diagnosis: a plain-English root cause + a fix you can paste.
- You pull it into your editor over MCP:
npx mushi-mushi setup --ide cursor # then ask Cursor: "what's broken in prod?"
No Sentry, no account, no monitoring stack required to see value. Self-host the whole thing in under five minutes, or use the free hosted tier (no card).
What this is
For the solo AI-first builder (the vibe coder): you ship fast with Cursor, Claude Code, Lovable, or Bolt, then lose afternoons when something breaks in code you didn't fully write. Mushi is the comprehension layer ā plain-English diagnosis in your editor over MCP, so a bug costs five minutes instead of your afternoon. (Small teams and agencies hit the same pain.)
These are the bugs your monitoring can't see, and the ones you didn't write:
- A user added a coupon and the pay button slipped under their keyboard.
- A new signup tapped Save twice because nothing visibly happened the first time.
- A Pro customer's dashboard takes 12 seconds to load ā and they've opened the competitor's tab.
- A layout that looks fine on your laptop folds in half on the one Android model used by 18% of your traffic.
What it is not
Not another dashboard you have to go read, and not an enterprise monitoring stack ā standalone first, no Sentry/Datadog/Firebase required. Full positioning: VISION.md.
The diagnosis loop
When a user shakes their phone (or clicks the reporter):
- Capture ā screenshot, route, user note, recent console + network events, device context.
- Classify ā two-stage LLM tags severity, category, and a plain-English root-cause hint. The screenshot goes through an air-gapped vision pass that can't see the text prompt. A nightly judge scores the classifier and feeds a prompt-A/B loop.
- Connect ā the report embeds into a knowledge graph (Postgres + pgvector). The same broken button reported twenty times shows up as one row, not twenty.
- Fix (optional) ā Dispatch fix (or Slack / MCP / CI) runs an agent in a sandbox, runs your tests, and opens a draft PR. You review it like any other PR.
flowchart LR
subgraph App["Your app"]
SDK["mushi-mushi/{react, vue, svelte, angular, ā¦}<br/>shadow-DOM widget Ā· screenshot Ā· console Ā· network"]
end
subgraph Edge["Supabase Edge (Hono gateway + ~50 functions)"]
API["api"]
FF["fast-filter"]
CR["classify-report<br/>+ vision + RAG"]
ORCH["fix-worker"]
end
subgraph DB["Postgres + pgvector"]
REP["reports"]
KG["knowledge graph"]
FIX["fix_attempts"]
end
subgraph Agents["mushi-mushi/agents"]
SBX["sandbox: e2b / modal / cloudflare"]
GH["GitHub PR"]
end
SDK -->|HTTPS| API
API --> FF --> CR
CR --> KG
CR --> REP
REP --> ORCH --> Agents
Agents --> GH
The architecture, sequence diagram, and component-by-component spec live in apps/docs/content/concepts/architecture.mdx.
Self-host in under 5 minutes
A single Docker Compose file gets you a working stack against your own Supabase project:
cd deploy
cp .env.example .env # ANTHROPIC_API_KEY, Supabase creds
docker compose up -d
SELF_HOSTED.md and the Self-host in minutes guide are the long-form walkthroughs. A Helm chart lives at deploy/helm/ ā one helm install on any cluster.
Hosted: sign up at kensaur.us/mushi-mushi/, click Start free, no card, create a project, and copy your projectId + apiKey. The free tier covers 50 diagnoses a month (no card required).
One BYOK rule, both ways. Self-host and you bring your own Anthropic / OpenAI key ā you pay the vendor at list rate, we never mark up a token. On hosted you bring no key at all: we meter by diagnosis (the plain-English root cause + fix), never by tokens, with a per-project spend cap and 50 / 80 / 100% alerts so the bill can't surprise you. Full numbers: pricing.
Internal edge functions (
fast-filter,classify-report,fix-worker,judge-batch,intelligence-report,usage-aggregator,generate-synthetic) authenticate viarequireServiceRoleAuth. Never expose them with--no-verify-jwt. Only the publicapifunction should face the internet ā seepackages/server/README.md.
Why not just Sentry?
The question every team asks, answered once:
Sentry tells you what threw. Mushi ingests that ā plus the bugs that never throw ā explains each one in plain English, and closes the loop with a fix your agent can ship. One queue, one audit trail, with or without Sentry.
Mushi works standalone. If you already run Sentry, point a Sentry issue-alert
webhook at /v1/webhooks/sentry?projectId=<your-project> and errors land in the
same queue as user reports ā deduped per Sentry issue, triaged in plain English,
fix-dispatchable from the console, Slack, or your editor. The loop closes both
ways: merging a Mushi fix resolves the linked Sentry issue, and resolving in
Sentry resolves the linked report. A repeat alert on a fixed report reopens it
as a regression instead of filing a duplicate.
Beyond Sentry, inbound adapters translate Datadog, Bugsnag, Rollbar,
Crashlytics, New Relic, Honeycomb, Grafana Loki, CloudWatch, Opsgenie, and
Firebase alerts into the same queue; outbound plugins keep Linear, Jira, GitHub
Issues, Slack, Discord, Teams, and PagerDuty in sync. Nothing gets ripped out ā
Mushi is the mediator between what you already run. Operator-depth (SSO,
retention, region routing): docs/operators/.
| Mushi | Sentry | Langfuse | |
|---|---|---|---|
| Catches | Thrown errors and silent UX bugs (dead clicks, slow screens, layout breaks) | Thrown errors, performance traces | LLM call traces, prompt evals |
| Output | Plain-English root cause + paste-ready fix, in your editor | Stack trace + breadcrumbs, in a dashboard | Trace tree + scores, in a dashboard |
| Auto-fix | Optional: sandbox agent opens a draft PR | Seer add-on (paid) | Not in scope |
| Second LLM key for MCP | No ā reuses your app's key | N/A | N/A |
| Setup | One command, no account required to try | SDK + DSN + dashboard | SDK + project + dashboard |
Different jobs: Sentry watches what your code throws, Langfuse watches what your LLM calls do, Mushi watches what your user experiences ā including the bugs that never throw.
Framework coverage
Most developers install one SDK ā npx mushi-mushi picks it for you. React/Next.js quick start:
npm install @mushi-mushi/react # also covers Next.js
import { MushiProvider } from '@mushi-mushi/react';
function App() {
return (
<MushiProvider config={{ projectId: 'proj_xxx', apiKey: 'mushi_xxx' }}>
<YourApp />
</MushiProvider>
);
}
// Vue 3 / Nuxt
import { MushiPlugin } from '@mushi-mushi/vue';
app.use(MushiPlugin, { projectId: 'proj_xxx', apiKey: 'mushi_xxx' });
// Svelte / SvelteKit
import { initMushi } from '@mushi-mushi/svelte';
initMushi({ projectId: 'proj_xxx', apiKey: 'mushi_xxx' });
// Angular 17+
import { provideMushi } from '@mushi-mushi/angular';
bootstrapApplication(AppComponent, { providers: [provideMushi({ projectId: 'proj_xxx', apiKey: 'mushi_xxx' })] });
// React Native / Expo
import { MushiProvider } from '@mushi-mushi/react-native';
// Vanilla JS / any framework
import { Mushi } from '@mushi-mushi/web';
Mushi.init({ projectId: 'proj_xxx', apiKey: 'mushi_xxx' });
iOS (Swift PM, v0.4.0): .package(url: "https://github.com/kensaurus/mushi-mushi.git", from: "0.4.0") Ā· Android (Gradle): dev.mushimushi:mushi-android:0.4.0 Ā· Flutter: pub add mushi_mushi.
Want a runnable example?
examples/react-demois a minimal Vite + React app with test buttons for dead clicks, thrown errors, failed API calls, and console errors.
Full package list and maturity table: SDK reference.
Where it stops
Mushi is honest about what's still partial. Skim before you commit:
| Area | Working | Still partial |
|---|---|---|
| Classification | Haiku fast-filter, Sonnet deep + vision air-gap closed, structured outputs, prompt-cached prompts, pg_cron self-healing, Stage 2 streaming via streamObject with progressive reports.stage2_partial UI updates and OpenAI fallback |
ā |
| Judge / self-improve | Sonnet judge with OpenAI fallback, prompt A/B auto-promotion via judge ā avg_judge_score ā promoteCandidate, OpenAI fine-tune adapter end-to-end (submit JSONL ā poll ā predict against fine_tuned_model_id, BYOK OPENAI_API_KEY), Bedrock fine-tune adapter (SigV4-signed CreateModelCustomizationJob, requires MUSHI_BEDROCK_FINETUNE_ENABLED=1 + AWS BYOK keys) |
Anthropic fine-tune API is not publicly self-service in 2026 ā the adapter stub links to the access-request form. |
| Fix orchestrator | Single-repo validateResult gating, GitHub PR, MCP JSON-RPC 2.0 client, multi-repo coordinator, first-party ClaudeCodeAgent (spawns local claude CLI) and CodexAgent (OpenAI Responses API, BYOK) ā both gated behind explicit env flags so shared deployments never invoke them unintentionally |
ā |
| Sandbox | Provider abstraction; local-noop (tests) + e2b / modal / cloudflare (prod). Production refuses local-noop unless MUSHI_ALLOW_LOCAL_SANDBOX=1. |
ā |
| Verify | Playwright screenshot diff + step interpreter (navigate / click / type / press / select / assertText / waitFor / observe) |
ā |
| Enterprise | Plugin marketplace + HMAC, audit ingest, region pinning, retention CRUD, Stripe metering, SAML SSO via Supabase Auth Admin API, OIDC SSO self-service ā see the commercial boundary below for which of these are paid/Enterprise-tier | ā |
| Graph backend | SQL adjacency over graph_nodes / graph_edges ships in every deployment |
Apache AGE is a hosted-tier enhancement when the extension is installed. Managed Supabase stays on SQL adjacency. |
| Inventory v2 & QA-gates | Hand-written inventory.yaml, SDK-driven discovery, Claude proposer, ESLint gate rules, 5-gate composite GitHub check, synthetic monitor, expected_outcome contract end-to-end ā see docs/operators/ |
Inventory is gated behind Advanced mode + the inventory_v2 plan flag. |
| Self-host (Helm) | Single-pod deploy on any Kubernetes; pre-install Job applies all SQL migrations from a bundled ConfigMap. Multi-region via global.region + global.peerRegions Helm values. |
Full active/active write replication is not automated yet ā write routing relies on client-side region stickiness. |
Running this for a team?
The platform depth ā inbound adapters, outbound plugins, A2A / AG-UI / MCP interop, the inventory.yaml QA-gate system, the synthetic monitor, SSO / audit / retention / region pinning, and open-standards plumbing ā lives in docs/operators/ so the front door stays on the wedge. Start there if you're wiring Mushi into an existing stack or evaluating it as a platform.
Cursor & Claude Skills
Install Mushi skills in your Cursor or Claude Code project for one-command setup, usage, and debugging:
npx skills add kensaurus/mushi-mushi
Then: /mushi-setup (guided SDK install + MCP wiring), /mushi-debug (diagnose ingest / MCP / pipeline failures), /mushi-health (pass/fail check across CLI, API, edge functions, BYOK keys), /mushi-integration (two-way loop, fix dispatch, lessons). The admin Connect & Update page (/connect) mirrors the same flows with one-click Add to Cursor deeplinks.
Repo at a glance (run pnpm docs-stats): ~373K TS lines Ā· 1,772 source files Ā· 44 workspace / 36 npm packages Ā· 55 edge functions Ā· 337 SQL migrations Ā· 19 pipeline agents. Full tour: docs/SCREENSHOTS.md.
Contributing
Issues and PRs welcome:
git clone https://github.com/kensaurus/mushi-mushi.git
cd mushi-mushi
pnpm install
pnpm dev
Requires Node.js ā„ 22 and pnpm ā„ 10. See individual package READMEs, docs/stats.md for canonical counts, and CONTRIBUTING.md.
License & branding
This repository is open-core ā the Supabase / Grafana model. The SDK packages are MIT ā use them in any product, open or closed. The server (the part you self-host or we run for you) is AGPLv3 ā true OSI open source: self-host it, fork it, modify it for your own org. If you offer a modified server as a hosted service to third parties, publish your changes or see COMMERCIAL-LICENSE.md. A small Enterprise Edition boundary (packages/server/ee/) is source-available but commercial for production use ā that's operator/enterprise plumbing only, never the wedge.
| Surface | License | Permitted | Notes |
|---|---|---|---|
SDK packages ā core, web, react, vue, svelte, angular, react-native, capacitor, flutter, ios, android, node, cli, mcp, mcp-ci, plugin-* (13 plugins), adapters (11 sources), inventory-schema, inventory-auth-runner, eslint-plugin-mushi-mushi, brand, marketing-ui |
MIT | Use, fork, sell, embed in proprietary products. | Trademarks separate ā see below. |
Server packages ā @mushi-mushi/server, @mushi-mushi/agents, @mushi-mushi/verify |
AGPLv3 | Use, modify, self-host, fork for your own org. SaaS modifiers publish changes or commercial license. | OSI-approved copyleft. The cloud runs this exact core. |
| Enterprise features ā SSO/SCIM, audit-log ingest, retention policy CRUD, region pinning, SOC2 evidence | Commercial / paid tier | Available on the Enterprise plan (hosted) or with a commercial license (self-host). | The code may be source-visible, but production use of these specific features is a paid boundary ā see docs/operators/. |
| Trademarks ā "Mushi Mushi", "Mushi", č«, the bug logo | Trademark policy | Refer to the project, build add-ons, link to the repo. | Forks must rename. Hosting a service under the Mushi name requires written permission. |
| Third-party attributions | NOTICE | ā | Upstream projects we depend on and their licenses. |
Security researchers: see SECURITY.md for the threat model, PII commitments, and safe-harbor terms.
Also by @kensaurus
Other free apps and tools from the same Tokyo studio:
| App | What it does | Links |
|---|---|---|
| glot.it ā Learn Thai Free | 161 lessons, pitch-contour tone mirror, AI roleplay chat, offline-first. | App Store Ā· Google Play |
| yen-yen ā Expense Tracker | Kakeibo-style household ledger. No bank password, no ads, no auto-writes. | App Store Ā· Google Play |
| The Wanting Mind ā Free Book | 147,000-word interactive book ā 3D knowledge graph, 12 narrators, 22 simulations. | App Store Ā· Google Play |
| cursor-kenji | 58 Cursor AI agent skills for React / Next.js / Supabase development. | npx skills add kensaurus/cursor-kenji |
Install
Add Mushi Mushi to your client. Pick the one you use.
{
"servers": {
"mcp": {
"type": "http",
"url": "https://dxptnwrhwsqckaftyymj.supabase.co/functions/v1/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
claude mcp add mcp -- npx -y @mushi-mushi/mcpcodex mcp add mcp -- npx -y @mushi-mushi/mcpamp mcp add mcp -- npx -y @mushi-mushi/mcp{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"@mushi-mushi/mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @mushi-mushi/mcpRun `goose configure`, choose **Add Extension ā Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance25/25
- Trust13/20
- Capability0/15
- Install experience15/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 4 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 18 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint ā no local install
Version history
| Versions | Published |
|---|---|
| 0.20.2Latest | Aug 16, 2026 |
| 0.20.1 | Aug 6, 2026 |
| 0.20.0 | Jul 24, 2026 |
| 0.19.0 | Jul 7, 2026 |
| 0.18.4 | Jul 2, 2026 |
| 0.18.2 | Jul 2, 2026 |
| 0.18.1 | Jun 28, 2026 |
| 0.17.1 | Jun 25, 2026 |
| 0.17.0 | Jun 24, 2026 |