call-me is a free, open source collaboration & communication project written in JavaScript and released under AGPL-3.0. It has 764 GitHub stars, 89 forks and 0 open issues, and was last pushed 33 hours ago. On this registry it ranks #35 of 41 tracked projects in Collaboration & Communication, with 5 head-to-head comparisons available.

What is call-me?

What it is

Call-Me (MiroTalk CME) is an open-source, self-hosted WebRTC click-to-call solution for websites. It is written in JavaScript, licensed under AGPL-3.0, and listed under Business Software / Collaboration & Communication. The project provides a browser-based video communication widget that a website operator can host independently and embed as a Call-Me button.

The concrete problem it solves is immediate human help for website visitors without signup or setup. Support flows often require sign-up, setup, or a separate link, and browser-based one-to-one video calls may not be available. Call-Me lets a visitor join a room, see available users, and start a video call in the browser through WebRTC, with no signup or setup required according to the README.

Key capabilities

  • End-to-end encryption is listed for secure and private communications.
  • Users can join a room with a username or enter a name and call now, and rooms group participants who can see and call each other.
  • Participants can start video calls from a username button, switch cameras, microphones, and speakers, chat in real time, share screens or files, hide video, mute, toggle camera, and hang up.
  • Host Protection mode with a password can be enabled, and Web Push Notifications can alert users to incoming calls in the background.
  • A REST API can retrieve connected users, rooms, availability, active calls, and server stats, or initiate a call, while webhooks can deliver call lifecycle events.

Who uses it and how

  • Customer support teams can use it as a self-hosted click-to-call layer for websites, allowing visitors to reach an agent through a browser video call.
  • Sales or consultation teams can use direct links, rooms, and per-room branding to route visitors into a support or reception context.
  • Operators can integrate external systems with the REST API and webhooks to monitor rooms, users, active calls, and lifecycle events.

Getting started

The README shows two typical methods: install Node.js and npm, clone the repository, copy configuration files, run npm install, and start the application, or use Docker Compose with the official mirotalk/cme image; a live demo is also linked.

When to use it — and when not to

Call-Me is a good fit when a team needs a self-hosted, browser-based click-to-call widget for customer communication and can operate the service itself. It may be a poor fit when a team needs a fully managed product, because the README presents self-hosting through Node.js or Docker and does not list a paid hosted option. The AGPL-3.0 license and the absence of listed database, storage, or SMTP requirements mean teams should verify operational dependencies before deployment.

project readme (upstream, from github) — read inline

MiroTalk CME - Open Source Self-Hosted WebRTC Click-to-Call for Websites

Add video calling to your website with a self-hosted WebRTC Call-Me widget for instant customer communication.


GitHub Stars GitHub Forks

License: AGPLv3 Docker Pulls Last Commit Discord Author

Instant click-to-call video communication in your browser, no signup, no setup, powered by WebRTC.

Try Live Demo · Privacy · Documentation · Discord · Sponsor


Getting Started

Jump to: Features · Quick Start · Click to Call · Self-Hosting · Fast Integration · API · Webhooks

Features

  • End-to-End Encryption for secure and private communications.
  • Join with a username or enter a name to Call now.
  • Join a room (e.g. Support, Reception) to group users, everyone in the same room can see and call each other (defaults to Public).
  • Set your preferred language.
  • Initiate video calls by clicking the call button next to a recipient’s username.
  • Switch between cameras, microphones, and speakers during a call.
  • Chat in real time with participants.
  • Hide your video feed when needed.
  • Toggle your microphone (mute/unmute).
  • Toggle your camera (video on/off).
  • Share your screen (start/stop).
  • Share files with other participants.
  • Hang up the call when finished.
  • Enable Host Protection mode with a password.
  • Enable Web Push Notifications to get notified of incoming calls even when the app is in the background.
  • Use the REST API to retrieve connected users, rooms, availability status, active calls and server stats, or to initiate a call.
  • Receive Webhooks for call lifecycle events (user joined/left, call started/ended with duration) for external integrations.

Quick Start

Using Node.js

nodejs

Install Node.js and npm

# Clone this repo
git clone https://github.com/miroslavpejic85/call-me.git

# Go to to dir call-me
cd call-me

# Copy the config file
cp public/config.template.js public/config.js

# Copy .env.template to .env
cp .env.template .env

# Install dependencies
npm install

# Start the application
npm start

Using Docker

docker

Install docker engine and docker compose

# Clone this repo
git clone https://github.com/miroslavpejic85/call-me.git

# Go to to dir call-me
cd call-me

# Copy the config file
cp public/config.template.js public/config.js

# Copy .env.template to .env
cp .env.template .env

# Create your own docker-compose.yml
cp docker-compose.template.yml docker-compose.yml

# Get official image from Docker Hub
docker-compose pull

# Create and start containers
docker-compose up

  1. Open your browser and visit http://localhost:8000.

  2. Join with your username or Call the recipient directly.

  3. Select the connected recipient's username and click Call.

  4. Enjoy your one-to-one video call.


Click to Call

Direct links, rooms, and per-room branding

Allows a user to join the room as a user1

Lets the user2 join the room and initiate a call to the user1

Rooms

By default everyone joins the same shared Public room. You can optionally add a room parameter to group users into separate rooms (e.g. Support, Reception). Users only see and can call others in the same room.

Join a specific room as user1

Let user2 join the same room and call the user1

[!NOTE] The call target must be in the same room as the caller. If room is omitted, users join the default Public room.

You can explore a widget example that demonstrates this functionality here.

Per-room branding (optional)

Give each room its own name, subtitle, theme color, or GitHub visibility. Uncomment and edit the rooms map in public/config.template.js. Rooms without an entry keep the default look. Visual only — not a security feature.


Self-Hosting

Ubuntu requirements and install scripts

setup

Requirements

  • A clean server running Ubuntu 22.04 or 24.04 LTS
  • Root access to the Server
  • A domain or subdomain pointing to your server’s public IPv4

Note

When prompted, simply enter your domain or subdomain. Then wait for the installation to complete.

# Install
wget -qO cme-install.sh https://docs.mirotalk.com/scripts/cme/cme-install.sh \
  && chmod +x cme-install.sh \
  && ./cme-install.sh
# Uninstall
wget -qO cme-uninstall.sh https://docs.mirotalk.com/scripts/cme/cme-uninstall.sh \
  && chmod +x cme-uninstall.sh \
  && ./cme-uninstall.sh
# Update
wget -qO cme-update.sh https://docs.mirotalk.com/scripts/cme/cme-update.sh \
  && chmod +x cme-update.sh \
  && ./cme-update.sh

Fast Integration

iframe

Easily integrate Call-Me into your website or application with a simple iframe. Just add the following code to your project:

<iframe
    allow="camera; microphone; speaker-selection; fullscreen; clipboard-read; clipboard-write; web-share; autoplay"
    src="https://cme.mirotalk.com/"
    style="width: 100vw; height: 100vh; border: 0px;"
></iframe>

API

REST endpoints and curl examples

Get all connected users

## Get all connected users
curl -X GET "http://localhost:8000/api/v1/users" -H "authorization: call_me_api_key_secret" -H "Content-Type: application/json"
curl -X GET "https://cme.mirotalk.com/api/v1/users" -H "authorization: call_me_api_key_secret" -H "Content-Type: application/json"

## Get connected users in a specific room (optional `room` filter)
curl -X GET "http://localhost:8000/api/v1/users?room=Support" -H "authorization: call_me_api_key_secret" -H "Content-Type: application/json"

## Get detailed users info (room, media status, availability, connectedAt)
curl -X GET "http://localhost:8000/api/v1/users?details=true" -H "authorization: call_me_api_key_sec

readme truncated — read the full docs on github

Frequently asked questions

Is call-me free to use?

call-me is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does call-me do?

📞 Open-source, self-hosted WebRTC click-to-call solution for websites. Add a video Call-Me button and let visitors instantly connect with your team through bro

What is call-me written in?

call-me is primarily written in JavaScript. Its source is publicly available at https://github.com/miroslavpejic85/call-me, and it has 764 GitHub stars.