local-dev
Start Local Development Environment
Start the backend server, macOS app, or Flutter mobile app for local development.
Usage
Run /local-dev to start both the backend and macOS app, or:
/local-dev backend- start backend only/local-dev app- build and run the macOS app (debug mode)/local-dev app --clean- clean build and run (forces Swift recompilation)/local-dev app --release- build and run in release mode/local-dev mobile- run Flutter app in iOS simulator (dev flavor, dev backend)/local-dev mobile --prod- run Flutter app in iOS simulator (prod flavor, prod backend)
Commands
Backend
cd backend
lsof -ti:8000 | xargs kill -9 2>/dev/null || true
python3 -c "from dotenv import load_dotenv; load_dotenv(); import subprocess; subprocess.run(['python3', '-m', 'uvicorn', 'main:app', '--host', '0.0.0.0', '--port', '8000', '--reload'])"
macOS App
app/scripts/dev-macos.sh $EXTRA_ARGS
Where $EXTRA_ARGS can be:
--clean- force clean build (removes build cache, ensures Swift recompilation)--release- build in release mode instead of debug--no-run- build only, don't launch the app
Flutter Mobile (iOS Simulator)
- Find or boot a simulator:
xcrun simctl list devices | grep Booted # check for running simulator
# If none booted:
xcrun simctl list devices available | grep -i "iphone" | tail -5
xcrun simctl boot <device-id>
open -a Simulator
- Run the app:
cd app && flutter run -d <device-id> --flavor dev
# Or for prod backend:
cd app && flutter run -d <device-id> --flavor prod
Logs stream to /tmp/flutter-run.log.
Flavor & Env Files
| Flavor | Env file | Backend | Agent proxy |
|---|---|---|---|
dev |
app/.dev.env |
api.omiapi.com |
agent.omiapi.com |
prod |
app/.env |
api.omi.me |
agent.omi.me |
Dev flavor has USE_WEB_AUTH=false (native sign in). Prod has USE_WEB_AUTH=true (Safari OAuth). The simulator works best with native sign in — use dev flavor for simulator testing.
After changing any .env file, regenerate the compiled env:
cd app && rm -rf .dart_tool/build lib/env/prod_env.g.dart lib/env/dev_env.g.dart
dart run build_runner build --delete-conflicting-outputs
Simulator Notes
- iOS Keychain persists across app uninstalls in the simulator, so Firebase Auth sessions survive reinstalls
claudeAgentEnableddefaults tofalseon fresh install — toggle it on in Settings → Developer Mode- The Flutter debug connection frequently dies ("Lost connection to device") when the app goes to background — the app itself keeps running, just relaunch
flutter run - Logs:
grep -E "\[AgentChat\]|\[HomePage\]" /tmp/flutter-run.log | tail -20 - Hot restart:
kill -SIGUSR2 $(pgrep -f "flutter run" | head -1)
Argument Handling
When $ARGUMENTS is "backend", only start the backend.
When $ARGUMENTS is "app", build and run the macOS app.
When $ARGUMENTS starts with "app ", pass remaining args to the script (e.g., "app --clean").
When $ARGUMENTS is "mobile", run Flutter app in iOS simulator with dev flavor.
When $ARGUMENTS is "mobile --prod", run Flutter app in iOS simulator with prod flavor.
When $ARGUMENTS is empty or "all", start both backend and macOS app.
More from basedhardware/omi
rotate-key
Rotate an API key or secret across all locations — local .env files, macOS Keychain, GCP Secret Manager, Kubernetes deployments, and Codemagic CI. Use when: 'rotate key', 'update key', 'key leaked', 'replace secret', 'new API key', 'update GEMINI key', 'rotate secret'.
26self-improvement
Meta-skill for analyzing PRs, issues, and user interactions to improve Cursor rules and skills automatically
14debug-mode
Debug mode workflows and best practices for troubleshooting bugs, regressions, and performance issues. Use when debugging tricky issues that standard agent interactions struggle with.
13docs-automation
Automate documentation updates when API endpoints, functions, or architecture change. Detects code changes that require doc updates, generates API reference from FastAPI routers, updates architecture diagrams, and syncs between internal and external docs.
13omi-flutter-patterns
Flutter Dart BLE device communication state management Provider backend integration localization cross-platform iOS Android
13rule-updater
Skill for programmatically reading, updating, and creating Cursor rules based on patterns and lessons learned
12