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.
I ain’t your pal, Buddy.
It’s not on Play (Google rejected the accessibility use)
And rightly so. Stop making me side with Google.
Maybe if it were designed to run completely locally I could respect it.
Lol, no.
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.
Did you explain its use as an accessibility aid being its core feature for differently abled people? If you have explained that as a core feature google could’ve budged. You would’ve needed to limit the API to select few like OpenAI, Gemini, Claude with additional guardrails and use reporting. But, it could’ve been accepted by google.
Oh hell no, never in my life will I let an agent control my phone. Fff— that.
Not a privacy invasion, at all. And you are abusing the accessibility features too? I’m proud of you.
Fair concern, and it’s not for everyone. The agent only sees the screen while it’s doing a task you gave it, it asks before anything is sent, and it’s open source, so you can check exactly what it does. If you’d rather not hand that to an AI, that’s a completely reasonable choice.
Excellent for local models running via OpenCode and helping with UAT on Android. Well done. What else is on your roadmap for this? Will you support Watch/TV/XR? F-Droid might take this.
Thanks, and thanks for the crosspost! Local models already work: in Settings you can add a custom OpenAI-compatible address (llama.cpp, Ollama or LM Studio on your network) and use it with OpenCode. It works best with models that are good at tool calling, since everything goes through phone tools.
Other devices: it’s built for phones, but someone already forked it to run on a Nintendo Switch with Android, with Joy-Con navigation: https://github.com/Lendss/buddy-switch. So other Android devices are clearly possible, I just haven’t tested watches, TVs or XR myself.
F-Droid: good timing. Buddy now builds all its native parts (proot, talloc and friends) from source in CI, with no prebuilt binaries in the repo, which was the main thing in the way. So an F-Droid build should be doable now. Until then, releases are on GitHub and the app updates itself.
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
Local models already work: in Settings you can add a custom OpenAI-compatible address (llama.cpp, Ollama or LM Studio on your network)
You should’ve mentioned this in the readme 🙂 I’ll check it out!
Done: 2.2.25 makes this easy. Ollama, LM Studio and llama.cpp are in the service list, plain http works on your own network and over Tailscale, and no key is needed. I tested Qwen3 8B in Ollama on a PC with an RTX 2060 Super, and it drives the phone fine. README has a section now: https://github.com/ghorbelhamdi/buddy-android#local-models
Why would anyone in the right state of mind allow that shit to control your phone??
Fair question, so here are real ones:
- Accessibility: with live voice (real-time, through your ChatGPT plan) you just talk to it. It does the tapping and reads things back, which helps people who can’t easily see or use a touchscreen.
- Testing apps: it exposes the phone as an MCP server, so Claude Code or Codex can drive your app on a real device for UI testing.
- Building apps on the phone itself: Buddy was mostly developed that way, with Claude Code running on the phone and using Buddy’s own phone tools to install and test each build.
It asks before anything is sent or bought and stops when you touch the screen. Not for everyone, and that’s fine.
No.
Token work offloading.
Unethical bingo sentences – center square.It’s just an MCP server for the phone with an app to control it, basically computer use, but for Android. Agents using computers are already normal, so I’m not sure why phones would be different. And it runs on your own plan, or on local models if you’d rather keep it off the cloud entirely.
A much safer accessibility method would be a flutter webview. Local user will be confined to the webview instance and will still need to resolve ai agent challenges themselves.
Accessibility-from-scratch utilizing a server\client with a linux shell is what something like Shizuku was made for. Elevated privileged activities like listing installed apps, running apps, running a url (elevated) are not normal in ai agent workflows. MCP server resources can be “patched” this way from a very specific call… hence offloading somebody else’s token work.
Let Al have full access to your contacts and the first most likely device to have pictures of your genitals.
People are so mean these days, show some support
Name a single good reason that I should support this
One: someone who can’t see the screen can just talk to it, with live voice, and it does the tapping and reads things back. For a lot of people, that’s the difference between using a phone app themselves and needing someone to do it for them.
Everything related to AI gets down voted. Controversial at best.
Curious why. Seems people vote against datacenters in their vicinity, against the flood of self-promote by AI agents in the remaining somewhat human corners of the internet, against the flood of dubious vibe-coded projects which for some reason all have the same description that starts with “I built …”







