Service: Intercom - EyevinnOSC/community GitHub Wiki
Open Source Intercom is a low-latency, browser-based voice intercom built on WebRTC for broadcast and media production environments. It provides real-time audio communication organized into productions and lines, with support for push-to-talk, hotkeys, WHIP/WHEP ingress and egress, and external sharing.
This guide walks you through deploying Open Intercom on Eyevinn Open Source Cloud and making your first call.
Key concepts:
- A production is a communication session โ typically one per show or event
- A line is an audio channel within a production โ participants on the same line hear each other
- An Audio Feed line is a listen-only monitoring channel (e.g., program output from a mixer)
- An Eyevinn OSC account. If you have not already signed up, the free trial gives you 15 days of access
- 3 available service slots for the manual setup (SMB + CouchDB + Intercom). For continued usage, see the paid-plan alternatives
- A supported browser: Chrome 115+, Edge 115+, Firefox 113+, Safari 16.4+, or Opera 101+
- A microphone (built-in or external) โ the app will request microphone permission on first visit
The fastest way to get started is the dedicated Intercom portal at intercom.apps.osaas.io. It handles all backend setup (database, media bridge) automatically โ you just pick a name and go.
- Go to intercom.apps.osaas.io and sign in with your OSC account (or start a 14-day free trial)
- Click Create New Site
- Enter a site name โ lowercase letters and numbers only (e.g.
myintercom) - Click Create and wait for deployment (usually about 2 minutes)
- When the site is ready, click Open to launch the Intercom application
That's it โ you can now skip ahead to Step 4: Access the application to set up your display name and start making calls.
When to use the manual setup instead: The easy install uses shared infrastructure with sensible defaults. If you need a dedicated Symphony Media Bridge, a custom database configuration, or want to self-host any component, follow the manual Steps 1โ3 below.
The Intercom system uses Symphony Media Bridge (SMB) as its WebRTC media server to handle real-time audio between participants.
Navigate to the Symphony Media Bridge open web service and click Create docker-wrtc-sfu.
Fill in the following values:
| Field | Value | Description |
|---|---|---|
| Name | intercom |
A name for your SMB instance |
| ApiKey | (choose a secure key) | The API key for accessing the SMB. You will need this again in Step 3 |
When the instance is running, click on its card to see the URL. Take note of both the URL and the API key you chose โ you will need them in Step 3.
The Intercom system stores production and session data in a CouchDB database. You need to create both a CouchDB instance (the server) and a database inside it.
Navigate to the CouchDB open web service and click Create couchdb.
Give the instance the name intercom and choose an admin password.
Important: Use only alphanumeric characters in your password. Special characters like
@,:,/, or#will break the database connection URL later.
When the instance is running, click on its card to see the URL. Take note of this URL โ you will need it in Step 3.
Click the URL to open the CouchDB admin panel (Fauxton). Log in with the admin password you set.
Click Create Database in the top-right corner. Name the database intercom and press Create.
Go back to the OSC web console and navigate to the Intercom open web service. Click Create system.
Fill in the following values:
| Field | Value | Description |
|---|---|---|
| Name | tutorial |
A friendly name for your intercom instance |
| SmbUrl | (your SMB URL from Step 1) | The Symphony Media Bridge URL |
| SmbApiKey | (the API key you chose in Step 1) | The API key for the SMB |
| DbUrl | https://admin:<password>@<url>/intercom |
Your CouchDB URL including credentials and database name (from Step 2) |
| OscAccessToken | (your PAT) | Personal access token for sharing lines with external users |
About DbUrl: The URL should follow this format: https://admin:<password>@<tenant>-intercom.apache-couchdb.auto.prod.osaas.io/intercom. For example: https://admin:[email protected]/intercom.
About OscAccessToken: This is needed to share production lines with external users (Step 8). You can store the token in a secret called osctoken for security. You can leave it empty for now, but sharing will not work without it.
If the instance does not start correctly, check the following:
-
Database URL format โ Verify the URL includes credentials, hostname, and database name:
https://admin:<password>@<hostname>/<database-name> -
Database exists โ Verify the database named
intercomwas created inside the CouchDB instance (Step 2) - SMB reachable โ Verify the SmbUrl is accessible and the API key matches (Step 1)
- Secrets โ If using secrets for any fields, make sure they exist in this service's scope
When the instance is up and running, click on its card to open the Intercom application.
Your browser will ask for microphone permission. Click Allow to proceed.
Accidentally blocked? Click the lock icon in your browser's address bar, reset the microphone permission to "Ask" or "Allow", and reload the page.
You will see the User Settings page. Enter a display name โ this is the name other participants will see โ then select your audio input and output devices, and press Next.
Click the Create button in the top-right corner of the productions list page.
Enter a Production Name and a name for your first line. You can add additional lines by clicking + Add Line.
Each line has an Audio Feed checkbox. Check this for listen-only monitoring lines (e.g., a program output feed from a mixer). In an Audio Feed line, listeners cannot talk โ only the audio source is heard.
Click Create Production when ready.
Example setup for a live broadcast:
- "Director" line โ director and camera operators
- "Talent" line โ on-air presenters
- "Program Feed" line (Audio Feed โ) โ listen-only broadcast output
Click the Manage button on the production list page to open the management view. Here you can modify your existing productions.
From the management view you can:
- Rename a production or line by clicking the edit icon (โ๏ธ) next to its name
- Delete a line by clicking the red Delete button next to it (only available when the line has no active participants)
- Delete a production by clicking Delete Production at the bottom of the expanded card (only available when no lines have active participants)
- Add a new line by clicking Add Line, entering a name, and optionally checking Audio Feed
Note: You can only delete lines or productions that have no active participants. If participants are connected, the delete buttons will be disabled.
After creating a production, click the back arrow to return to the production list. Your new production appears as a card showing the production name and participant count.
Click the card to expand it and see all lines with their current participants. Click Join on any line to enter the call.
Once joined, you will see the call view with:
- Participant list showing who is on the line
- Push-to-talk โ hold to speak (configured via hotkeys)
- Mute/unmute controls
- Hotkey configuration for keyboard shortcuts (mute, speaker, PTT, volume)
- A kebab menu (โฎ) for sharing the line or viewing WHIP/WHEP URLs
Invite users to your OSC tenant (team) and ask them to navigate to the Intercom service. They click on the instance card you created and will see the same productions. Only users logged in and part of your team have access.
If you want to share a line with someone not logged in to OSC, you can generate single-use invite URLs.
From the production list: Click the share icon (๐) on any production card. This shows unique URLs for all lines in that production. From inside a call: Click the kebab menu (โฎ) and select Share Line to generate a URL for the current line.
Note: Each generated URL can only be used once. Generate a new URL for each recipient. If you used the manual setup, external sharing requires the
OscAccessTokento be set (Step 3).
Each line supports configurable keyboard shortcuts for:
- Mute/unmute your microphone
- Push-to-talk (hold to speak, release to mute)
- Speaker on/off (mute incoming audio)
- Volume up/down
-
Global mute (press
Pto mute all lines)
Access hotkey configuration from the kebab menu (โฎ) inside a call.
Lines support external audio sources via WHIP (WebRTC-HTTP Ingestion Protocol) and external listeners via WHEP (WebRTC-HTTP Egress Protocol). This lets you:
- Push audio from OBS, hardware encoders, or other WebRTC sources into a line
- Pull audio from a line into external players or recording systems
Generate WHIP/WHEP URLs from the kebab menu (โฎ) inside a call.
| Problem | Possible cause | Solution |
|---|---|---|
| No audio | Microphone blocked | Click the lock icon in the address bar, allow microphone, reload |
| No audio | Wrong input device | Click your username (top-right) to reopen settings, select correct device |
| "Browser not supported" | Outdated browser | Update to Chrome 115+, Firefox 113+, Safari 16.4+, or Edge 115+ |
| Cannot create instance | Database URL wrong | Verify format: https://admin:<password>@<host>/<database>
|
| Sharing doesn't work | Missing OscAccessToken | Set the OscAccessToken field on your intercom instance (Step 3) |
| Echo or feedback | Multiple tabs open | Only join a line from one browser tab at a time |
| Connection drops | Restrictive network/firewall | WebRTC needs UDP access; contact your network admin about STUN/TURN |
- GitHub: intercom-manager (backend) ยท intercom-frontend (frontend)
-
API documentation: Available at
/api/docs/on your running intercom instance (Swagger UI) - Stream Deck integration: companion-module-eyevinn-intercom for Bitfocus Companion
- Support: [email protected]