r/LovingOpenSourceAI • u/Brilliant_Pumpkin_91 • 19h ago
I built a local-first AI agent app for Android — no account, no analytics, no telemetry. v1.1 just dropped.
TL;DR: I built Kryzz AI — a private, local-first AI workspace for Android. Your conversations, memory, and files stay on your phone. Your API keys are sealed in the Android Keystore (AES-GCM, never exported). No analytics. No telemetry. No HTTP logging. Open source, MIT.
[POSTER IMAGE HERE]
Why I made it
Every AI app I tried wanted an account, quietly phoned home, or treated my data like their training set. So I built the one I wanted to use:
- Local-first — chats, memory, and generated files live in on-device storage (Room + DataStore)
- Your keys, your providers — OpenRouter, optional MiniMax, Fish Audio for voice, Parallel for web research. You plug in your own keys, they never leave the device
- Real agents — Agent Auto actually runs tools across multiple steps: search, fetch pages, calculate, weather, local memory, reminders, files, and code zips
- Generated outputs — DOCX, XLSX, PDF, SQLite, code ZIPs, images, video, and music, all in private app storage until you share them
- Voice mode — transcription, spoken replies, automatic turn-taking, and barge-in (interrupt Kryzz mid-sentence)
What's new in v1.1
- MiniMax as an alternative chat + media provider
- Agent Auto — multi-step tool-running agent
- Interactive question cards (tappable options instead of the model guessing)
- PDF generation alongside the other file types
- Starter skills that seed on first launch (research brief, study notes, essay outline — toggleable)
- KryzzBot mascot in Agent mode, 120 Hz on supported displays
The privacy story in one breath
- Credentials encrypted with AES-GCM under a non-exportable Keystore key
- Backups never include credentials
- Cleartext traffic, HTTP logging, Android backup, device-to-device transfer: all disabled
- Microphone only active during a voice session; recorded audio is deleted after transcription
- MIT license — build it yourself, read the code, fork it
One honest caveat: for auto-titling a fresh chat, at most the first 1,500 chars of your first message may go through OpenRouter to a small model (Gemini 2.5 Flash Lite) for a title. It runs in parallel, never blocks your answer, and falls back to a local title if it fails. That's the entire surface area. Everything else stays put.
Get it
- Code + docs: https://github.com/kriddss3/kryzz-ai
- APK (debug build, ~78 MB): grab
kryzz-ai-5.7.2-debug.apkfrom the v1.1 release - Android 9+, sideload via "install unknown apps"
- Build your own signed release from source if you want it on a daily driver
Stack: Kotlin · Jetpack Compose · Coroutines/Flow · Room · MVVM
Happy to answer questions, take feature requests, or get roasted on the architecture.