Remedia
Play audio into Discord voice channels from Node.js, embedded in your bot or on a separate server.
Remedia decodes audio, applies filters and gain, and delivers it to Discord voice channels. Run the engine inside your Node.js bot or on a standalone server. Your application owns its queue, media sources, and Discord Gateway connection.
What you can do
- Play URLs and local files, plus in-memory bytes and Node.js streams in embedded mode.
- Pause, resume, seek, change volume, and apply FFmpeg audio filters while playing.
- Crossfade between tracks.
- Run the engine inside your bot, or on one or more separate servers, behind the same API.
- Plug in your own services to resolve audio at playback time or answer application-specific requests.
Pick an integration
| I want to... | Use | Start here |
|---|---|---|
| Run audio inside my Node.js bot | @remedia/node, or @remedia/client with an embedded node | Embedded quickstart |
| Run audio on a separate server | remedia-server plus @remedia/client in the bot | Remote quickstart |
| Use embedded and remote nodes together | @remedia/client | Using @remedia/client |
| Resolve audio or data through my own service | @remedia/plugin-host | Plugins overview |
You do not need all of them. Most bots install one of the first two rows. Choose your setup compares them in detail.
A Discord session starts playback after its voice connection is ready:
const voice = remedia.createDiscordSession({ guildId, channelId, userId });
await voice.connect();
await voice.play({ url: 'https://media.example.com/audio.mp3' });
await voice.setVolume(0.8);Requirements
- Node.js 22.18 or newer for the JavaScript packages.
- FFmpeg 9 shared libraries on the machine that decodes audio. Install FFmpeg 9 takes one command. A bot that only talks to remote servers needs none.
Explore
Embedded quickstart
Install @remedia/node and play audio from your bot process.
Remote quickstart
Install remedia-server and connect with @remedia/client.
Plugins
Resolve audio and application data through your own plugin host.
Reference
Client, native bindings, server configuration, and the WebSocket protocol.
Under the hood
Remedia is written in Rust. The Rust crates (decoding, playback, Discord voice, observability) are documented under Reference for contributors and Rust embedders: decoding, playback sessions and Discord voice output.
Machine-readable documentation
Markdown is available at /llms.txt, /llms-full.txt and /llms.mdx/docs/<slug>/content.md, and
through the copy button on each page.