Step away, stay on camera.
Loop a short clip of yourself through a virtual camera so you look present on any video call while you grab a coffee, rest your eyes, or answer the door — your audio keeps passing straight through.
A free and open-source native macOS alternative to CamLoop.
LiveLoop lives in your menu bar and registers a virtual camera that Zoom, Google Meet, Microsoft Teams, Slack, FaceTime, OBS — anything with a camera picker — can select. Record a few seconds of yourself, pick LiveLoop as your camera, and one shortcut swaps your live feed for a seamless loop and back.
- 🎥 Virtual camera — appears as “LiveLoop” in every app’s camera menu.
- 🔊 Audio always passes through — LiveLoop only touches video, so you can keep talking or mute as normal. Nothing to configure.
- 🔁 Seamless loop — plays forward-then-backward (ping-pong) with a crossfade, so there is no visible cut.
- ⌨️ Global shortcut — flip live ⇄ loop system-wide without leaving your meeting window.
- 📶 Simulated lag — optional, never-repeating micro-freezes so the loop reads like a flaky connection rather than a frozen app.
- 🪞 Live preview — see exactly what viewers see, with a self-view of your real camera in the corner while the loop plays.
- 🗂️ Unlimited clips — record, import, export, rename (inline), pin, ↑↓ to browse, ⌫ to delete. No length caps.
- 🔒 Private — clips never leave your Mac. No account, no network, no telemetry.
Everything's included and free — including the things others put behind a subscription:
| Feature | CamLoop Free | CamLoop Pro | LiveLoop |
|---|---|---|---|
| Virtual camera + audio passthrough | ✅ | ✅ | ✅ |
| Saved clips | 1 | Unlimited | Unlimited |
| Clip length | 10 s | Unlimited | Unlimited |
| Global hotkeys | — | ✅ | ✅ |
| Simulated lag | — | ✅ | ✅ |
| Seamless ping-pong + crossfade | ✅ | ✅ | ✅ |
| Import / export clips | — | ✅ | ✅ |
| Pin clips | — | ✅ | ✅ |
| Custom camera name | — | ✅ | ✅ |
| Price | Free | $4.99/mo · $49 | Free & open source |
- Download
LiveLoop.dmgfrom Releases. - Open it and drag LiveLoop to your Applications folder.
- Launch LiveLoop → click Set up LiveLoop → Install Camera, and allow it when macOS asks (Touch ID). (If it doesn't prompt, enable LiveLoop in System Settings ▸ General ▸ Login Items & Extensions ▸ Camera Extensions.)
- In Zoom, Meet, Teams, FaceTime or OBS, choose LiveLoop as your camera.
- Click the preview to start, Record a short clip, then Switch to Loop
(or press
⌥⌘L) and step away.
Notarized by Apple, so it installs like any other trusted Mac app. Your microphone is never touched — LiveLoop only provides a camera, so your audio always passes straight through.
Tip
Using Chrome or Brave? Fully quit it (⌘Q) and reopen it once after installing,
or LiveLoop won't show up in the camera picker (browsers cache the list at launch).
Note
WhatsApp Desktop doesn't pick up the virtual camera yet — it's a known limitation I'm looking into. Zoom, Meet, Teams, Slack, FaceTime and OBS all work.
LiveLoop is two pieces that talk over Core Media I/O:
flowchart LR
subgraph App["LiveLoop.app · menu bar"]
CAM[Webcam capture] --> ROUTER{Frame router<br/>live / loop}
CLIP[Clip library] --> LOOP[Loop engine<br/>ping-pong · crossfade · lag]
LOOP --> ROUTER
ROUTER --> PUB[Sink publisher]
end
subgraph Ext["LiveLoopExtension · camera system extension"]
SINK[Sink stream] --> RELAY[relay] --> SRC[Source stream]
end
PUB -->|CMSampleBuffers| SINK
SRC -->|virtual camera| ZOOM[Zoom · Meet · Teams · FaceTime · OBS]
- The app captures your webcam, records/loops clips, and decides — per frame — whether to send the live feed or the loop. It pushes finished 1080p frames into the extension’s sink stream.
- The extension is a deliberately thin, always-stable relay: whatever arrives on the sink it forwards to the source stream that meeting apps read. When the app isn’t running it shows a friendly placeholder card.
- The loop plays forward then backward so its ends meet, and a short crossfade smooths the live ⇄ loop switch. Simulated lag is a seeded, deterministic scheduler that occasionally holds a frame — irregular to the eye, reproducible in tests.
- Audio is never involved: LiveLoop provides a camera only, so your real microphone reaches the meeting untouched.
Design notes live in docs/DESIGN.md.
Requirements: macOS 14+, Xcode 16+, XcodeGen
- create-dmg (
brew install xcodegen create-dmg).
Note
A paid Apple Developer Program membership is required to build a working build, because a camera system extension needs the System Extension capability, which free/personal Apple teams cannot provision. (Downloading the notarized DMG from Releases needs nothing — that's only for building yourself.)
git clone https://github.com/adrbn/liveloop.git
cd liveloop
xcodegen generate # project.yml is the source of truth
# Run the tests (no signing needed)
xcodebuild -scheme LiveLoop -configuration Debug test -only-testing:LiveLoopTestsNotarized release (installs on any Mac, SIP on) — set your team in
project.yml / ExportOptions.plist, store notarization credentials once
(xcrun notarytool store-credentials "LiveLoop" --apple-id you@example.com --team-id XXXXXXXXXX),
then:
./scripts/release.sh # archive → Developer ID export → notarize → staple → DMGImportant
The camera extension must be signed and notarized to load on modern macOS (14+), so the notarized path above is the only reliable way to produce a working build — unsigned or dev-signed local builds of a camera system extension don't load reliably on recent releases, even with SIP disabled.
The app icon is generated from code: python3 scripts/make_icon.py <out-dir>.
LiveLoop/ Menu-bar app
App/ Entry point + AppState coordinator
Camera/ AVCaptureSession + live/loop frame router
Loop/ Ping-pong, lag scheduler, clip frame store, loop engine
Recording/ AVAssetWriter clip recorder
Library/ Clip model + library (CRUD, import/export, pin)
VirtualCamera/ System-extension lifecycle + CMIO sink publisher
Hotkeys/ Global hotkey (Carbon)
Settings/ UI/ Shared/ Preferences, SwiftUI views, image pipeline
LiveLoopExtension/ CMIO camera system extension (source + sink relay)
Tests/LiveLoopTests/ Loop-engine + library unit tests
scripts/ release.sh · make_dmg.sh · make_icon.py · build.sh
- Notarized Developer ID release — signed & notarized DMG that installs on any Mac with SIP on. ✅ Shipped in v1.0.0.
- AI frame morphing — optical-flow / learned interpolation (RIFE/FILM in Core ML) for a perfectly seamless single-direction loop. Today’s ping-pong + crossfade already reads as seamless for the low-motion clips this is built for.
- Per-clip loop settings (speed, lag profile).
- Auto-frame alignment to your current pose before looping.
- In-app auto-updates (Sparkle).
Because looking present while you refill your coffee shouldn’t cost $49, and because a virtual camera you run yourself should be something you can read the source of.
MIT © 2026 adrbn. Not affiliated with CamLoop.