Riverside's trick is simple to state: each person's browser records their own mic and camera at full quality and uploads in the background, so a bad connection spoils the call but not the files. For a host and one guest, an agent can build that with WebRTC, MediaRecorder, chunked uploads and ffmpeg in a weekend. The gaps are real, though: Safari and phone guests behave differently, a closed tab mid-session must not lose the recording, tracks need aligning, and you will want a TURN server. The editor, transcripts, livestreaming and hosting are separate products, and VDO.Ninja already gets you free guest recording today.
Before you buildRiverside Free includes 2 hours of separate-track recording, enough to test whether the workflow suits you. VDO.Ninja costs nothing if you only need local recording.
Build me a two-person podcast recorder to replace Riverside. Requirements: - Node.js 22 + TypeScript: a Fastify server with WebSocket signalling (`@fastify/websocket`) and a vanilla TS front end built with Vite. `npm start` serves http://localhost:4900. - Rooms: the host opens /host (password in .env) and shares /join/<token>; a room holds exactly two people. Audio and video go peer to peer over WebRTC. STUN and TURN servers come from ICE_SERVERS in .env; document running coturn. - Local recording is the point: each browser records its own microphone and camera with MediaRecorder at full quality, using a 2 s timeslice and the first supported type from audio/webm;codecs=opus, video/webm and video/mp4 (Safari differs; handle it). - Progressive upload: every chunk goes to POST /api/rooms/:id/chunks with participant id, sequence number and client timestamp, and the server appends it under ./data/rooms/<id>/<participant>/, ignoring duplicates. The browser queues unsent chunks in IndexedDB and retries after a reconnect; reopening the tab resumes the upload. Show "n of m chunks uploaded" for each person. - Sync: when recording starts, both browsers play a short click through the call and store their performance.timeOrigin offset. After the session, `ffmpeg` converts each track to 48 kHz WAV and trims all tracks to a common start using the stored offsets. - Output in ./data/rooms/<id>/export/: one WAV per participant, an MP3 mixdown and a JSON file with the offsets. - Host controls: start and stop for both people, a mute button, a level meter per person, and a "recording OK" light per person that turns red when no chunk arrives for 10 s. - Delete rooms after 14 days (setting in .env). No accounts, no telemetry; guests need no signup. - Out of scope: more than two people, live streaming, editing, transcription, podcast hosting. - README: why HTTPS is required for getUserMedia, TURN setup, how to test on a throttled network, and a warning that tracks can drift by tens of milliseconds over an hour.
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 Riverside.
Add transcription to the recorder in this folder. Requirements: - After export, run `whisper.cpp` (binary and model path in .env) on each participant's WAV. - Merge the results by timestamp into one transcript with speaker names, as .txt and .srt. - Make it a setting; skip silence longer than 20 seconds to save time. - Show a progress bar and the transcript on the session page. - Update the README with the model sizes and the time they take on a laptop.
Improve the mixdown in the recorder in this folder. Requirements: - Use ffmpeg filters: highpass at 80 Hz, `loudnorm` per participant to -16 LUFS, then a mix. - Optionally remove pauses longer than 1.5 s using `silenceremove`; keep a toggle and the original tracks untouched. - Write mix.mp3 and a loudness report next to the tracks. - Add a test that processes a 10-second fixture with a known gap. - Update the README.
Extend the recorder in this folder to three participants. Requirements: - Use a full mesh of peer connections for up to three people, and refuse a fourth. - Keep local recording and chunk upload per person exactly as they are. - Show a level meter and the "recording OK" light for every participant. - Document the bandwidth cost of a mesh call and when to move to an SFU such as LiveKit. - Update the README.
Podcasters pay for recordings they can trust when a guest's wifi drops, plus an editor and publishing tools in the same place. Guests only need a link, and a missed recording costs more than a month's fee.
Estimate · A VPS for the app and coturn is about $5 to $10 a month, and nothing if you run it at home behind a tunnel. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 2 hours of multi-track recording once, up to 720p, 44.1 kHz audio, watermark, unlimited single-track recording and editing. |
| Pro | $29 | $24 | Up to 4K video and 48 kHz audio, no watermark, unlimited transcription, AI editing tools, podcast hosting, 1 studio, 15 hours of separate-track downloads a month. |
| Grow | $39 | $34 | Everything in Pro plus 1080p live streaming, custom RTMP, social scheduling, newsletter, creator website, 2 studios and 20 hours of track downloads. |
| Webinar | $99 | $79 | Everything in Grow plus webinars for up to 100 registrants, recurring sessions, lead capture, 3 studios and 25 hours of track downloads. |
| Business | custom | — | Unlimited studios and track downloads, webinars for up to 10,000, API, SSO, producer mode, SOC 2 and ISO 27001. |
Free gives one-off 2 hours of multi-track recording, 720p video and a watermark.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: The text-based editor, AI clean-up and clip tools, Transcripts, show notes and podcast hosting in the same account.
About $29 a month on the Pro plan, $348 a year (checked 2026-10-14).
The text-based editor, AI clean-up and clip tools; Transcripts, show notes and podcast hosting in the same account; Live streaming and webinars; Support for phones, Safari and more than two people; A team that already fixed the browser and network edge cases. If any of those matter to you, keep paying.
Yes: VDO.Ninja (open source), Ennuicastr (open source), OBS Studio (open source).