Getting started
Requirements
- A Linux machine, NAS, or Raspberry Pi on the same network as your speakers (or one that can reach them — see Troubleshooting).
- Python 3.12+ and ffmpeg (converts browser recordings to MP3).
- A browser with a microphone. Browsers only allow the mic on HTTPS or
localhost.
Install
pipx install "roomcall[all]"
uv tool install "roomcall[all]"
pipx install "roomcall[sonos,cast]" # extras: sonos, airplay, cast
Install ffmpeg from your package manager (sudo dnf install ffmpeg, sudo apt install ffmpeg).
1. Check discovery
$ roomcall discover
Basement sonos 192.168.1.21 One
Office sonos 192.168.1.22 Era 100
Living Room airplay 192.168.1.23 HomePod mini
Kitchen Hub cast 192.168.1.24 Google Nest Hub
Bedroom TV cast 192.168.1.25 Chromecast with Google TV
If a device speaks several protocols (a Sonos also advertises AirPlay), RoomCall keeps the best one.
2. Start the server
roomcall serve
RoomCall prints the URL the speakers will download messages from. It must be reachable from
the speakers — set public_url in the config if auto-detection picks the
wrong interface.
3. Open it on your phone
Browsers block the microphone on plain http:// LAN addresses. Pick one:
- Reverse proxy (recommended): add RoomCall to Caddy/Nginx/Traefik with a local certificate and
open
https://roomcall.home.arpa. - Home Assistant: use the HTTP API from automations instead of the browser mic.
- Testing: open
http://localhost:8765on the machine running RoomCall.
Add it to your home screen for an app-like, full-screen push-to-talk button.
4. Group speakers into rooms
Copy roomcall.example.yaml to roomcall.yaml and list room members — see
Configuration.