# ClippyAuto 📎🚗 Voice-first Android Auto app for talking to Clippy via Matrix. ## Overview ClippyAuto gives Jeremy a hands-free voice conversation with Clippy (AI Chief of Staff) during his commute. No typing, no "Hey Google," no Element — just tap and talk. **How it works:** You talk → on-device STT → Matrix message to Clippy → Claude responds → FCM push → car speakers read it back. Target: under 5 seconds to first audio. ## Prerequisites - Android Studio Ladybug (2024.2+) - JDK 17 - Android device with Android Auto support (or Desktop Head Unit for testing) - Firebase project with FCM enabled - Access to `mess.hobbs.farm` Matrix homeserver ## Setup ### 1. Clone & Open ```bash git clone https://git.hobbs.farm/spirit/clippy-auto.git cd clippy-auto # Open in Android Studio ``` ### 2. Firebase 1. Create a Firebase project at https://console.firebase.google.com 2. Add an Android app with package name `farm.hobbs.clippyauto` 3. Download `google-services.json` → place in `app/` 4. Enable Cloud Messaging (v1 API) ### 3. Matrix Homeserver - `mess.hobbs.farm` must be reachable externally (HTTPS via Traefik) ✅ - Jeremy's account needs access to `#clippy-voice:hobbs.farm` room ### 4. n8n FCM Bridge - Import `n8n/clippy-fcm-bridge.json` workflow into n8n - Register Matrix pusher on Jeremy's account pointing to n8n webhook - Configure FCM server key in n8n credentials ### 5. Build & Run ```bash ./gradlew installDebug ``` ### Testing with Desktop Head Unit (DHU) ```bash $ANDROID_HOME/extras/google/auto/desktop-head-unit ``` ## Project Structure ``` app/src/main/java/farm/hobbs/clippyauto/ ├── ClippyAutoApp.kt # Application entry, DI ├── auto/ │ ├── ClippyCarAppService.kt # Android Auto entry point │ ├── ClippySession.kt # Auto session lifecycle │ └── ClippyScreen.kt # Auto UI (talk button + status) ├── voice/ │ ├── VoiceState.kt # State enum │ ├── VoiceStateMachine.kt # State transitions │ ├── SpeechManager.kt # STT (SpeechRecognizer) │ └── TTSManager.kt # TTS with queue + audio focus ├── matrix/ │ └── MatrixRestClient.kt # Lightweight Matrix REST API client ├── push/ │ └── ClippyFCMService.kt # FCM receiver + dedup ├── connectivity/ │ ├── NetworkMonitor.kt # Online/Weak/Offline detection │ └── MessageQueue.kt # Offline message queuing └── ui/ └── SetupActivity.kt # Phone setup + session indicator ``` ## Architecture See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full spec. ## Status 🚧 **v1 MVP in progress** - [x] Project scaffold - [x] Android Auto CarAppService + Screen - [x] Voice state machine - [x] STT manager (SpeechRecognizer) - [x] TTS manager (queue + audio focus + interruption) - [x] Matrix REST client (login, send, sync) - [x] FCM push receiver + dedup - [x] Network monitor + message queue - [ ] Wire voice pipeline end-to-end - [ ] Phone setup UI (login flow) - [ ] n8n FCM bridge workflow - [ ] Confirmation chime + thinking tone audio assets - [ ] Session lifecycle signals - [ ] Voice command recognition (go quiet, wrap up, etc.) - [ ] Real-car testing ## License Private — hobbs.farm internal use.