loop is a desktop app for recording screen-based videos, transcribing speech in real time, cutting dead space from the transcript, and turning raw takes into a clean edited MP4.
The goal: I want to focus 100% of my time on the the video content and have AI take care of the rest.
Built with Electron, ffmpeg, and ElevenLabs Scribe, loop keeps the editing loop short: record, trim by speech, adjust the timeline, render.
- Records screen, microphone, and optional camera together.
- Shows a live composite preview while recording.
- Generates a realtime transcript during capture.
- Lets you remove unwanted transcript segments before the first edit pass.
- Builds timeline sections automatically from spoken content.
- Provides a timeline editor for split, trim, undo/redo, playback, and section-level camera layout changes.
- Lets you apply a per-project camera sync offset when facecam video arrives slightly late.
- Renders the final video with ffmpeg, including camera picture-in-picture or fullscreen transitions.
- Saves work as project data so recording sessions can be resumed and re-edited.
Most screen recording workflows split recording and editing across different tools. loop combines them into one app:
- capture the take
- review the transcript
- remove filler and silence
- tighten the timeline
- export a finished video
That makes it especially useful for demos, tutorials, walkthroughs, and talking-head screen recordings where the spoken track should drive the edit.
- Create or open a project.
- Pick a screen source, camera, and microphone.
- Record while loop builds a live transcript.
- Remove transcript segments you do not want included.
- Let loop compute timeline sections from speech.
- Refine the result in the timeline editor.
- Render the final MP4.
Transcript cleanup is part of the editing flow, not a separate afterthought. loop uses transcript segments to build the first cut automatically.
Automatic section building is just the starting point. You can still:
- split sections
- trim section boundaries
- delete sections
- undo and redo edits
- seek and preview across section boundaries
loop supports screen-only output, picture-in-picture camera, and fullscreen camera moments. Camera layout can be changed over time with section keyframes, and the timeline header includes a camera sync offset for delayed capture devices such as HDMI capture dongles.
Projects store timeline state, takes, and settings so you can come back later instead of treating each recording as a one-off export.
- Electron for the desktop app shell
- ffmpeg via
ffmpeg-staticfor final rendering - ElevenLabs Scribe for realtime transcription token generation
- Tailwind CSS for styling
- Vitest for unit and integration tests
- Node.js 22
- npm
npm ciloop needs an ElevenLabs API key to mint realtime Scribe tokens.
cp .env.example .envThen set:
ELEVENLABS_API_KEY=your_key_herenpm run devFor a regular local launch:
npm startUse the full repo validation before opening a pull request:
npm run checkThat runs:
- style build
- lint
- typecheck
- unit and integration tests
- Electron smoke test
- packaging smoke test
Useful individual commands:
npm run lint
npm run typecheck
npm run test
npm run test:e2e
npm run package:smokesrc/main/: Electron main-process bootstrapping, IPC, and servicessrc/renderer/: renderer app code and feature logicsrc/shared/: shared domain logic and normalization helperstests/unit/: pure logic teststests/integration/: service and filesystem integration teststests/e2e/: Electron smoke coverage
More detailed internal docs:
docs/production/feature-inventory.mddocs/production/target-architecture.mddocs/production/runbook.md
loop already covers the full capture-to-render loop for transcript-driven screen videos, including:
- project creation and reopening
- recent project history
- pending recording recovery
- transcript cleanup
- automatic section building
- timeline editing
- MP4 export
Contributions are welcome.
Before submitting changes:
- Keep changes focused and behavior-driven.
- Add or update tests when behavior changes.
- Run
npm run check.
This repository treats production readiness seriously. If you change behavior, the expectation is that the tests prove it.
Licensed under Apache-2.0. See LICENSE.
- Realtime transcription requires
ELEVENLABS_API_KEY. - Project files and captured media are stored locally.
- Final renders are produced through ffmpeg.
This project is being prepared for open source release and the repository is moving to tadaspetra/loop.