OpenDroid is an autonomous agent that runs on an Android phone and carries out multi-step device tasks. It breaks a command into sequential steps with dependency tracking, executes each one, monitors the result, and replans when a step fails. A compound-intent guard detects commands that ask for more than one action, and contact references are resolved through four tiers of matching, including fuzzy matches and relationship aliases such as "call dad".
Device control runs through the Android accessibility service. The agent reads the screen by capturing screenshots for vision-capable models, falling back to accessibility-tree text scraping on older devices, and acts across system settings, messaging and calls, alarms, timers, reminders and calendar events, maps and ride booking, media, UPI payments and bill splitting, and Google Home devices. An offline wake word, speech-to-text, and text-to-speech provide a hands-free path.
Memory is held in four tiers: a temporary active plan, long-term explicit facts, learned patterns inferred from behaviour, and sensitive values encrypted in the Android Keystore. Habit detection mines recurring daily app sequences and offers them as one-click routines and morning briefings.
An on-device model manager downloads LiteRT-LM models in the background with pause, resume, cellular support and speed tracking, stores gated Hugging Face tokens with AES-GCM in the Keystore, computes SHA-256 hashes and checks engine compatibility before marking a model ready, and imports local .task or .litertlm files. The app is Kotlin with Jetpack Compose, Dagger-Hilt dependency injection, and a Room database, and builds against JDK 21 and Android SDK 35.
| Provider | Models | Type |
|---|---|---|
| Google Gemini | Gemini 2.0 Flash, Pro, Nano | Cloud and on-device |
| Anthropic Claude | Claude Sonnet 4, Opus 4 | Cloud |
| OpenAI | GPT-4o, GPT-4.1, o3 | Cloud |
| Groq | LLaMA 3, Mixtral | Cloud |
| DeepSeek | DeepSeek V3, R1 | Cloud |
| Mistral AI | Mistral Large, Medium | Cloud |
| OpenRouter | 200+ models via one API | Cloud |
| Together AI | Open-source model hosting | Cloud |
| Cohere | Command R+ | Cloud |
| GitHub Copilot | GPT-4.1 and Claude via the Copilot API | Cloud |
| Ollama | Any local model | Local |
| Custom OpenAI | Any OpenAI-compatible endpoint | Self-hosted |
Features
- Self-planning: complex commands are split into sequential steps with dependency tracking
- Re-evaluation: execution results are monitored and the plan is rewritten when a step fails
- Provider failover: if the primary provider fails, the next one in the chain is tried
- Screen understanding: screenshots feed vision models, with accessibility-tree scraping as the fallback
- Four-tier memory: active plan, long-term facts, learned patterns, and Keystore-encrypted sensitive data
- Habit detection: recurring daily app sequences become one-click routines
- Device actions: system toggles, messaging, calls, SMS, alarms, calendar, navigation, media, payments, and smart home
- On-device models: background LiteRT-LM downloads with pause and resume, hash verification, and local model import
- Voice interface: offline wake word, speech-to-text, and text-to-speech output
