Remedia

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...UseStart here
Run audio inside my Node.js bot@remedia/node, or @remedia/client with an embedded nodeEmbedded quickstart
Run audio on a separate serverremedia-server plus @remedia/client in the botRemote quickstart
Use embedded and remote nodes together@remedia/clientUsing @remedia/client
Resolve audio or data through my own service@remedia/plugin-hostPlugins 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

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.

On this page