Skip to content

adrbn/liveloop

Repository files navigation

LiveLoop icon

LiveLoop

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.

macOS Swift SwiftUI License


What it does

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.

How it compares

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

Install

  1. Download LiveLoop.dmg from Releases.
  2. Open it and drag LiveLoop to your Applications folder.
  3. Launch LiveLoop → click Set up LiveLoopInstall 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.)
  4. In Zoom, Meet, Teams, FaceTime or OBS, choose LiveLoop as your camera.
  5. 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).


How it works

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]
Loading
  • 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.


Build from source

Requirements: macOS 14+, Xcode 16+, XcodeGen

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:LiveLoopTests

Notarized 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 → DMG

Important

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>.


Project layout

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

Roadmap

  • 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).

Why

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.

License

MIT © 2026 adrbn. Not affiliated with CamLoop.

About

Step away, stay on camera. A free, open-source native macOS virtual-camera loop app — every CamLoop Pro feature included, free.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors