Welcome to Mitsi, a modern, open-source video conferencing platform powered by mediasoup. Inspired by Jitsi, Mitsi delivers low-latency, scalable video and audio calls, screen sharing, and real-time chat using WebRTC. Built with a microservices architecture, Mitsi is designed for extensibility, ease of deployment, and community contributions.
- Scalable: Leverages mediasoup’s Selective Forwarding Unit (SFU) for efficient media routing.
- Modular: Separate repositories for each microservice ensure independent development and deployment.
- Developer-Friendly: Built with TypeScript, Node.js, and React, with clear documentation and tools like npm, ESLint, Prettier, and Jest.
- Open-Source: Licensed under the MIT License to encourage adoption and contributions.
Mitsi is organized into separate GitHub repositories under the softhon organization:
- mitsi-web: Mitsi web client - react base web application for mitsi.
- mitsi-mobile: Mitsi mobile app - react native application for mitsi.
- mitsi-signaling: Mitsi Signaling Service for manage peer connections and room coordination.
- mitsi-media: Mitsi media service powered by mediasoup for media routing.
- mitsi-room-management: Manages rooms and participants (Node.js, Express).
- mitsi-recording: Media recording and storage (Node.js, S3).
- mitsi-docs:Mitsi documentation - a guide for contributors and developers.
To run Mitsi locally or contribute, follow these steps:
-
Clone Repositories:
git clone https://github.com/softhon/mitsi-<repo>.git
Clone the desired repos (e.g.,
mitsi-client,mitsi-signaling,mitsi-media,mitsi-room-managementfor the MVP). -
Install Prerequisites:
- Node.js >= 18
- npm >= 9
- Docker (optional, for containerized deployment)
-
Set Up Locally:
- Navigate to each repo and follow its
README.mdordocs/setup.mdfor specific instructions. - For a full stack, use the
docker-compose.ymlin this repo:docker-compose up
- Navigate to each repo and follow its
-
Run Development Environment:
- Example for
mitsi-signaling:cd mitsi-signaling npm install npm run dev - Visit
http://localhost:3000to test the signaling server.
- Example for
-
Explore Documentation:
- Visit mitsi.app (coming soon) or browse this repo’s
docs/folder for architecture, API details, and setup guides.
- Visit mitsi.app (coming soon) or browse this repo’s
Mitsi uses a microservices architecture with separate repositories for modularity:
- Client: React app (
mitsi-client) connects to signaling and room management services. - Signaling: WebSocket service (
mitsi-signaling) handles peer coordination and ICE candidates. - Media: Mediasoup SFU (
mitsi-media) routes audio/video streams. - Room Management: Tracks rooms and participants (
mitsi-room-management). - Supporting Services: Authentication, recording, chat, and analytics in separate repos.
See docs/architecture.md for a detailed diagram and API contracts.
We welcome contributions! To get started:
- Read CONTRIBUTING.md for guidelines.
- Browse issues in each repo, especially those tagged
good-first-issue. - Join our Discord (coming soon) for discussions.
Mitsi is licensed under the MIT License. Each repository includes its own LICENSE file.