🤖 The Open-Source Autonomous AI Agent for Android
Your phone. Your rules. Your AI.
Features • Architecture • Get Started • Providers • License
--- ## 🎯 What is OpenDroid? OpenDroid isn't just another chatbot. It's a **fully autonomous AI agent** that lives on your Android phone and actually *does things* for you. > *"Check if it's going to rain tomorrow, and if so, text my wife that I'll be late and set an alarm for 6 PM."* OpenDroid will **plan** this as 3 steps, **execute** each one, **verify** the results, and **adapt** if anything fails — all without you lifting a finger. --- ## ✨ Features ### 🧠 Autonomous Agent Engine | Capability | Description | |------------|-------------| | **Self-Planning** | Breaks complex commands into sequential steps with dependency tracking | | **Habit & Routine Detection** | Mines recurring daily app sequences (e.g. Gmail $\to$ Calendar $\to$ Slack at 9 AM) and offers one-click automated routines | | **Re-Evaluation** | Monitors execution results and dynamically replans when steps fail | | **Compound Intent Guard** | Smart detection of multi-action commands (e.g. "open WhatsApp *and* send message") | | **Contact Disambiguation** | 4-tier contact resolution with fuzzy matching and relationship aliases ("call dad") | ### 🛠️ On-Device Model Manager (LiteRT-LM) | Capability | Description | |------------|-------------| | **Background Downloader** | Real network downloads (via WorkManager) with Pause/Resume, cellular support, speed tracking, and ETA | | **Secure Authentication** | Direct Android Keystore AES-GCM token storage to securely fetch gated Hugging Face models | | **Integrity Verification** | Computes SHA-256 hashes and verifies LiteRT engine loading compatibility before marking READY | | **Local Model Import** | Direct offline importing of catalog or freestanding custom `.task` / `.litertlm` files with JNI verification checks | ### 📱 Full Device Control | Action | Examples | |--------|----------| | **System** | Brightness, WiFi, Bluetooth, Flashlight, DND, Volume, Screenshot | | **Communication** | WhatsApp messages, Telegram messages/channels (`@user`), Calls, SMS, Email drafts | | **Routines** | Morning briefings, agenda summaries, automated macro sequences | | **Productivity** | Screen extraction ("Read & Remember"), Alarms, Timers, Reminders, Calendar events, Notes | | **Navigation** | Google Maps directions, Uber/Ola booking | | **Media** | Play/pause music, YouTube search, camera | | **Finance** | UPI payments, bill splitting, currency conversion | | **Smart Home** | Google Home device control | ### 👁️ Vision Engine & Screen Understanding Captures screenshots via Accessibility API and feeds them to vision-capable LLMs for real-time screen analysis and **"Read & Remember"** multimodal meeting/note extraction. Falls back to accessibility tree text-scraping on older devices. ### 🗄️ 4-Tier Personal Knowledge Graph ``` ┌─────────────────────────────────────────────────────────────┐ │ Personal Knowledge Graph │ ├──────────────┬──────────────┬────────────────┬──────────────┤ │ ⚡ Level 1 │ 🧠 Level 2 │ 📈 Level 3 │ 🔒 Level 4 │ │ Temporary │ Long-Term │ Learned │ Sensitive │ │ (Active │ (Explicit │ Patterns │ (Keystore │ │ Plan) │ Facts) │ (Inferences) │ Encrypted) │ └──────────────┴──────────────┴────────────────┴──────────────┘ ``` ### 🎙️ Voice Interface - **Offline wake word** detection — say *"OpenDroid"* to activate - **Speech-to-text** for hands-free commands - **Text-to-speech** with ElevenLabs premium voice support ### 🎨 Premium UI Built with **Jetpack Compose** featuring a futuristic glassmorphic design: - Deep navy (`#080C10`) + Neon green (`#00FF88`) color system - Pulsing audio orb animation during listening - Live latency benchmarks for each provider - Dark mode by default ### 🎬 Meet OpenDroid in 3D
OpenDroid saying hi — rendered in 3D!
> **Note:** If the video doesn't play inline on GitHub, [click here to download and watch it](assets/gemini_generated_video_90af62cc.mp4). ### 📸 Screenshots
Chat • Plan Engine • Memory System • Alarm Control
--- ## 🏗️ Architecture Clean architecture with **Dagger-Hilt** dependency injection: ``` com.opendroid.ai │ ├── 🤖 accessibility/ App automators (WhatsApp, SMS, Calls) ├── ⚡ actions/ 60+ action executors across 10 modules ├── 🧠 core/ │ ├── agent/ AgentLoop, PlanManager, IntentClassifier, VisionEngine │ ├── llm/ 13 LLM providers, fallback chain, prompt engine │ ├── memory/ 4-tier memory system + notification intelligence │ ├── security/ Direct Keystore provider credentials + legacy plaintext migration │ ├── service/ Foreground service, notification listener, boot receiver │ └── voice/ Wake word, speech recognition, TTS engine │ ├── 💾 data/ │ ├── db/ Room database (7 DAOs, 7 entities, 3 migrations) │ ├── models/ Unified data models (Plan, Memory, ChatMessage) │ └── repository/ Repositories backed by Room & DataStore │ ├── 💉 di/ Hilt modules (App, Database, LLM) └── 🎨 ui/ ├── theme/ Glassmorphic design system ├── screens/ 16 screens (Chat, Plan, Memory, Settings, etc.) ├── viewmodel/ 8 ViewModels └── components/ Reusable Compose components ``` --- ## 🔌 Supported LLM Providers OpenDroid supports **13 LLM providers** with automatic failover: | Provider | Models | Type | |----------|--------|------| | 🟢 **Google Gemini** | Gemini 2.0 Flash, Pro, Nano | Cloud + On-device | | 🟣 **Anthropic Claude** | Claude Sonnet 4, Opus 4 | Cloud | | 🔵 **OpenAI** | GPT-4o, GPT-4.1, o3 | Cloud | | ⚡ **Groq** | LLaMA 3, Mixtral (ultra-fast) | Cloud | | 🔷 **DeepSeek** | DeepSeek V3, R1 | Cloud | | 🟠 **Mistral AI** | Mistral Large, Medium | Cloud | | 🌐 **OpenRouter** | 200+ models via unified API | Cloud | | 🤝 **Together AI** | Open-source model hosting | Cloud | | 🔴 **Cohere** | Command R+ | Cloud | | 🐙 **GitHub Copilot** | GPT-4.1, Claude via Copilot API | Cloud | | 🟩 **Opencode-Go** | Beam Free and other OpenCode Go models | Cloud | | 🏠 **Ollama** | Any local model (LLaMA, Phi, etc.) | Local | | 🔧 **Custom OpenAI** | Any OpenAI-compatible endpoint | Self-hosted | > **Smart Fallback**: If your primary provider fails, OpenDroid automatically tries the next available provider in the chain. --- ## ⚡️ Getting Started ### Prerequisites - **JDK 21** — not newer. The project compiles against Java 21 (`jvmToolchain(21)`). `gradle/gradle-daemon-jvm.properties` makes `./gradlew` select an installed JDK 21 automatically, so you do not have to change `JAVA_HOME` — but a JDK 21 must be installed. - **Android SDK 35** (Android 15) ### Build & Install ```bash # Clone the repository git clone https://github.com/yashab-cyber/opendroid.git cd opendroid # Build debug APK ./gradlew assembleDebug # APK output location # → app/build/outputs/apk/debug/app-debug.apk ``` ### Required Permissions On first launch, OpenDroid will guide you through granting: | Permission | Why | |------------|-----| | 🔓 **Accessibility Service** | UI automation, screen reading, app control | | ⚙️ **Write Settings** | Toggle WiFi, Bluetooth, brightness | | 🎤 **Record Audio** | Wake word detection & voice commands | | 🔔 **Notification Access** | Smart notification reading & auto-reply | | 📱 **Post Notifications** | Foreground service status | ### Configure LLM In **Settings**, add your API key for any supported provider. OpenDroid works best with: - **Gemini** (free tier available) - **Groq** (fastest inference) - **Ollama** (fully offline) --- ## 🔒 Security Found a vulnerability? Please report it responsibly. See [SECURITY.md](docs/SECURITY.md) for details. --- ## ⭐ Star HistoryMade with ❤️ by Yashab Alam
⭐ Star this repo if OpenDroid has helped you!