AI Camera 0.2.0 is an early alpha. The installer installs the host app; camera and microphone system components are set up separately, with your permission, inside the app.
- Download
AICamera-0.2.0.pkgfrom the GitHub release. - Close calls and AI Camera Preview tests, then open the package and follow macOS Installer. The package requires administrator authorization and installs on your startup volume.
- Open AI Camera in Applications. Its camera icon appears in the menu bar.
- In the menu panel, choose Install for the camera and/or microphone you want to use. Allow the requested camera/microphone access. Enable the camera under System Settings → General → Login Items & Extensions → Media Extensions when macOS asks.
- Select AI Camera and, optionally, AI Camera Microphone in your call app.
The installer preserves your settings, model downloads, dedicated login, and installed system components. It upgrades an existing protected/root-owned AI Camera app in place; you do not need to remove that app first. It does not activate/update/remove the camera extension, install/reload an audio driver, change system defaults, or require a restart itself. Open the app manually after installation. An already running host is stopped as part of the protected replacement transaction.
If the app offers a component Update, that is a separate operation. macOS may require approval or a restart for camera-extension changes. If you cannot restart now, leave the working component installed and postpone its update. App-only updates keep component versions independent.
- Installer failed: keep the failure message. The protected transaction attempts to restore the previous app and generation marker. Run the same signed installer again; do not replace protected files using a loose recursive copy or delete system-extension directories.
- No camera device: check Media Extensions and Settings → General → Virtual Devices. Reopen the call app after setup. If AI Camera reports a pending restart, wait for a suitable restart window rather than repeatedly removing and reinstalling the extension.
- No microphone device: use the microphone Repair action when offered. It reloads Core Audio, interrupting other audio apps, so close calls first. Reopen the call app afterward.
- Hardware permission denied: use the in-app settings link, or System Settings → Privacy & Security → Camera / Microphone. Choose a direct physical input in AI Camera Settings.
- App cannot open: reinstall the same or a newer signed package to restore the host, then use its device removal controls if you want to uninstall. Do not disable Gatekeeper or SIP.
There is no separate uninstaller application in this alpha. Remove system components from AI Camera before removing the host:
-
Close apps using the virtual camera/microphone and stop Preview tests and the agent.
-
Turn off Open AI Camera at login in Settings → General.
-
In Settings → General → Virtual Devices, choose Remove for the camera and microphone. Follow macOS authorization prompts. If camera removal is pending a restart, leave the app in Applications until after that restart, then confirm removal.
-
Choose Quit in the menu-bar footer. Command-Q in a standalone window only closes that window.
-
The app's root is protected against unprivileged replacement. In Terminal, clear that protection:
sudo chflags nouchg '/Applications/AI Camera.app'Then move AI Camera.app from Applications to Trash in Finder and authorize when requested.
Settings and models are kept unless you explicitly remove them as described below.
Use these steps if normal removal fails. Close calls first. Each path below belongs specifically to AI Camera; do not generalize the commands to other applications or system-extension directories.
First try reinstalling the signed host, then use its Remove action. If that is unavailable, disable AI Camera in System Settings → General → Login Items & Extensions → Media Extensions. Disabling stops its use; macOS may still retain its registration until supported removal completes.
macOS owns registered camera-extension files and can defer removal until restart. If removal is
pending, leave the host installed until you can restart and finish removal. Do not delete files
under /Library/SystemExtensions, disable SIP, or repeatedly force extension installation.
If the microphone Remove action fails, verify the exact driver bundle in Terminal:
plutil -extract CFBundleIdentifier raw '/Library/Audio/Plug-Ins/HAL/AICameraAudioDriver.driver/Contents/Info.plist'Continue only if the result is ai.kortexa.aicamera.audio.driver. Remove that exact driver:
sudo rm -rf '/Library/Audio/Plug-Ins/HAL/AICameraAudioDriver.driver'
sudo killall coreaudiodThe second command restarts macOS audio and interrupts audio applications. A later logout/restart is an alternative if you cannot interrupt audio now. Reopen call apps so their device lists refresh. A missing driver path means there is nothing to delete there.
After the camera removal is complete and the microphone driver is removed, quit AI Camera.
Disable any remaining AI Camera entry under Login Items in System Settings, clear the app's
protection with the chflags command above, and move the app to Trash in Finder.
The installation marker and receipt are optional remaining bookkeeping. Once the app is removed:
sudo chflags nouchg '/Library/Application Support/AI Camera/install-generation'
sudo rm -f '/Library/Application Support/AI Camera/install-generation'
sudo rmdir '/Library/Application Support/AI Camera'
sudo pkgutil --forget ai.kortexa.aicamera.installerA missing marker/receipt is harmless. rmdir deliberately refuses to delete a nonempty directory;
inspect anything remaining rather than forcing a recursive delete.
To keep your configuration for a future reinstall, stop here. To remove it, use Finder's Go → Go to Folder and move these AI Camera items to Trash:
~/Library/Application Support/AI Camera— settings, optional model downloads, dedicated Codex home.~/Library/Preferences/ai.kortexa.aicamera.plist— quick-control/window preferences.~/Library/Caches/ai.kortexa.aicamera— if present.
Deleting files does not necessarily remove Keychain credentials. Before uninstalling, use Sign Out
for AI Camera's Codex login and remove its API key in Settings. If the app is broken, reinstall it
first to use these controls. Advanced users can remove the ai.kortexa.aicamera API-key items in
Keychain Access. Do not remove every Codex Auth item: that can sign other Codex applications out.
AI Camera's login is separate from your normal coding session.
Development requires Xcode, XcodeGen, and your own Apple development team/provisioning profiles.
Copy Config/Local.example.xcconfig to ignored Config/Local.xcconfig and configure signing there.
The host needs the system-extension installation capability; host and extension share matching
application-group entitlements and signing team.
scripts/bootstrap.sh
scripts/validate.sh # No signing, installation, or activation
SIGNING=1 scripts/build.sh # Signed development build, no installation
scripts/install-app.sh # Protected signed host installationThe development and production installers use the same protected transaction. It validates nested identity before and after private staging, safely replaces only the fixed app, protects the installed root and generation marker, and rolls back catchable failures. See the release process for Developer ID archive/export, notarization, and production packaging.
After installing a packaged release, macOS App Management can deny a terminal's attempt to modify
that app even when its command runs under sudo. A chflags: ... Operation not permitted failure
can come from this protection; check the TCC diagnostic and the transaction's restored app/marker
before retrying. Apple documents App Management
as the permission for updating or deleting other apps.
Use the normal signed Installer package path for that update, keeping the existing postinstall and
protected transaction. Verify the package and exported app, preserve the Developer ID identity,
then install the verified package with Installer or sudo /usr/sbin/installer -pkg <package> -target /.
Do not substitute an ordinary recursive copy, disable privacy protections, or remove the camera
extension. A locally signed development package is not a notarized public release; public packages
still follow the complete release verification/notarization procedure.