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 claudeAgentEnabled defaults to false on 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.