███████╗██╗ ██╗███╗ ███╗ █████╗ ██╗
██╔════╝██║ ██╔╝████╗ ████║ ██╔══██╗██║
█████╗ █████╔╝ ██╔████╔██║ ███████║██║
██╔══╝ ██╔═██╗ ██║╚██╔╝██║ ██╔══██║██║
███████╗██║ ██╗██║ ╚═╝ ██║ ██║ ██║██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝
A powerful, privacy-first, easy-to-access AI chat app for Android
Built with Jetpack Compose · Multi-model · No ads · No tracking
ekm AI is a native Android AI chat application that connects directly to leading AI providers — Google Gemini and OpenAI-compatible APIs — with a beautiful, expressive Material You interface. No middlemen, no subscriptions, no servers. Your data stays on your device.
- Multi-model support — Switch between Google Gemini, OpenAI, and any OpenAI-compatible API
- Instant response — Get instant response for your queries
- Show Reasoning mode — Optionally appends the model's reasoning process below every response
- Global system prompt — Customize AI behavior across all conversations with a full-featured prompt editor
- Per-model accent colors — The entire UI tints to match whichever model is active
- Markdown rendering — Full in-house markdown parser supporting bold, italic, strikethrough, inline code, fenced code blocks with language labels, headings, bullet & numbered lists, blockquotes, horizontal rules, and links
- Scrollable code blocks — Code never wraps or gets clipped; horizontal scroll with
softWrap = false - Copy button — One-tap copy on every AI message with animated ✓ feedback
- Model name label — Each AI bubble shows which model generated it, snapshotted at send time (no stale labels on scroll)
- Animated typing indicator — Three-dot wave animation while waiting for response
- On-device speech recognition — Uses Android's built-in
SpeechRecognizer, no API key required, no usage limits - Live RMS visualizer — Animated pulse rings driven by real microphone amplitude in real time
- Full voice flow — Listening → Processing → Transcript → Send, all in a beautiful bottom sheet
- Partial results — Transcript updates word-by-word as you speak
- Key encryption — API keys encrypted at rest using c++ algorithm, never stored in plain text
- Zero telemetry — No analytics, no crash reporting services, no tracking of any kind
- No backend — All requests go directly from your device to the AI provider
- Material You design — Expressive Material 3 components throughout
- 3 themes — Light, Dark, and System (follows device)
- Theme persistence — Selection saved to SharedPreferences, restored on every launch via
Applicationclass - Full app restart on theme change — Clean process kill + relaunch via
Process Pheonix libfor instant theme application - Smooth transitions — Custom slide-up / slide-down / fade animations between all activities
- Edge-to-edge — Full edge-to-edge rendering with proper inset handling
- System Prompt Editor — Monospace editor with live word/char counter, 6 preset templates (Default, Coder, Teacher, Writer, Concise, Friend), unsaved-changes indicator, and animated Save/Discard bar
- Show Reasoning toggle — Appends structured reasoning section to AI responses
- Theme picker — Full-page theme selector with visual chat previews per theme
- About page — App info, feature list, stats, team card
- Privacy Policy — In-app privacy policy with structured sections
- Cache clearing — One-tap cache clear with redirect to system settings for deeper cleaning
- Android Studio Hedgehog or newer
- Android device / emulator API 26+
- A Google Gemini API key & OpenAI-compatible API key
# 1. Clone the repo
git clone https://github.com/ekm-labs/ekm_android.git
cd ekm_android
# 2. Open in Android Studio
# File → Open → select the cloned folder
# 3. Build & run
./gradlew assembleDebug| Permission | Reason |
|---|---|
INTERNET |
API requests to AI providers |
RECORD_AUDIO |
Voice input via on-device speech recognition |
ACCESS_NETWORK_STATE |
Network availability indicator in chat |
ekm AI has no backend infrastructure. Specifically:
- 🚫 No user accounts or sign-in
- 🚫 No analytics or crash tracking
- 🚫 No data sent to ekm servers (there are none)
- 🚫 No ads, ever
- ✅ All chat history stored locally on-device only
- ✅ All AI requests go directly to the provider you configured
When you send a message, it travels: Your device → AI Provider API → back to your device. That's it.
The project is under MIT Liscense
Made with ♥ in India
ekm AI · ekm Labs · 2026