Camus is a video chat app that uses WebRTC for direct peer-to-peer communication. Users can create public or private rooms, optionally protected by a password. In addition to streaming audio and video from a webcam and microphone, Camus also provides screen sharing and text chat.
- Webcam streaming
- Desktop sharing
- Text chat
- Room management (public/private, password/no password, guest limits)
You can find a live demo at https://camus.chat.
Make sure you have snapd installed. Install Camus:
$ sudo snap install camus
Once installed, Camus runs automatically as a Snap service. See the Snap service management documentation for details on starting and stopping services.
Go to localhost:5000
in your browser. For local testing, you can visit the
same room in multiple tabs and each tab will act as a separate client.
Camus requires Python 3.7 or higher since it makes use of Quart and async syntax. As usual, it's best to use a virtual environment.
Install Camus:
$ pip install camus-chat
Run Camus:
$ camus
Go to localhost:5000
in your browser. For local testing, you can visit the
same room in multiple tabs and each tab will act as a separate client.
You can find a pre-built Docker image on Docker Hub. Use the following command to pull the image and run a container:
$ docker run -d -p 5000:5000 mrgnr/camus
Go to localhost:5000
in your browser. For local testing, you can visit the
same room in multiple tabs and each tab will act as a separate client.
Simply click the button above or see the deployment documentation for detailed instructions.
See the technical overview to understand how Camus works.
See the development documentation for build & test instructions.
- [x] Audio/video streaming
- [x] Desktop sharing
- [x] Text chat
- [x] Cross-browser support (using Babel, Adapter)
- [x] Chromium/Chrome/Brave
- [x] Firefox
- [x] Safari
- [x] Support TURN server
- [x] Rewrite the UI using React [PR #3, #4]
- [x] Video feed controls (fullscreen, picture-in-picture, resolution, audio level, visibility) [PR #5]
- [x] Configurable TURN server in the client [PR #6]
- [x] Snap package [PR #7]
- [ ] Make the UI accessible
- [ ] Persistent storage (SQLite, Redis, and/or PostgreSQL)
- [ ] User accounts, persistent user settings
- [ ] Support SFU for client scalability