fuzzyworld

ai-chat-android-auto

Contribute: contrib-68uq+ai-chat-android-auto@fuzzyworld.net (how) · Report a bug: bugs-k7q4+ai-chat-android-auto@fuzzyworld.net

git clone https://code.fuzzyworld.net/ai-chat-android-auto.git

Open in VS Code · Open in VS Code in the browser · License: MIT

Recent commits

2026-10-273b6ae7bRename .gitlab-ci.yml to .fw-ci.ymlPavel Safronov
2026-05-164fd1038docs: add attributionPavel Safronov
2026-05-14effbd80CI: reduce signing variables from 4 to 2Pavel Safronov
2026-05-143a8e650CI: use curl instead of wget for SDK downloadPavel Safronov
2026-05-1483a6244CI: fix SDK setup — validate download URL and pre-write licence hashesPavel Safronov

Full log

AI Chat for Android Auto

An Android Auto voice assistant that sends your spoken questions to an AI provider and reads the responses back through the car's speakers.

You choose the provider — Anthropic, OpenAI, Groq, Mistral, Google Gemini, or a local Ollama instance. API keys are stored on-device in EncryptedSharedPreferences and never leave the phone.


How it works

  1. Open the AI Chat for Android Auto app on your phone and configure a provider + API key.
  2. Connect your phone to the car. The app appears in the Android Auto launcher.
  3. Tap Ask AI (or press Play on the steering wheel) and speak your question.
  4. The app sends your question to the provider's API and reads the answer aloud.
  5. Past exchanges appear in the browse list so you can re-ask any previous question.

Setup

Requirements

Phone setup

  1. Install the APK (sideload or Play Store release).
  2. Open AI Chat for Android Auto on your phone.
  3. Select a provider, enter your API key, and tap Save Key.
  4. Tap ↻ to fetch available models and select one.
  5. Grant microphone permission when prompted.

Android Auto

The app registers as a media browser service, so it requires no special permissions beyond a standard media app. If using a sideloaded build, enable Unknown sources for Android Auto via ADB first:

adb shell settings put global android_auto_unknown_sources 1

Supported providers

Provider API key required Web search Notes
Anthropic ✅ ✅ (built-in) Default provider
OpenAI ✅ — GPT-4o and newer
Groq ✅ — Very fast inference
Mistral ✅ —
Google Gemini ✅ —
Ollama (local) — — Requires local server; configure base URL
Custom (OpenAI-compatible) Optional — Any endpoint that speaks /v1/chat/completions

Adding a new provider

OpenAI-compatible API (5 lines)

Add an object to OpenAiCompatibleProvider.kt:

object MyProvider : OpenAiCompatibleProvider() {
    override val id           = "myprovider"       // stable, never change
    override val displayName  = "My Provider"
    override val defaultBaseUrl = "https://api.myprovider.com"
    override val defaultModel = "my-model-name"
    override val requiresApiKey = true
}

Then add MyProvider to the list in ProviderRegistry.kt.

Unique API format

Implement the AiProvider interface directly (see GeminiProvider.kt as an example), then register it in ProviderRegistry.

The interface requires two methods: - ask(apiKey, baseUrl, model, question, onResult) — call the API and return the text response - listModels(apiKey, baseUrl, onResult) — return a list of ModelInfo(id, displayName)


Building from source

# Clone and open in Android Studio, or build from the command line:
./gradlew assembleRelease

Signing credentials go in local.properties (gitignored):

release.storeFile=path/to/release.jks
release.storePassword=...
release.keyAlias=...
release.keyPassword=...

Releasing

Push a tag to trigger the CI pipeline, which builds a signed APK, uploads it to the Package Registry, and creates a GitLab Release with a download link.

git tag v1.2.3 && git push origin v1.2.3

The release will appear under Deploy → Releases in the GitLab sidebar.

CI/CD variables

Configure these in Settings → CI/CD → Variables (all masked):

Variable Description
KEYSTORE_BASE64 Release keystore encoded as base64 (base64 -i claudeauto-release.jks \| pbcopy)
KEYSTORE_PASSWORD Keystore password (used for both the store and the key)

Upcoming work


Attribution

App icon by icongeek26 from the Outline collection on Flaticon.


License

MIT — see LICENSE.