Hey everyone! Sharing Resenha, an experimental plugin that adds voice chat rooms directly into Discourse — no external apps, no media servers, just peer-to-peer voice in your sidebar.
(Yes, it runs on a Raspberry Pi 5 — that’s how lightweight this is.)
How It Works
Click a room in the sidebar to join, click again to leave. All audio goes peer-to-peer via WebRTC — your Discourse server only handles signaling, never media. A default “Watercooler” room is created on install so your community can start talking immediately.
Features
Sidebar-first UX — rooms and live participant avatars right in the sidebar, Discord-style
Speaking indicators — animated audio bars show who’s talking in real time
Participant controls — context menu with volume, mute, and kick options
Room management — staff CRUD UI plus a full REST API for programmatic control
Zero infrastructure — pure browser WebRTC with DTLS-SRTP encryption, no SFU/MCU needed
Trust level gating — uses Discourse’s existing trust system for room creation permissions
Status
Alpha — works well for small rooms (2–10 participants). Test with a small group first. Larger rooms may hit browser peer limits; SFU support is planned.
This is quite awesome Falco ! I can see quite a few applications for this being what you have listed. Feature plugins like this definitely helps make Discourse Meta the goto platform!
I’ve been having a play with this for a few days - and it is brilliant!!!
It solves the problem of easy ‘upgrading’ a forum/chat discussion into a verbal conversation beautifully. I’ve had years of struggling between the need to switch to other platforms, or having resource-heavy (attempts at) integrated video conferencing.
If you decide to take it further, I’d love it to be designed to integrate with chat. It would be simply sublime to be able to launch a private Voice room for the members of a chat directly from the chat (with a tidy up afterwards to keep things clean). And the chat would remain as the perfect place to drop in additional comments, files, links, etc.
Icing on the cake would of course be:
An option for video (likely not possible technically with such a lightweight tech)
AI transcription, clever enough to integrate related topics and chat. This would be absolutely amazing as a meeting scribe.
// Put this in the JS tab or in /javascripts/discourse/api-initializers/...
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer(api => {
api.replaceIcon("microphone-lines", "bottle-water");
});
/* Flip the bottle-water icon upside down in Resenha sidebar - put in Common*/
.sidebar-section.sidebar-section-wrapper [class*="d-icon-microphone-lines"] {
transform: rotate(180deg);
/* Optionally, tweak vertical alignment if needed */
display: inline-block;
}