Webcam controls for Mac
A small, free Mac app to adjust your USB webcam: zoom, move the view, fix brightness and colors, and keep yourself centered in frame. Works with the Insta360 Link 2C and most other USB webcams.
It's a light, open source alternative to the apps that come with Insta360, OBSBOT and Opal cameras.
Each camera brand ships its own heavy control app, and it only works with that brand. Camdeck is one small app for many cameras. There's nothing to install besides the app itself, and it doesn't run in the background unless you want it to.
- See a live preview, flip it like a mirror, and pick the video quality.
- Fix the picture: brightness, contrast, colors, sharpness, focus and flicker.
- Ask the camera: type "warmer", "black and white", "zoom in", "1080p at 60 fps", "follow me" or "reset everything" and it happens. Uses Apple Intelligence on your Mac; nothing is sent anywhere.
- Control exposure: let the camera decide, or set it yourself.
- Zoom and move the view with a simple draggable pad.
- Auto framing: the app follows your face and keeps you centered.
- Save presets: store your favorite settings and bring them back with one click.
- Spot blown-out highlights with the zebra stripe overlay.
- Use Mac video effects like Portrait, Studio Light and Background.
- Run from the menu bar and open at login, if you like.
Camdeck answers to camdeck:// links, so Shortcuts ("Open URL"), Raycast and the Terminal can control it without opening the window.
camdeck://preset/Meeting: apply a preset by name, or by number (camdeck://preset/2)camdeck://reset-view: center the view and zoom outcamdeck://reset-image: put brightness, color and exposure back to defaults (zoom and framing stay)camdeck://reset: reset all settings (presets are kept)camdeck://lock/onandcamdeck://lock/off: turn "Keep These Settings" on or offcamdeck://camera/Name: switch to a camera by name or ID
Add ?camera=Name to any link to pick the camera first. Use %20 for spaces.
open -g "camdeck://preset/Meeting"Almost any USB webcam works for the basics (picture, exposure, zoom, focus, color). That includes Logitech Brio and C920, Elgato Facecam, Razer Kiyo and Anker PowerConf.
Some cameras get extra features:
| Camera | Status |
|---|---|
| Insta360 Link 2C | Fully tested, with extras like digital pan/tilt, HDR and shutter speed |
| Insta360 Link 2, Link | Should work, not tested yet |
| AnkerWork C310, PowerConf C200 | Early support, not tested on real hardware |
| OBSBOT Tiny 2, Tiny SE, Meet | Planned |
| Opal Tadpole, C1 | Planned |
Own a camera that isn't listed? Open an issue and we'll look at adding it.
Do I still need the camera maker's app? No. You can uninstall it.
Will it work in Zoom, Google Meet, Teams and OBS? Yes. Settings are saved on the camera itself, so every app sees the same picture.
Does it install a driver? No. Nothing is added to your system.
What Mac do I need? A Mac running macOS 26. It works on Apple Silicon.
- Download Camdeck.dmg and double-click it.
- In the window that opens, drag Camdeck onto the Applications folder.
- Open it. macOS will say it "could not verify Camdeck is free of malware". Click Done, open System Settings → Privacy & Security, scroll down and click Open Anyway next to Camdeck, then confirm. You only do this once. (Camdeck is open source and not yet notarized by Apple, which is what triggers this.)
- Allow camera access when asked, plug in your webcam and go.
Camdeck updates itself. When a new version is out, it downloads and installs quietly. You can also choose Camdeck → Check for Updates… any time.
MIT. Free to use and share.
App (SwiftUI, AutoFramer)
│ capabilities only: Zoom, Reframe, Exposure, ImageControls…
▼
Camera (composed per device)
▲ most specific driver wins per capability
│
GenericUVCDriver standard UVC, from the descriptor
ProfileDriver JSON profile for simple vendor controls
Code drivers Swift, for protocols that need logic
│
▼
UVCTransport (IOKit EP0, rate limited, forbidden selector guard)
The app never knows which camera is attached. It asks for capabilities, drivers provide them, and USB safety rules live in one place. Camdeck speaks UVC directly over user-space USB control requests, with no kernel extension or daemon.
Details in docs/adr-001-camera-drivers.md. Link 2C protocol notes are in docs/link2c-protocol.md.
You need macOS 26 and Xcode 26.
make app # builds build/Camdeck.app
make run # builds and opens it
make test # runs the UVCKit test suiteThe uvcctl command line tool dumps camera descriptors and reads or writes controls. Use it when adding support for a new camera.
Updates use Sparkle. Releases are built by GitHub Actions (release.yml); the update signing key is the SPARKLE_ED_PRIVATE_KEY repo secret.
make release VERSION=0.2.0 # tags v0.2.0; CI builds, signs, publishes the release and updates appcast.xmlRun the workflow from the Actions tab for a dry run that publishes nothing. make release-local does the same from a Mac that has the key in its keychain.
- Plug it in and run
uvcctlto dump its descriptor. - Standard controls already work.
- Map simple vendor controls in a JSON profile. Schema in docs/profile-schema.md.
- Write a code driver only for features that need logic.
- Add the descriptor as a test fixture.