My dev platform is a phone that folds
Last year my server turned out to be a phone that can’t fold. This is the phone that does: a Galaxy Z Fold 4 I bought new, whose inner screen stopped working after a year of daily use. I had the flex cable replaced and it came back, and the folding is the point — it opens into something I can work on, and closes into something that fits in a pocket.
Termux on it is a full Linux userland, so the agent lives next to the code. pi runs in Termux on the phone; tmux keeps sessions alive when the screen locks; herdr sits above both as a workspace manager for agents — one terminal with several agent CLIs in their own tabs, each in its own directory. herdr’s prefix is Ctrl+B, so tmux moved to Ctrl+A: whichever layer is outermost swallows the chord, and I’d rather the agent layer keep the default.
herdr also bridges over SSH, so herdr --remote me@home-box attaches to a session on the machine at home. The agents run on real hardware and the phone is just the client, which is what turned this from a spare into my main machine.
Then I hit the gap that started the project. Working on the phone itself, unfolded or through XREAL glasses in DeX, there is no pointer: Android shows no cursor on the inner display, so there’s no hover and no precise drag. Switching a browser tab, hitting the small control I was aiming at, or reaching the agent’s tab strip at the top of the screen all meant taking a hand off the keyboard to poke at glass. The soft keyboard has no Esc, no Ctrl+C and no arrows either.
What I wanted was a trackpad. A floating pad with a pointer drawn on top and injected as a real SOURCE_MOUSE. A panel carrying the keys Android leaves out. A way to aim that pointer at another display — the cover screen, or a virtual display the app creates itself.
That is Z Trackpad. I described it to pi running in Termux on the Fold 4, and tested every change on the device it was meant for. The direction was mine: the gestures, the ones I cut, the line between shipped and unshipped, the verification by hand on device. The agent wrote the code, the build script and most of the docs. Every claim in the README records whether it was confirmed by hand or only mechanically, and that record is what I’d call human-guided AI.
It’s at github.com/jan5o7o/ztrackpad, MIT. Sideload only, for the boring reason that Play doesn’t allow an accessibility service whose whole job is injecting input. The APK is on the releases page.
Demo. The 0.4.0 walkthrough — the window list, the CONTROLS panel and the keys switch, on the unfolded screen:
If the player will not load, the same clip is at youtube.com/shorts/FNPXTtWwO3I.