Skip to content
Documentation
Documentation

Server Setup

The browser can’t talk to Slack, Discord, or Teams directly — it would expose your credentials. MUS routes those calls through a server-side handler that keeps your tokens safe.

There are two ways to provide that handler:

PathBest for
mus-server Docker imageVite SPAs and any app without a backend
@datachefhq/mus/server handlersNext.js, Express, Fastify, Hono — wire into your existing server

Both paths support every adapter: Slack, Discord, Teams, and generic webhooks.


  • Voice upload — receives a WebM recording from the browser, converts it to MP3 using ffmpeg, and forwards it to your configured adapter
  • Support channel — creates (or finds) a per-user support channel and notifies your team
  • Standalone feedback — receives a screenshot and optional voice note together

All three are mounted under /api/mus/:

EndpointHandler
POST /api/mus/voice-uploadPOST
POST /api/mus/standalone-uploadPOSTStandalone
POST /api/mus/support-channelPOSTSupportChannel


Configure adapters by setting the env vars for whichever destinations you want. You can mix and match — all configured adapters run in parallel.

AdapterEnv var
SlackSLACK_BOT_TOKEN
DiscordDISCORD_WEBHOOK_URL
Microsoft TeamsTEAMS_WEBHOOK_URL
Generic webhookWEBHOOK_URL

The Slack bot token needs these scopes: chat:write, files:write, channels:manage or groups:write, users:read.email.