About this project

polyemesis is a self-hosted restreaming server whose stated differentiator is per-destination multichannel audio routing. A single upload is fanned out to as many destinations as the operator configures, and each destination receives its own stereo mix summed from the audio tracks the encoder sent. Video is copied through untouched rather than re-encoded. The use case it targets: an OBS session with split audio tracks, where track one is the full mix including copyrighted music, track two is a clean feed, and track three is the microphone. Live platforms typically accept one stereo pair, so a single mix must serve everyone or several encoders and uploads are needed. polyemesis lets the user choose, per destination, which tracks are summed into that destination's stereo feed. Routing is configured either as a checkbox-per-track simple mode or as a channel-to-output mix matrix with a per-cell gain. Ingest is SRT multitrack, described as up to 32 AAC tracks, addressed by token on a single port, with RTMP as a single-track fallback on one port addressed by stream key. Live audio meters are provided for every channel of every track, intended for verifying a clean track before going live. Video renditions can be shared between destinations that need a lower tier: one encode is ref-counted so an unused tier costs nothing, and renditions re-encode video only, leaving audio routing per destination. Overlays on renditions cover an image watermark and a line of burnt-in text, positioned and sized as percentages of the frame. Destinations can be RTMP(S), SRT or local file, each independently startable, with auto-reconnect and exponential backoff. Platform sign-in is offered for YouTube, Twitch, Facebook and Kick, with chat and metadata push where the API allows, and chat moderation across all four including delete, ban, timeout, and a moderator card aggregating one user's messages across platforms. Other operational features include failover with a standby ingest, a generated slate and a source selector; Prometheus metrics and in-process alert rules with webhook delivery; signed lifecycle webhooks on stream and destination transitions; retained MQTT telemetry with Home Assistant discovery; and self-configuring TLS via Let's Encrypt or a local CA. A post-production group covers segmented multitrack recording with retention, a job queue, Whisper transcription with full-text search, and a clipper. Many settings apply without dropping the stream, with the save action indicating which took effect. The software ships as a single static binary with the UI embedded, pure-Go SQLite and no cgo, requiring FFmpeg 6.0 or newer built with libsrt. It refuses to start on FFmpeg older than 6.0 and warns when SRT is absent. A Docker image is published. Installing requires Go 1.27.0+, Node 20.19+/22.12+ and FFmpeg when building from a clone. The README is explicit about limits: the project is pre-release with one maintainer and no compatibility promises; RTMP multitrack is not the operated path; there are no per-source ports; there is a single user with no roles or per-destination permissions; Instagram Live is listed as unsupported; and source video suitability is the operator's responsibility. Platform maturity differs, with Linux and Docker described as primary and Windows as unproven, including a known unresolved defect around recording truncation on service stop. The comparison table positions it against datarhei/Restreamer and restream.io, and the README states that Restreamer is more mature where different audio per platform is not needed. Licensing is MIT.