Mitsi – Mediasoup Example Project: An Open-Source Video Conferencing Built on Mediasoup

Mitsi – Mediasoup Example Project: An Open-Source Video Conferencing Built on Mediasoup

Hey everyone,
I wanted to share a project I’ve been working on for the past few months: Mitsi, an open-source video conferencing platform powered heavily by Mediasoup.

I built Mitsi to work with Mediasoup in depth and to create a clean, simple starting point for anyone looking to build a WebRTC/Mediasoup application. If you’re exploring Mediasoup or planning to build something similar, the codebase might be a helpful reference.

Tech Stack

  • React – web client

  • Mediasoup Client – WebRTC frontend

  • Mediasoup SFU – media routing

  • SocketIO – signaling between the web client and signaling service

  • gRPC – communication between the signaling service and media service

  • Nodejs – backend services

  • Redis – state sharing, caching, pub/sub

  • Docker - application containerization

  • Umami – analytics platform

  • Prometheus + Grafana – metrics and monitoring

Architecture Overview

React Web Client 
     ↓ (Socket.IO)
Signaling Service 
     ↓ (gRPC)
Media Service (Mediasoup SFU)
     ↓ (WebRTC Transports)
React Web Client

Links

:link: Live Demo: https://mitsi.app
:laptop: GitHub Repo: https://github.com/softhon

I’m also open to collaborating with anyone working on Mediasoup-based projects. If you’re building something or need help, feel free to reach out.

Happy to share, learn, and connect with the community!

2 Likes

Hey, thanks a lot for sharing Mitsi!

Really appreciate the clean UI, it looks great. I haven’t had the chance to dive deep into the codebase yet, but from what I’ve seen so far it looks very well structured and promising.

Quick question: is the live demo currently limited to 2 participants per room? I couldn’t join with more than two users, so just wanted to confirm. Also noticed a few buttons that don’t seem to trigger any actions yet, not sure if they’re still under development.

I’m also open to collaborating with anyone working on Mediasoup-based projects. If you’re building something or need help, feel free to reach out.

If you have pleasure, feel free to check out our WebRTC projects. MiroTalk SFU is also based on mediasoup:

:backhand_index_pointing_right: https://github.com/miroslavpejic85/mirotalksfu

Keep up the great work! :rocket:

1 Like

By the way, I gave the first GitHub :star: on the mitsi-web repo :wink:

1 Like

Ah ok, I just realized that if I open the same room in multiple tabs of the same browser, only one tab can join.

1 Like

Thank you.

No, several participants can join. However you will be disconnected from your previous session if you are joining same room multiple times via another tab in same browser window.

Also, our latest deployment includes fixes for those buttons you noticed.

Great, thanks for sharing, Will check it out.

1 Like

Thank you so much :hugs:

1 Like

I would like to inquire whether this project has the capability to record video streams in mp4 or other file formats?

Hey Obruche,

You’re welcome, I really like the project! It’s been genuinely inspiring and has motivated me to improve my own project as well. Keep up the awesome work :clap:

I’d like to share a few small suggestions and possible improvements I noticed while using the app. I hope these are helpful:

Home page

  • Menu bar: Clicking on Documentation, Projects, or Community doesn’t seem to trigger any action.

  • Footer: The links for Documentation, API, and Support also appear to be inactive.

Before joining a room

  • The selected microphone and camera devices, as well as their enabled/disabled state, are not preserved.

  • Each time a room is joined, the microphone and camera start disabled, and the first device in the list is selected by default.

  • It would be great if the app could remember the user’s last selected devices and their on/off state.

Room experience

  • When new microphone or camera devices are connected or removed, the device selection lists don’t refresh automatically.

  • The emoji (smile) icon in the chat doesn’t respond when clicked.

  • In the participants list, the settings button (three dots) doesn’t seem to open any options when clicked.

  • To: Everyone” appears before the chat footer. It’s unclear whether this should always remain as is, or if the intention was to allow selecting individual participants to chat with.

  • The same participant name can be used by multiple users.

Documentation

It would be really nice to have:

  • A clear quick-start guide for running everything locally on a PC for beginners.

  • Documentation for self-hosting, especially examples using Docker or PM2.

Overall, this is a fantastic project, and I truly appreciate the effort you’ve put into it. Thanks again for sharing it with the community, and best of luck moving forward!

Kind regards,
Miroslav

Wooow, this is so detailed .
Thank you so much for this detailed feedback and recommendation.
Thank you for the time you put into it :raising_hands:.
I am going to follow through and make the fixes.

1 Like

Not yet, but development is in progress