macOS app for OMI — always-on AI companion. Swift/SwiftUI frontend, Rust backend.
Desktop/ Swift/SwiftUI macOS app (SPM package)
Backend-Rust/ Rust API server (Firestore, Redis, auth, LLM)
agent/ Agent runtime for multi-provider chat (TypeScript)
agent-cloud/ Cloud agent service
dmg-assets/ DMG installer resources
Requires macOS 14.0+, Rust toolchain, and code signing with an Apple Developer ID.
# Run (builds Swift app, starts Rust backend, launches app)
./run.sh
# Run an isolated named bundle for parallel testing
OMI_APP_NAME="omi-subagent-test" ./run.sh
# Run with the dev backend (skips local Rust + tunnel)
./run.sh --yolo
# Force a complete bundle refresh after changing packaged runtime inputs
./run.sh --full--yolo targets the deployed development services. Those services currently use production Firebase identities and data stores, so use a named omi-* bundle for isolated desktop state and avoid treating it as an offline data sandbox.
run.sh auto-detects an Apple Development or Developer ID Application signing identity from your login keychain. Override with OMI_SIGN_IDENTITY="..." ./run.sh.
After a successful full launch, run.sh automatically uses its fast lane for ordinary Swift-only edits: it incrementally builds Swift, patches the already-installed app executable plus the current desktop API URL, re-signs it, and relaunches. Changing package metadata, bundled resources, agent/runtime inputs, entitlements, or persistent launch configuration safely falls back to the complete packaging path. Use ./run.sh --full (or OMI_FORCE_FULL_BUNDLE=1) to force that path; set OMI_SCAN_STALE_BUNDLES=1 only when recovering from stale LaunchServices registrations.
Named bundles derive an isolated bundle ID and OAuth callback URL scheme from OMI_APP_NAME. Omi Dev keeps com.omi.desktop-dev / omi-computer-dev, while OMI_APP_NAME="omi-subagent-test" uses com.omi.omi-subagent-test / omi-omi-subagent-test. The app reads that scheme from CFBundleURLTypes for OAuth redirects, so parallel dev bundles do not claim the canonical omi-computer-dev callback.
MIT