Skip to Content
v1.36.0 · shipped One-screen report · Looks like your app Read the changelog →
Plugin marketplaceOverview

Plugin marketplace

Mushi Mushi sends events out as HMAC-signed JSON webhooks with Standard Webhooks  headers (webhook-id / webhook-timestamp / webhook-signature: v1,…) to any tool you wire up. There are 13 first-party plugin packages, and you can build your own with @mushi-mushi/plugin-sdk (signature checks, duplicate-delivery handling, typed events, a retry helper for your own outbound calls, and a small client for calling back into the Mushi Mushi API).

Works with Sentry, or without it

You don’t need Sentry. If you already use it, keep it: its errors land in the same list as user reports, each explained in plain English.

Bugs come in from users, monitoring tools and even your voice. Fixes and updates go out to your editor, coding agents, tracker and team chat.

Available plugins

Six plugins are listed in the console’s Marketplace today: PagerDuty, Linear, Sentry, Zapier, Cursor Cloud Agent and Claude Code Agent. Slack, Discord, Teams, GitHub Issues and Jira also work without a plugin, from the Integrations page. The other packages are for running the plugin on your own server.

PluginWhat it doesIn MarketplaceDoc
Cursor Cloud AgentStarts a Cursor agent on critical triaged reports; no server neededYesCursor Cloud
PagerDutyPages on report.classified at or above a severity (default critical); resolves on fix.applied or a report marked fixedYesPagerDuty
Linearreport.created opens an issue, report.classified updates itYesLinear
SentryCopies triaged reports at or above a severity (default high) into Sentry; resolves on fixYesSentry
ZapierAll eventsYesZapier
Jira Cloudreport.created opens an issue; report.status_changed transitions it; comments on fix.appliedNoJira Cloud
Slack appReport cards with buttons and the /mushi command (built in via Integrations)NoSlack
DiscordEmbeds for report.classified, fix.proposed, fix.applied, report.status_changedNoDiscord
Microsoft TeamsAdaptive cards for report.classified, fix.proposed, fix.appliedNoTeams
GitHub Issuesreport.classified opens a labelled issue; fix.applied closes itNoGitHub Issues
BugsnagCopies triaged reports into Bugsnag; marks them fixed on fix.appliedNoBugsnag
RollbarCopies triaged reports into Rollbar items; resolves them on fix.appliedNoRollbar
CrashlyticsOn fix.applied, sets a Firebase Remote Config flag (it does not create Crashlytics issues)NoCrashlytics

Browse and install from the admin console: Marketplace. A plugin receives only the events in its Subscribed events list (empty or * means all).

Webhook delivery contract

Every dispatch is:

  • POST to your configured webhook URL with Content-Type: application/json.
  • Body: { event, deliveryId, occurredAt, projectId, pluginSlug, data }.
  • Standard Webhooks headers (standardwebhooks.com ):
    • webhook-id: <deliveryId>
    • webhook-timestamp: <unix-secs>
    • webhook-signature: v1,<base64-hmac-sha256> over ${id}.${ts}.${rawBody}
  • The HMAC key is your signing secret’s raw bytes. Standard Webhooks libraries base64-decode the secret by default, so pass it raw (for example new Webhook(secret, { format: 'raw' }) in the standardwebhooks npm package) or use the plugin SDK, which does this for you.
  • Legacy headers are sent too: X-Mushi-Event, X-Mushi-Signature: t=<unix-ms>,v1=<hex> (HMAC-SHA256 over ${t}.${rawBody}), X-Mushi-Project, X-Mushi-Plugin, X-Mushi-Delivery, and X-Mushi-Retry-Attempt on retries.
  • Your endpoint has 8 seconds to answer. Any non-2xx answer, timeout or network error is retried: up to 5 attempts in all, about 30 s, 2 min, 10 min and 1 h apart (±20%). A retry keeps the same webhook-id and body, with a fresh timestamp and signature. After the fifth failure the delivery is marked error.
  • Each delivery is logged with status, HTTP code, latency and the first 512 characters of your response, on the Marketplace → Deliveries tab.

Build your own

See Building a plugin and Webhook events.

@mushi-mushi/plugin-sdk exports createPluginHandler (checks the signature, drops duplicate deliveries and routes events to your handlers), verifyStandardWebhooksSignature and verifySignature if you want to check signatures yourself, and withRetry for retrying your own calls to other APIs.

Last updated on