Categories
All Softwares
Sublime Text VSCode Binaries Postman TeamViewer Firebase Visual Studio Code Contentful Tribe Circle Notion Datadog NewRelic Vmix Archbee Docker Desktop Bitly GitHub BitBucket Upsource Zapier Make Medium substack Facebook Amazon S3 Maya 3DS MAX Adobe Substance Airtable Roam Research Azure DevOps Retool Powerapps Appsheet 1Password Plex Emby Netflix Apple HomeKit Algolia Lightshot Confluence Toad tableau Data Studio Salesforce SAP Calendly Google photos Bloomberg Terminal BigQuery ML Google AutoML Tables Shopify BigCommerce Google Drive Redis Memcached Windows media player WhatsApp Heroku Render Looker Quizlet Google Analytics Auth0 Trello Elasticsearch Adobe Premiere Pro Zerotier Zoom Skype Docker Polypane Google Chrome Microsoft Edge Safari Gitbook Gmail Google Vertex AI Kdb+ Amplitude Google Docs Typora Roboflow ML Kit Azure Intercom Quicken YNAB Uptime Robot Figma npm TigerGraph Amazon Neptune Fivetran Okta YouTube LastPass Mailchimp Sendinblue Adobe Acrobat Pocket Reddit Onenote Shogun DaVinci Resolve UiPath Taliscale Adobe Lightroom FullStory LogRocket RescueTime Boxcryptor LaunchDarkly ArcGIS AWS SageMaker Tailscale NordVPN WooCommerce Twitter Dropbox Nagios Zabbix Prtg Google Cloud Webflow ActiveCampaign Quickbooks .Net Maui Airplane.dev Pipedream Evernote Autodesk AutoCAD HCL Connections Google Sheets Excel Rundeck Ansible Tower Salt Twilio Pastebin Zoho Unity3D GameMaker AWS Config GCP Cloud Asset inventory AWS GuardDuty Unreal Engine (UE4) Jira YouTrack Stytch Suite CRM Greynoise Photoshop LinkTree BlackBoard Zendesk Discord Rollout.io Disqus Oracle Fusion ERP Cloud Odoo Microsoft Dynamics Alfred Sophos Firewall UniFi Security Gateway Azure AD Doodle Office Online Power BI MicroStrategy Qlik Ampache Socrata Drone CI IOS WordPress IDM FDM Ninja Download Manager McAfee Google Meet WIX cPanel LucidChart HubSpot Landbot Typeform CCleaner Ecwid Spotify Stackstrom N8N Substance Painter Onshape SketchUp Canny Miro XMind Segment GoogleForms Adobe Illustrator MultiSim Proteus Prezi Slack Microsoft Teams SumSub JAWS Wetransfer Framer Microsoft 365 Telegram Threema Signal Lokalise Crowdin Phrase WolframAlpha Dataclay Templater Bot WorkOS FrontEgg Snorkel AI ZohoCRM Voicemod Chromatic Percy POEditor Transifex Microsoft Office Selenium vBulletin Xenforo Hightouch Logseq Bundlephobia Webpack Esbuild Rollup Session Berty WHMCS Stripe Billing Google Camera ImgIX Netlify Google Keep SocialPilot Hootsuite Firebase Analytics Access Manager Wordle Amazon Redshift Snowflake Microsoft Active Directory ClubHouse Tenable Nessus Obsidian Scrivener IDA Neo4j Pushbullet Pushover TinkerCAD Fusion360 SolidWorks TablePlus Cryptomator Glasswire Comodo Firewall Coyim Splunk Hungry Bring Panther IFTTT openHAB Alexa Google Home Twitch Asana IBM Watson Discovery FL Studio Ableton Google Maps Gather Aseprite Instagram Agora Wowza Docuware ELO Office Apollo GraphQL Supabase Hasura Stepzen Postgraphile Lyket.dev Kahoot Clubdesk Fairgate Bandicam Revoltchat Element Imply Pinot MongoDB Oracle Peoplesoft CurseForge Google Tag Manager MS SQL AppWrite Nhost AWS Kendra QnA Maker Apigee Google Cloud IoT Core Microsoft OneNote Amazon API Gateway Qualtrics Sprig Hotjar Sibelius Finale Dorico Snyk Common Room Orbit Toggl Track Adobe Scan Microsoft Lens CamScanner Vercel Stack Overflow Traktor Pro 3 Markup CMS Documentation Atlassian Confluence Raindrop Akeneo Salsify Informatica SuiteCRM VtigerCRM Cruise Tesla autopilot Waymo Adobe Animate Pencil2D Men&Mice Solarwinds Infoblox Device42 AWS WAF
MiroTalk P2P

