BYOK LLM client with multi-provider access, agentic workflows, and remote device control.
English | 中文
- F-Droid (Recommended) — Install via F-Droid, search for Agora.
- GitHub Releases — Download the latest
.apkfrom the Releases page. - Build from Source — Clone and build with Android Studio (see Getting Started).
Agora — a BYOK Android client for AI power users. Connect to 8+ built-in providers (plus unlimited custom endpoints) with your own keys, branch conversations non-linearly, run models locally via llama.cpp, and control remote machines through encrypted shell. Everything stored on-device, nothing logged elsewhere. Open source, MIT licensed.
- No Middlemen: Direct API connections. No telemetry, no tracking, no corporate servers logging your conversations. Everything lives locally in a Room database.
- Non-Linear Thought: A tree-structured message database lets you edit any past message, regenerate responses, and explore alternative branches without losing context.
- Agentic by Default: Multi-round tool calling with web search, code execution, remote file operations, memory management, and semantic conversation search.
- Remote Control: Manage servers, edit files, and search code on remote machines via the Conch protocol — end-to-end encrypted with ECDH + AES-256-GCM.
- 8 built-in providers: OpenAI, Anthropic, Google Gemini, DeepSeek, Qwen (DashScope), OpenRouter, Ollama, Local (GGUF via llama.cpp)
- Unlimited custom providers with arbitrary base URLs and API keys
- BYOK: Bring your own API keys — no subscriptions, no middlemen
- Multiple API keys per provider with named aliases for easy rotation
- Per-provider base URL override for proxies and self-hosted endpoints
- Web Search — Brave, Serper, Tavily, and SearXNG integration
- Code Execution — Gemini code execution for running and testing code inline
- Remote Shell & File I/O — Execute commands, read/write/edit/glob/grep files on remote servers via Conch
- Memory — Persistent active memory and saved memory files across conversations
- Conversation Search — RAG-powered semantic search over chat history
- Deep reasoning: OpenAI o1/o3, Anthropic extended thinking, Gemini thinking, DeepSeek-R1, Qwen QwQ
- Configurable thinking level (low/medium/high)
- Streaming think-tag renderer with collapsible UI and duration tracking
- Local LLM inference via llama.cpp — run GGUF models entirely offline
- Local embeddings for on-device semantic search (RAG)
- Ollama provider for self-hosted models on your local network
- ECDH key exchange + AES-256-GCM encryption + HMAC-SHA256 signing
- Token bucket rate limiting and nonce-based anti-replay protection
- Multi-device support — configure and switch between multiple remote servers
- MCP integration — Conch as a Claude Desktop MCP server
- RAG semantic search across all past conversations using cosine similarity
- Configurable similarity threshold and keyword/model search methods
- Selectable embedding model (remote or local), independent of chat model
- Context window management with real-time token counting and sliding window
- Visual context rollout indicator dims messages outside the active window
- .agora Export/Import: Conversations, memories, prompts, settings, and API keys in one portable file
- Merge, Replace, and Skip import strategies
- Third-Party Import: Claude and ChatGPT export formats (.zip / .json)
- API key safety warnings for both export and import workflows
- System prompt templates with three-section editor (system prompt + user prepend + user append)
- Variable substitution:
{sent_time},{sent_date}, and extensible variable system - Per-conversation model and system prompt switching
- Per-message model selection from the chat bottom bar
- Per-conversation generation overrides (temperature, max tokens, penalties)
- Auto title generation with configurable model
- Modern Material 3 design in Jetpack Compose with dynamic color (Material You)
- Light / Dark / System theme modes with configurable color schemes
- Non-linear branching: Edit any past message and branch into alternative conversation paths
- Real-time streaming with message anchoring and animated auto-scrolling
- Immersive gesture-driven image and media viewer
- Markdown rendering with syntax highlighting, LaTeX math, and code blocks
- Image, video, PDF, and file attachment support with thumbnails
- English and Chinese language support
📖 Browse the User Manual — 15 pages covering installation, providers, tools, search, memory, shell, and more.
🏗️ Architecture Guide — complete codebase walkthrough: data layer, API providers, JNI, UI, and data flows.
- Android Studio (Ladybug or newer recommended)
- Android SDK 34+
- A valid API key from a supported provider
| ① Launch Open Agora on your device. |
② Settings Open Settings from the nav bar. |
③ API Key Select a Provider and add your API Key. |
④ Models Models → "Sync from All Providers." |
⑤ Customize System prompts, context, search, memory. |
| ① Place Put a GGUF model file on your device. |
② Import Settings → Provider → Local → "Import GGUF Model". |
③ Configure Set context size, temperature, and other parameters. |
④ Select Choose your local model from the chat picker. |
| ① Deploy Deploy the Conch server on your target machine. |
② Add Device Settings → Shell Devices → add URL and API key. |
③ Use The model auto-discovers shell devices for commands, files, and search. |
- Language: Kotlin
- UI Framework: Jetpack Compose (Material 3, dynamic color)
- Architecture: MVVM with Kotlin Coroutines & Flow
- Local Storage: Room Database with tree-structured message schema & DataStore Preferences
- Networking: OkHttp with SSE streaming
- Serialization:
kotlinx.serialization - Native: llama.cpp via Android NDK (CMake) for on-device LLM inference and embeddings
- Image Loading: Coil
- Markdown: Multiplatform Markdown Renderer M3
- Math: JLaTeXMath-Android
Contributions are welcome! Feel free to fork the repository, submit pull requests, or open an issue.
Agora does not collect, store, or transmit any personal data. All conversations, API keys, and settings are stored locally on your device. Messages are sent directly from your device to the AI provider you configure — no intermediary servers, no telemetry, no tracking. See the full Privacy Policy.
This project is open-source under the MIT License.