I’ve been building Buddy, a free, open source (Apache 2.0) Android app. You type or say what you want in a floating bubble, and an AI agent reads the screen, taps and types through your apps to do it.
- Your choice of agent: Claude Code, Codex, OpenCode, Antigravity or Grok, running inside the app (Alpine Linux via proot) on your own plan. OpenCode’s free models need no account.
- No root, adb or PC: it reads the screen and taps through the accessibility service.
- Asks first: before anything is sent, posted, bought or deleted. It pauses when you touch the screen and never types passwords or payment details.
- Builds apps: with Linux tools on, it builds real APKs on the phone. This week I drew a maze on a paper towel, took a photo, and it made it a tilt game. The first build crashed on launch; it found the bug and fixed it.
To be upfront:
- What the agent reads on your screen goes to the AI service you pick.
- It’s early (2.2), tested most on a OnePlus 12 with Android 16.
- It’s not on Play (Google rejected the accessibility use), so it’s an APK from GitHub releases, built by GitHub Actions from the source.
Source and releases: github.com/ghorbelhamdi/buddy-android
Happy to answer questions here.



Update: it’s now submitted to F-Droid, with reproducible builds, so the F-Droid and GitHub versions will be the same app signed with the same key, and you can switch between them: https://gitlab.com/fdroid/fdroiddata/-/merge_requests/56198
Nice to hear!
Please, ping me once you get the approval, I prefer F-Droid over Obtainium 🙂
@[email protected] as promised: Buddy is on F-Droid now 🙂 https://f-droid.org/packages/app.buddy.assistant/ It’s at 2.3.1 there for now, newer versions follow as F-Droid builds them.
I tried it out, during setup I don’t see a way to select an OpenAI compatible provider. Is this an older version?
It’s not in the first-run setup, it’s in Settings → API keys → Add API key. Pick Ollama, LM Studio or llama.cpp from the Service menu (or Custom for any other OpenAI-compatible address), put in your server’s address and leave the key empty. Then use it in an OpenCode chat. The 2.3.1 on F-Droid has it. More here: https://github.com/ghorbelhamdi/buddy-android#local-models
Ah, I see. Maybe it would make sense to allow users to select the option like llama.cpp from the start? In Zed editor, for example, Llama.cpp is one of the “providers”.
After adding it, I still see “Install Claude Code” as one of the setup steps. Do I still need to install it?
Sorry for not trying it earlier, I was quite busy last week 🙂
You were right, so 2.3.7 has it: the setup guide now offers “Local model” from the start. It sets up OpenCode, asks for your llama.cpp / Ollama / LM Studio address and makes that the default. It’s on GitHub now, F-Droid follows in a few days.
Thanks!
Fair point. You do still need one agent, since it’s what talks to the model. For local I’d use OpenCode (free, no account); Codex works too. Set Default brain to OpenCode in Settings, install it, and pick your llama.cpp model in a chat. No need for Claude Code, that step only shows because it’s the default agent. Thanks for trying it 🙂
Awesome, thank you!