MiroTalk P2P

Open Source Alternative to Zoom, Google Meet
Language
JavaScript
Stars
3488
Watchers
3488
Forks
621
Open Issues
5
Last Updated
5/9/2025

REAMDE.md

MiroTalk P2P


Author License: AGPLv3 License: Regular License: Extended Community

Free WebRTC - P2P - Simple, Secure, Fast Real-Time Video Conferences with support for up to 8k resolution and 60fps. It's compatible with all major browsers and platforms.


Explore MiroTalk P2P



Join our Community for questions, help, support, ideas, and discussions on Discord


Features
  • Is 100% Free - Open Source under (AGPLv3) - Self Hosted and PWA!
  • No downloads, plugins, or logins required – completely browser-based.
  • Unlimited conference rooms with no time limitations.
  • Translated into 133 languages.
  • Support for the OpenID Connect (OIDC) authentication layer.
  • Host protection to prevent unauthorized access.
  • User auth to prevent unauthorized access.
  • Room password protection.
  • JWT.io securely manages credentials for host configurations and user authentication, enhancing security and streamlining processes.
  • Compatible with desktop and mobile devices.
  • Optimized mobile room URL sharing.
  • Webcam streaming with front and rear camera support for mobile devices.
  • Crystal-clear audio streaming with speaking detection and volume indicators.
  • Screen sharing for presentations.
  • File sharing with drag-and-drop support.
  • Choose your audio input, output, and video source.
  • Supports video quality up to 8K and 60 FPS.
  • Supports advance Video/Document Picture-in-Picture (PiP) offering a more streamlined and flexible viewing experience.
  • Record your screen, audio, and video.
  • Snapshot video frames and save them as PNG images.
  • Chat with an Emoji Picker for expressing feelings, private messages, Markdown support, and conversation saving.
  • ChatGPT (powered by OpenAI) for answering questions, providing information, and connecting users to relevant resources.
  • Speech recognition for sending spoken messages.
  • Push-to-talk functionality, similar to a walkie-talkie.
  • Advanced collaborative whiteboard for teachers.
  • Real-time sharing of YouTube embed videos, video files (MP4, WebM, OGG), and audio files (MP3).
  • Full-screen mode with one-click video element zooming and pin/unpin.
  • Customizable UI themes.
  • Right-click options on video elements for additional controls.
  • Direct peer-to-peer connections for low-latency communication through WebRTC.
  • Supports REST API (Application Programming Interface).
  • Integration with Mattermost for enhanced communication.
  • Integration with Slack for enhanced communication.
  • Utilizes Sentry for error reporting.
  • And much more...
About
Start videoconference
  1. Open MiroTalk P2P or alternative link.
  2. Choose a room name and click Join Room.
  3. Grant camera and microphone access.
  4. Share the room URL and wait for participants to join the video conference.
Direct Join
  • You can directly join a room by using links like:

  • https://p2p.mirotalk.com/join?room=test&name=mirotalk&avatar=0&audio=0&video=0&screen=0&hide=0&notify=0

  • https://mirotalk.up.railway.app/join?room=test&name=mirotalk&avatar=0&audio=0&video=0&screen=0&hide=0&notify=0

    Params Type Description
    room string Room Id
    name string User name
    avatar Mixed User avatar
    audio boolean Audio stream
    video boolean Video stream
    screen boolean Screen stream
    hide boolean Hide myself
    notify boolean Welcome message
    token string jwt token

