Compositor
A real circular webcam bubble
Your camera is masked into a circle and composited over the screen while you record. One file comes out — nothing to align, layer, or key in post.
Open source · MIT · macOS 15+
Halo records your screen with a circular webcam bubble straight to an MP4 on your disk. 1080p or 4K, hardware-encoded. It is the recording half of Loom, done locally — no cloud, no account, no upload.
What it does
Everything below happens on your Mac, in one pass, and ends in a file you own.
Compositor
Your camera is masked into a circle and composited over the screen while you record. One file comes out — nothing to align, layer, or key in post.
Encoder
Encoding runs on Apple's media engine through VideoToolbox, so a 4K capture doesn't spend your CPU budget fighting the thing you're demoing.
Interface
No dock icon, no windows, no workspace to arrange. Click the icon, pick a screen and a camera, start recording. Click again to stop.
Output
Recordings land on disk as plain MP4. Drop them into any editor, attach them to an email, archive them. Nothing expires and nothing needs a viewer.
Network
Not "privacy-first" as a posture — there is no cloud, no account system, no telemetry, and no analytics to audit, because none of it was written.
License
Read it, fork it, rename it, ship it inside something you sell. Keep the copyright notice with the source and you have met the whole obligation.
What it isn't
If you need a link in a client's inbox ten seconds after you stop recording, use Loom — that is what it is good at. If you want a file you own, on a machine you control, with no service between you and it, use Halo.
How it works
Four stages, all on-device. This is every place your video goes between the glass and the file.
ScreenCaptureKit
macOS hands Halo the display's frames directly from the window server through an
SCStream. ScreenCaptureKit only delivers a frame when the screen
changes, so Halo re-submits the last frame on a fixed cadence and the file's
duration tracks the wall clock.
AVFoundation
The webcam arrives as a separate stream at its own native frame rate, kept independent of the screen capture so neither one stalls the other.
Core Image + Metal
Core Image, on a persistent Metal-backed CIContext, masks the camera
frame into a circle and composites that bubble over the screen frame on the GPU.
Two images in, one pixel buffer out, every frame.
VideoToolbox
Composited frames go straight to the hardware encoder on Apple's media engine and out to an MP4 on your disk. The file is complete the moment you stop.
Note what is not in that list: a network request, a background upload, or a server that has to be up for your recording to exist.
Comparison
Loom is a good product solving a different problem. A rigged table would not help you pick, so here is where each one actually wins.
| Feature | Halo | Loom |
|---|---|---|
| Price | Free, forever, MIT licensed | Free tier, paid plans above it |
| Account required | None | Yes, sign-up required |
| Where the video lives | On your disk, as MP4 | On Loom's servers |
| Instant share link | No — you send the file | Yes, the moment you stop Loom wins |
| Built-in editor and trimming | No editor at all | Yes Loom wins |
| Viewer analytics and comments | No | Yes Loom wins |
| Platforms | macOS 15+ only | Mac, Windows, browser, mobile Loom wins |
| Circular webcam bubble | Yes | Yes |
| Capture resolution | Up to 4K, hardware-encoded | Depends on your plan |
| Works with no internet | Entirely | Records offline, sharing needs the upload |
| Telemetry and analytics | None | Yes |
| Source code | Public and MIT licensed | Proprietary |
Loom is a trademark of its owner. Halo is an independent project and is not affiliated with, endorsed by, or connected to Loom. Loom's plans and features change over time — check their site for current details before you decide.
Install
Pick the first one that describes you. They all end with the same app in your menu bar.
Two lines in Terminal and Halo is in your Applications folder. Homebrew also clears the macOS quarantine flag for you, so Halo opens normally the very first time — no right-click, no scary “damaged” warning.
brew tap techautomationpartners/halo
brew install --cask halo
Don't have Homebrew? Install it first from
brew.sh. If Homebrew asks you to trust the tap,
run brew trust --cask techautomationpartners/halo/halo and install
again — that check applies to every tap outside Homebrew's core repository.
Homebrew is a free installer for Mac apps and developer tools. Paste this into Terminal, press Return, and follow the prompts — then come back to step 01 above.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
That is Homebrew's own official installer, straight from brew.sh. It will ask for your Mac password, which it needs to create its install directory. Once it finishes, run the two Halo commands above.
Prefer not to use Terminal at all? A direct download is on the releases page — but you will have to right-click Halo and choose “Open” the first time, because the app is not notarized by Apple. Homebrew handles that for you, which is why it is the recommended route.
git clone https://github.com/techautomationpartners/halo.git
cd halo
swift build -c release
Scripts/make_app.sh
Scripts/make_app.sh assembles
Halo.app and signs it. The signature matters: macOS ties screen
recording and camera permissions to a signed bundle identity, and an unsigned
binary may never appear in the permission list at all.
Then run it. Halo has no Dock icon and no window — it lives in the menu bar at the top of your screen, as a small ring. Click it, pick a screen and a camera, and record. Files land in your Movies folder, in a folder called Halo. Nothing is uploaded anywhere, ever.
Permissions
Halo needs three permissions, and macOS deliberately makes them un-automatable — no app can grant them on your behalf. This is the part people get stuck on, so it is written out in full.
1. Move Halo to /Applications first. Grants attach to the app where it lives. Granting from a build folder and then moving the app can invalidate the grant.
2. Start a recording. macOS shows the prompts at the moment Halo first needs each permission. Approve them.
3. Quit and relaunch Halo after granting Screen Recording. This step is not optional and is the single most common reason people think Halo is broken. macOS caches the answer for the lifetime of the process, so a running app keeps seeing "denied" no matter what you toggle.
If no prompt appears. macOS only ever shows the Screen Recording
prompt once per app. After that the toggle is the only way in. Open
System Settings → Privacy & Security → Screen & System Audio
Recording, click the + button, and add
/Applications/Halo.app directly. That pane is the one place macOS
lets you add an app by hand — Camera and Microphone have no + button,
which is why you cannot fix this from there.
If the toggle is on but Halo still says access was denied. You almost certainly have a stale duplicate entry from an earlier build. Look for two "Halo" rows in the list. Clear them and start clean:
tccutil reset ScreenCapture com.techautomationpartners.halo
tccutil reset Camera com.techautomationpartners.halo
tccutil reset Microphone com.techautomationpartners.halo
Then relaunch Halo and grant again. macOS treats an app's code
signature as its identity, so a rebuilt binary can read as a different
app and quietly lose its grants. Scripts/make_app.sh avoids this
by signing with a Developer ID or Apple Development certificate when it finds
one — that identity is stable across rebuilds. Falling back to an ad-hoc
signature means re-granting after every build.
Nothing here phones home. These grants are between you and macOS. Halo has no network code at all, and your recordings never leave the machine.
FAQ
Yes. Halo is MIT licensed and free for anything, including commercial use. There is no paid tier, no trial, and nothing to buy.
It replaces Loom's recording, not Loom's platform. There are no share links, no hosting, and no editor. If your workflow ends with a video file, Halo replaces Loom completely. If it ends with a link you send someone, it does not.
No. Halo has no networking code at all. Recordings are written to your disk and stay there. There is no cloud, no telemetry, and no analytics.
No. There is no sign-up, no login, and no account system. You launch the app and record.
macOS 15 (Sequoia) or later, because Halo captures the microphone through
SCStreamConfiguration.captureMicrophone, which was introduced in
macOS 15. It runs on Apple Silicon and Intel Macs, and is built and tested on
Apple Silicon (M4).
MP4, at 1080p or 4K. Encoding is done in hardware through VideoToolbox.
No. Halo has no timeline editor. It hands you a standard MP4 that opens in any editor you already use.
Yes. The MIT license permits commercial use, modification, and redistribution. The only obligation is keeping the copyright notice with the source.
License
Copyright © 2026 Tech Automation Partners. Use it personally or commercially, modify it, fork it, rebrand it, ship it inside a product you charge for. Keep the copyright notice with the source and you have met every obligation the license imposes.