A private meeting room for a few people is a small app over an open media server such as LiveKit: a page for names and passcodes, video tiles, screen share and chat, which an agent writes in a sitting. The weekend goes on the network, not the code: a public server with open UDP ports and TURN relaying so people behind strict office firewalls can join, a lobby that holds guests, and testing on phones and bad Wi-Fi. What you don't get is the 200-person scale, breakout rooms, polls, captions, dial-in numbers and the fact that clients and IT departments already have Webex whitelisted.
Before you buildWebex Free already covers 40-minute meetings for up to 100 people, and Jitsi's public instance has no time limit. Build your own only if you need control over where the call runs.
Build me a private meeting room server to replace Webex Meet for small groups. Requirements: - Node.js 22 + TypeScript: a Fastify app and a React front end built with Vite, using LiveKit (`livekit-server-sdk`, `@livekit/components-react`). `docker compose up` starts the app, a LiveKit server and Caddy for HTTPS on my domain from .env. - Storage: better-sqlite3 in ./data/rooms.db: rooms (slug, title, passcode hash, created), and a join log (room, display name, time). No video is stored. - Host access: one password in .env (signed cookie) to create rooms at /admin. Each room gets a link /r/<slug> and a passcode; the host can lock the room or end it for everyone. - Guests: open the link, enter a name and the passcode, and wait in a lobby. The host sees a list and admits or removes people. Only admitted guests get a LiveKit token, signed by the server for 4 hours. - Call screen: camera and microphone toggles with a device picker, grid and speaker views, screen share, chat over LiveKit data messages, raise-hand button, and a cap of 25 people per room. - Network: configure LiveKit's built-in TURN server on port 443 with TLS so guests behind strict firewalls can join. List every port to open in the README. - Single user. No accounts, no telemetry; the only outbound calls are the media server and Let's Encrypt. - Out of scope: recording, phone dial-in, breakout rooms, polls, captions, calendar integrations. - README: DNS and firewall steps, testing from a phone on mobile data and from a locked-down office network, and an honest note that 25 people on one small VPS will strain its bandwidth.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Webex Meet.
Add recording to the meeting room server in this folder. Requirements: - A host-only Record button that starts a LiveKit Egress room composite recording to MP4 in ./recordings/<room>/<date>. - Show a visible 'recording' banner to every participant while it runs, and log who started and stopped it. - Add Redis and the egress service to docker-compose, with the memory and CPU limits documented. - A page listing recordings with download and delete buttons, behind the host password. - Update the README, including a note that recording people may need their consent where you live.
Add scheduled meetings to the meeting room server in this folder. Requirements: - In /admin, create a meeting with a title, start time, duration and a list of email addresses. - Send each address an email through nodemailer SMTP from .env with an .ics attachment (`ics`) and the room link. - Rooms created this way open to guests 10 minutes before the start and close an hour after the end. - A cancel button that sends a cancellation .ics. - Update the README with the SMTP settings.
Add post-call transcripts to the meeting room server in this folder. Requirements: - After a recorded call, extract the audio with ffmpeg and run `whisper.cpp` locally (model path in .env). - Write a .vtt file and a plain-text transcript next to the recording, with timestamps every 30 seconds. - Show the transcript on the recordings page with a search box. - Nothing leaves the machine; document the time it takes per hour of audio on the test machine. - Update the README.
A meeting tool is judged on the day the important call has to work. Companies pick Webex because their security team approved it, their devices and rooms already run it and Cisco supports it. Individuals mostly pay to lift the free plan's 40-minute limit, which a self-hosted room doesn't have but also doesn't come with a support number.
Estimate · A VPS with enough bandwidth costs about $5-15 a month; the domain is a few dollars a year. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Up to 100 attendees, 40-minute meetings, local recording, screen sharing with annotation, unlimited whiteboards, noise cancellation, basic support. |
| Webex Meet | $14.50 | $12 | Up to 200 attendees, meetings up to 24 hours, local plus 10 GB of cloud recording, closed captions in English, French, German and Spanish, breakout rooms, polls and Q&A through Slido, toll dial-in. |
| Webex Suite (Meet + Call) | — | $22.50 | Everything in Meet plus calling features, with the same 200 attendees and 24-hour meetings. |
| Webex Enterprise | custom | — | Up to 1,000 attendees, unlimited cloud recording, FedRAMP-authorized security, some plans include Webex events; the only plan the page labels as including the AI Assistant. |
Webex Free allows unlimited meetings of up to 40 minutes with up to 100 attendees, screen sharing with annotation, whiteboards and local recording.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Meetings of up to 200 people with Cisco's global media network, Breakout rooms, polling and Q&A, and closed captions in four languages.
About $12 a month on the Webex Meet plan per seat, $144 a year (checked 2026-10-20).
Meetings of up to 200 people with Cisco's global media network; Breakout rooms, polling and Q&A, and closed captions in four languages; Toll dial-in for people without a data connection; Cloud recording, transcripts and the AI Assistant summaries; Calendar add-ins and a name every client's IT team already trusts. If any of those matter to you, keep paying.
Yes: Jitsi Meet (open source), BigBlueButton (open source), LiveKit (open source).