Note

The token parameter are optional when either HOST_PROTECTED or HOST_USER_AUTH is set to true in the .env file. The valid list of users is defined in the HOST_USERS configuration.

Host Protection Configuration

When host protection or host user auth is enabled, the host/users must provide a valid username and password as specified in the .env file.

Params Value Description
HOST_PROTECTED true if protection is enabled, false if not (default false) Requires the host to provide a valid username and password during room initialization.
HOST_USER_AUTH true if user authentication is required, false if not (default false). Determines whether host authentication is required.
HOST_USERS JSON array with user objects: {"username": "username", "password": "password"} List of valid host users with their credentials.
Quick start

nodejs

  • Before running MiroTalk P2P, ensure you have Node.js installed.
# clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalk.git
# go to mirotalk dir
$ cd mirotalk
# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# Copy app/src/config.template.js in app/src/config.js (edit it according to your needs)
$ cp app/src/config.template.js app/src/config.js
# install dependencies
$ npm install
# start the server
$ npm start
Docker

docker

# clone this repo
$ git clone https://github.com/miroslavpejic85/mirotalk.git
# go to mirotalk dir
$ cd mirotalk
# copy .env.template to .env (edit it according to your needs)
$ cp .env.template .env
# Copy app/src/config.template.js in app/src/config.js (edit it according to your needs)
$ cp app/src/config.template.js app/src/config.js
# Copy docker-compose.template.yml in docker-compose.yml (edit it according to your needs)
$ cp docker-compose.template.yml docker-compose.yml
# Get official image from Docker Hub
$ docker pull mirotalk/p2p:latest
# create and start containers
$ docker-compose up # -d
# to stop and remove resources
$ docker-compose down
Embed a meeting

iframe

To embed a meeting within your service or app using an iframe, you can use the following code:

<iframe
    allow="camera; microphone; display-capture; fullscreen; clipboard-read; clipboard-write; web-share; autoplay"
    src="https://p2p.mirotalk.com/newcall"
    style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
Documentations
  • Ngrok/HTTPS: You can start a video conference directly from your local PC and make it accessible from any device outside your network by following these instructions, or expose it directly on HTTPS.

  • Stun/Turn: Install your own Stun & Turn by following this instructions.

  • Self-hosting: For self-hosting MiroTalk P2P on your own dedicated server, please refer to this comprehensive guide. It will provide you with all the necessary instructions to get your MiroTalk P2P instance up and running smoothly.

  • Rest API: The API documentation uses swagger at http://localhost:3000/api/v1/docs. Or check it out on live.

1. Stats Endpoint (Get server statistics)

curl -X GET "http://localhost:3000/api/v1/stats" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
curl -X GET "https://p2p.mirotalk.com/api/v1/stats" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
curl -X GET "https://mirotalk.up.railway.app/api/v1/stats" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"

2. Meetings Endpoint (Get active meetings)

curl -X GET "http://localhost:3000/api/v1/meetings" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
curl -X GET "https://p2p.mirotalk.com/api/v1/meetings" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
curl -X GET "https://mirotalk.up.railway.app/api/v1/meetings" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"

3. Create Meeting

curl -X POST "http://localhost:3000/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
curl -X POST "https://p2p.mirotalk.com/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"
curl -X POST "https://mirotalk.up.railway.app/api/v1/meeting" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json"

4. Join Meeting (Basic)

curl -X POST "http://localhost:3000/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","avatar":false,"audio":true,"video":true,"screen":false,"hide":false,"notify":true}'
curl -X POST "https://p2p.mirotalk.com/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","avatar":false,"audio":true,"video":true,"screen":false,"hide":false,"notify":true}'
curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","avatar":false,"audio":true,"video":true,"screen":false,"hide":false,"notify":true}'

5. Join Meeting with Token

