Show HN: Harness.apk – a drop-in on-device agent for Android
github.comThe typical human-agent interaction loop currently looks as follows: operator writes a prompt, agent presents some options to choose from until the requirements become clear, does some work, and finally presents a report of what was actually done. This "specify > present" loop scales very well: you can specify a spaceship, a project at work, a vacation plan, or an omelette.
I got tired of specifying vacations and omelettes over SSH and remote sessions (which depend on a host somewhere to run the actual agent), and got tired of Claude Android's inability to write scripts to the filesystem or make me proper Maps routes, so here you go: harness.apk
The full agentic loop on a host that's already in your pocket and online 24/7, with rich widgets in writeups, and with hooks into everything the phone can do.
Its been my daily driver since the first version a month ago. Its been used to develop itself, even. Demo video is on the README.
Uses claude by default. Experience may vary
What is the main benefit of running the agent directly on the phone instead of Termux + SSH?
Is access to some android features or other benefits?
First and foremost: you don't need a machine to SSH into. When I'm on vacation, I can't count on my home server being up 24/7.
Secondly, yeah, Android / general interactivity features: it has a surface to propose edits/diffs, open dialogs, and show you rendered files, not just markdown in vim. Also: you take a picture and ask it to do something with it > it does. You ask it to put a route into google maps > it opens maps with the whole route placed properly.
And the killer: you can point it at a running browser with remote debugging enabled, and it can surf the internet on your behalf while you're sleeping. In general it can automate any interaction (via self-adb) if needed.
And my favourite: building and deploying android apps from android itself. Harness itself was built on the phone it runs on, and it works like a charm.
As a bonus: I've run this and a local Qwen as the model (hosted on my desktop's RTX 3090) — everything can be encapsulated in a true local-first environment.