IMPORTANT: As of 1st of September 2026, this is now a bundled plugin in Discourse core, and renamed to “Voice”. You now just need to enable it from the admin page.
Hey everyone! Sharing Resenha, a new plugin that adds voice and video chat rooms directly into Discourse — no external apps required, just peer-to-peer WebRTC in your sidebar.
Try It Live
https://discourse-on-a-pi5.falco.dev/
How It Works
Click a room in the sidebar to join, click again to leave. By default all media goes peer-to-peer via WebRTC — your Discourse server only handles signaling, never media. Sites that need bigger calls can optionally route rooms through a LiveKit media server — either LiveKit Cloud or a self-hosted one. 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, with animated speaking indicators
- Video and screen sharing — optional camera video and screen/tab sharing with a full room page, tile/presentation layouts, and fullscreen support
- Persistent call widget — a docked, resizable mini-call that follows you as you browse the forum, video included
- Voice and video settings — device pickers, live mic test, input sensitivity gate, WebAssembly noise suppression (DTLN), and MediaPipe background blur — all processed locally in the browser
- Room chat — each room gets a text chat backed by real Discourse chat channels and threads
- Stage rooms — speaker/audience rooms with a request-to-speak queue, for AMAs and community calls
- Room permissions — public, group-restricted, and private rooms, with lock badges in the sidebar and room hashtags for linking rooms in posts
- Participant controls — context menu with per-user volume, mute, deafen, and kick; plus AFK auto-mute/disconnect and automatic user status
- Room management — user room creation gated by groups, staff CRUD UI, and a full REST API for programmatic control
- Zero infrastructure by default — pure browser WebRTC with DTLS-SRTP encryption, no SFU/MCU needed
- Optional LiveKit integration — opt rooms in individually or route everything through LiveKit Cloud or your own LiveKit server for large calls, with an admin health panel and webhook-based reconciliation
Status
We have been using this for internal meetings for weeks now, and it works very well for small groups. Larger groups may want to deploy this along side LiveKit, but the usual sizes with up to 10 participants work very well on the default mesh configuration.
Installation
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/xfalcox/resenha.git
Enable in Admin > Settings > Plugins > resenha enabled.
Feedback Welcome
This is a new plugin — bugs, ideas, and questions are all welcome in this topic. PRs too!
Note: This is not an official plugin.