curl -X POST "http://localhost:3000/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":true,"video":true,"screen":false,"hide":false,"notify":true,"token":{"username":"username","password":"password","presenter":true,"expire":"1h"}}'
curl -X POST "https://p2p.mirotalk.com/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":true,"video":true,"screen":false,"hide":false,"notify":true,"token":{"username":"username","password":"password","presenter":true,"expire":"1h"}}'
curl -X POST "https://mirotalk.up.railway.app/api/v1/join" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"room":"test","name":"mirotalk","audio":true,"video":true,"screen":false,"hide":false,"notify":true,"token":{"username":"username","password":"password","presenter":true,"expire":"1h"}}'

6. Generate Token

curl -X POST "http://localhost:3000/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":true,"expire":"1h"}'
curl -X POST "https://p2p.mirotalk.com/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":true,"expire":"1h"}'
curl -X POST "https://mirotalk.up.railway.app/api/v1/token" -H "authorization: mirotalkp2p_default_secret" -H "Content-Type: application/json" --data '{"username":"username","password":"password","presenter":true,"expire":"1h"}'

These commands should now work correctly with the MiroTalk P2P

Hetzner, Hostinger & Contabo

Hetzner

This application is running for demonstration purposes on Hetzner, one of the best cloud providers and dedicated root servers.


Use my personal link to receive €⁠20 IN CLOUD CREDITS.


Hostinger

Fast, reliable hosting with 24/7 support and great performance. Start today! Check out Hostinger now


Contabo

Experience also top-tier German web hosting – dedicated servers, VPS, and web hosting at unbeatable prices. Explore now here


To set up your own instance of MiroTalk P2P on a dedicated cloud server, please refer to our comprehensive self-hosting documentation. This guide will walk you through the process step by step, ensuring a smooth and successful deployment.

Live Demos

https://p2p.mirotalk.com

hetzner-qr


https://mirotalk.up.railway.app

railway-qr

Security

For Security concerning, please follow this documentation.

Credits
  • ianramzy (html template)
  • vasanthv (webrtc-logic)
  • fabric.js (whiteboard)
Contributing
  • Contributions are welcome and greatly appreciated!
  • Just run before npm run lint
License

AGPLv3

MiroTalk P2P is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please respect the license conditions, In particular modifications need to be free as well and made available to the public. Get a quick overview of the license at Choose an open source license.

To obtain a MiroTalk P2P license with terms different from the AGPLv3, you can conveniently make your purchase on CodeCanyon. This allows you to tailor the licensing conditions to better suit your specific requirements.

Support the project

Do you find MiroTalk P2P indispensable for your needs? Join us in supporting this transformative project by becoming a backer or sponsor. By doing so, not only will your logo prominently feature here, but you'll also drive the growth and sustainability of MiroTalk P2P. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact – back MiroTalk P2P today and be part of this exciting journey!

BroadcastX Hetzner
LuvLounge QuestionPro
BrowserStack CrystalSound
Cloudron Kiquix
LambdaTest
Advertisers
Hostinger Contabo

Diving into Additional MiroTalk Projects:

MiroTalk SFU

Try also MiroTalk SFU selective forwarding unit real-time video conferences, optimized for large groups. Unlimited time, unlimited concurrent rooms each having 8+ participants, up to ~ 100 per single CPU.

MiroTalk C2C

Try also MiroTalk C2C peer to peer real-time video conferences, optimized for cam 2 cam. Unlimited time, unlimited concurrent rooms each having 2 participants.

MiroTalk BRO

Try also MiroTalk BRO Live broadcast (peer to peer) live video, audio and screen stream to all connected users (viewers). Unlimited time, unlimited concurrent rooms each having a broadcast and many viewers.

MiroTalk WEB

Try also MiroTalk WEB a platform that allows for the management of an unlimited number of users. Each user must register with their email, username, and password, after which they gain access to their personal dashboard. Within the dashboard, users can manage their rooms and schedule meetings using the desired version of MiroTalk on a specified date and time. Invitations to these meetings can be sent via email, shared through the web browser, or sent via SMS.


This project is tested with BrowserStack.


Categories:
Communication