DroidClaw
droidclaw.ai- Category
- AI Agents
- Rank
- No. 2857Tools index
Previous survey · No. 2779 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Workflow Automation
- Interfaces
- CLI · SDK
- Builder
- unitedbyai
- GitHub
- 1.6k stars
- Latest release
- v0.5.3
- Date
About
Turn old Android phones into AI agents that can understand plain English goals and automatically navigate apps by tapping, typing, and swiping. Uses accessibility services and ADB to control devices remotely or automate complex multi-app workflows.
What it does
DroidClaw puts a language model in charge of a real Android handset. You type a goal in plain English, and a loop repeats up to 30 times: read the screen's accessibility tree, ask the model for one next move as JSON, perform that move, check whether the goal is met. It runs two ways. A standalone command-line agent drives a USB-connected phone through the Android Debug Bridge (ADB). A hosted mode pairs a companion Android app with a server and web dashboard over WebSockets, where the app acts through Android's accessibility service instead.
Why it's ranked here
The case rests on the failure handling, not the demo. The agent loop hashes each screen to spot when nothing changed, counts repeated actions in a sliding window, flags runs of aimless scrolling and waiting, and escalates to a screenshot when the tree is empty or the agent stalls for two steps. The model is swappable across five providers, including fully local Ollama. The project also publishes a frank limitations document covering banking apps, biometrics, multi-finger gestures and single-device control. That candour is rarer than the feature list.
What's good
Three modes cover different jobs: an interactive goal prompt, JSON workflows that chain goals across apps, and YAML flows that replay fixed taps with no model calls at all. The model sees a compact, scored list of on-screen elements, deduplicated by position, rather than raw XML, which keeps prompts small. Coordinates the model garbles, such as two numbers run together, are repaired before any tap is sent. Typed text is escaped for the device shell. Every hosted run is logged step by step so a session can be replayed.
Tradeoffs
The command-line agent requires Bun and will not run on Node. The model can choose a shell action that runs any ADB shell command on the phone, and the documented quick install pipes a remote script into the shell, so the trust surface is wide. Apps that block screen capture, games and custom-drawn interfaces leave the agent partly or fully blind. Each step waits on a model round trip. The action count disagrees across sources: 15, 22, 26 and 28 in different files, which suggests the docs trail the code.
How to use it well
Best on a spare phone you are willing to hand over, for chores inside ordinary apps like messaging, settings and search. Start with the command-line agent over USB and a free Groq key or local Ollama, then promote anything you repeat identically into a YAML flow so it stops paying for model calls. Use workflows for multi-app chains. Keep it away from a primary phone holding banking or credential apps, and do not expect it to orchestrate several devices at once.
Technical notes+
src/kernel.ts runs the loop: uiautomator dump pulled over ADB, parsed by src/sanitizer.ts (fast-xml-parser) into elements scored and deduplicated in 5px buckets, then screen-hash diffing, a repetition alert at 3 identical recent actions, a drift warning at 4 of the last 5 being navigation, and screenshots when VISION_MODE is always, the tree is empty, or stuckCount reaches 2. src/actions.ts dispatches via Bun.spawnSync with exponential-backoff retries and sanitizeCoordinates. src/llm-providers.ts wires OpenAI, Groq, Bedrock, OpenRouter and Ollama; src/config.ts defaults to groq. server/src/index.ts is Hono on Bun.serve with /ws/device and /ws/dashboard. android/app/build.gradle.kts targets minSdk 24.
Observed
- Runtime
- Bun required; Node and npm explicitly unsupported
- Language
- TypeScript agent and server; Kotlin with Jetpack Compose Android app
- Interfaces
- CLI agent over ADB; Hono server with WebSocket device and dashboard channels; Android companion app
- LLM providers
- OpenAI, Groq, AWS Bedrock, OpenRouter, Ollama (local)
- Install surface
- curl-piped install script, or git clone plus bun install; APK for the Android app
- Android minimum
- minSdk 24 (android/app/build.gradle.kts)
- Automation modes
- Interactive goal, JSON multi-app workflows, YAML fixed flows with no LLM
- Documented limits
- Single device only; no multi-finger gestures; FLAG_SECURE apps block capture
Read from README.md, package.json, docs/capabilities-and-limitations.md, docs/plans/how-droidclaw-works.md, src/kernel.ts, src/actions.ts, src/llm-providers.ts, src/sanitizer.ts, src/config.ts, server/src/index.ts, server/package.json, android/app/build.gradle.kts, site/install.sh.
What it can do
Convert old Android phones into AI agents
Old Android device → AI-controlled automation agent
Execute plain English commands on Android devices
Natural language instructions → Automated device actions
Automatically navigate mobile apps
Target app and navigation goal → Completed app navigation sequence
Perform touch interactions on Android screens
Screen coordinates and interaction type → Tap, swipe, or typing actions
Control Android devices remotely
Remote connection and commands → Device control actions via ADB
Automate multi-app workflows
Workflow requirements spanning multiple apps → Coordinated actions across multiple applications
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.