Ian Provencher
Listen to the podcast
← All field notes
Written here 3 min read

The phone round: a native app for my ops console

By Ian Provencher

My Command Center — the local-first console I run my whole operation from — lived on the desktop. Projects, the task board, agent assignments, the nightly briefing: all of it a browser tab away when I was at the machine, and completely out of reach when I wasn’t. The obvious fix was a mobile app. The non-obvious part was doing it without turning a one-operator setup into a mobile-development project.

So the whole thing is a native Android shell around the console I already have. No rewrite, no second codebase to keep in sync — a thin, native app that does the four things a web page can’t.

It locks like a real app

Open it and it wants a fingerprint — face or a PIN as the fallback. Background it for five minutes and it re-locks. The console holds the keys to the operation; the app treats it that way. Auth rides on a long-lived operator token so I’m not logging in every time, but the biometric gate stands in front of it.

It pushes

This is the feature that changed how I work. The app runs a foreground service that holds a live stream open to the console. When an agent finishes an assignment, or gets stuck and needs a human, or the console refreshes — the phone buzzes. I don’t poll a dashboard anymore; the work reaches me. Dispatch something from the desk, walk away, and get the “done” (or the “blocked, needs you”) on my lock screen.

It updates itself

There’s no app store in the loop, and I refuse to sideload a new build by hand every time I change something. So the app checks a version endpoint on launch; if there’s a newer build, it pulls and installs it. Over-the-air, end to end — I ship a new version to the console and every install catches up on its own. I tested it by shipping an update and watching the phone move to it without a cable in sight.

It was built from the command line

No Android Studio. The whole toolchain — the JDK, Gradle, the Android SDK — sits in a plain folder and builds from the shell, the same place I do everything else. A signing key I keep well off the repo, one Gradle command, and the APK drops out. It reaches the console over a private mesh, so the app talks to a box that’s never exposed to the open internet.

Why it’s here

None of this is exotic — a WebView, a foreground service, a version check, a biometric prompt. The point is the leverage: a few hundred lines of Kotlin turned a desktop-bound console into something I carry, and the operation now reaches me instead of waiting for me to check on it. That’s the whole thesis of this site in miniature — a small, sharp build that closes a real gap, shipped by one person pointing AI at the exact problem in front of them.

#build#mobile#android#command-center