Problem
Live Notes is now merged into Assistant at /agent/live-notes and Pixel 9 has a working Android SpeechRecognizer bridge with offline preference. That is a useful smoke-tested bridge, but it is not the production-grade on-device Whisper path we want for long team conversations, privacy guarantees, diarization-ready chunks, and consistent offline behavior.
Scope
In scope:
- Replace or augment the Android
SpeechRecognizer bridge with a real on-device Whisper/whisper.cpp runtime behind com.airo.meeting/transcription.
- Add iOS parity behind the same Flutter
MeetingTranscriptionService contract.
- Preserve explicit-start listening only.
- Keep raw audio and transcript local by default.
- Emit partial and final transcript chunks with stable timestamps.
- Preserve pause, resume, stop, and permission-denied error behavior.
- Validate on Pixel 9 and at least one iOS simulator/device path.
Out of scope:
- Cloud transcription fallback.
- Silent/background always-on listening.
- Uploading raw audio or raw transcript text.
- Full task/reminder creation workflow beyond surfacing extracted action candidates.
Acceptance criteria
Agent
Primary: agent/ai-llm
Supporting: agent/mobile-ui
Estimate
3-5 days depending on model packaging/download strategy.
Risks
- Battery drain during long conversations.
- Model size/storage pressure on mid-range devices.
- Native audio lifecycle bugs around interruption, Bluetooth microphones, and app backgrounding.
- Privacy regressions if fallback paths accidentally upload audio or transcript text.
Context
Merged baseline: ccec84f feat(agent): merge assistant model setup
Current route: /agent/live-notes
Compatibility redirects: /meetings, /agent/meetings
Current Android bridge: android.speech.SpeechRecognizer with EXTRA_PREFER_OFFLINE.
Problem
Live Notes is now merged into Assistant at
/agent/live-notesand Pixel 9 has a working AndroidSpeechRecognizerbridge with offline preference. That is a useful smoke-tested bridge, but it is not the production-grade on-device Whisper path we want for long team conversations, privacy guarantees, diarization-ready chunks, and consistent offline behavior.Scope
In scope:
SpeechRecognizerbridge with a real on-device Whisper/whisper.cpp runtime behindcom.airo.meeting/transcription.MeetingTranscriptionServicecontract.Out of scope:
Acceptance criteria
flutter analyzeis clean for the touched surface.Agent
Primary:
agent/ai-llmSupporting:
agent/mobile-uiEstimate
3-5 days depending on model packaging/download strategy.
Risks
Context
Merged baseline:
ccec84f feat(agent): merge assistant model setupCurrent route:
/agent/live-notesCompatibility redirects:
/meetings,/agent/meetingsCurrent Android bridge:
android.speech.SpeechRecognizerwithEXTRA_PREFER_OFFLINE.