← All articles
Article

Running SentinelX on My Phone — and What Android Taught Me About Mobile Security

I put a full infrastructure-control agent on an Android phone in an afternoon. It worked — and Android's own sandbox turned out to be a stronger security story than I expected.

SentinelX gives an LLM structured, allowlisted, audited access to real machines. The hosts are usually what you would expect — a VPS, a home server, a build box. But one afternoon I asked a smaller question: could a phone be a host? Could I operate my own Android device from an LLM, the way I operate a Linux server?

The short answer is yes. The longer answer taught me more about mobile security than I went looking for — and most of it was reassuring.

The setup: Termux, not magic

The agent is pure Python talking to the hub over an outbound WebSocket. Nothing about that is server-specific. What it needs is a Python runtime and somewhere to run — and on Android, that somewhere is Termux, a genuine Linux environment that runs inside the Android app sandbox.

There is no one-line installer here: Termux is not a normal distribution — no apt, no systemd, non-standard paths — so the install is manual. The only real speed bump is that one dependency, pydantic-core, is written in Rust and compiles on-device. On a phone that means ten to fifteen minutes of the CPU quietly grinding. After that you point the agent at a config and an identity file, run it, and:

connected; session=sess_f23cd11eb833

The phone was a live host. From the LLM, I ran a command on it:

$ uname -a
Linux localhost ... aarch64 Android
$ uptime
 up 46 days

A decades-old idea — operate this machine remotely — pointed at the most personal computer most people own. No inbound port, no root, sitting behind mobile-carrier NAT. The phone simply presented itself to the hub and waited for instructions.

The moment it clicked: a photo, phone to laptop

To prove it was real, I asked the LLM to take the most recent camera photo and move it to my laptop's Downloads folder. SentinelX transfers files host-to-host, streaming through the hub one chunk at a time — neither device opens a port, and the destination is verified by SHA-256 before the transfer is reported complete.

A few seconds later, a twelve-megapixel JPEG that had been sitting in my phone's camera roll was in ~/Downloads on my laptop. Phone to hub to laptop, verified, with no cable and no cloud-sync app in the middle.

What Android would not let me do (the good part)

This is where it got interesting for a security product. I started pushing at the edges of what the agent could reach — and Android pushed back, hard, in exactly the right places.

My photos were invisible by default. The agent could see the names of the top-level folders in shared storage, but it could not read a single image file. Android's scoped storage blocked it. To grant access I had to run termux-setup-storage and tap "Allow" on a system permission prompt — a deliberate, explicit opt-in. Until I did that, my camera roll was simply out of reach.

I could not list my installed apps. I tried every angle — the package manager, /data/app, /data/data, the shared-storage app folders. Every one came back permission denied. Android sandboxes each app from every other app, and the agent lives inside the Termux sandbox as an ordinary non-root user. It cannot see what else is installed on the phone. Full stop.

On a server, an agent with sudo can enumerate every installed package. On a phone, Android's app sandbox makes the agent's reach narrower — and that is a feature, not a limitation.

This was the part I did not expect to enjoy. The mobile sandbox is an ally. On a server, the security boundary is the one you configure: the command allowlist, the read and write paths. On a phone, Android adds a second, stronger boundary underneath — the agent is confined to what one sandboxed app can touch, and personal data is opt-in only.

The security model, made concrete

SentinelX's own controls still apply on top of Android's, and running on a phone made two of them vivid:

The result is a layered model. Android decides what the Termux app can touch at all; SentinelX decides what the LLM may do within that. Two independent fences — and you own both.

A new kind of host

What this really opens up is a shape of user I had not drawn a line around before: not the server operator, but anyone with an ARM device — a phone, a tablet, a cheap single-board computer — who wants to reach it from their LLM. Check something on your phone from your desktop assistant. Pull a file off a device that is behind NAT. Operate a little ARM box you left running somewhere, with no port forwarding and no VPN.

The agent does not care that it is a phone. It is just another host — one that happens to fit in your pocket, and that Android keeps honest.

Want to try it? The full walkthrough — dependencies, the Rust compile, enrollment, and how to grant photo access if you want it — is in the Android install guide: