Claude on your server, from your phone.

Auto Blocker is on by default and silently blocks every sideloaded app. It is the usual reason a valid APK says “App not installed”.
Settings → Security and privacy → Auto Blocker → off.
Updates arrive inside the app from then on. It checks on launch and installs only when you confirm.
The same APK. There is no separate tablet build to keep in step — the layout switches at 600dp of width, so one artifact and one update channel serve both. Measured on a 2560×1600 Tab S9 profile.
Claude Code on the hub, in a session that survives your phone losing signal or locking. Reopen and it is exactly where you left it.
VS Code over the tunnel, with buttons for the side bar, command palette and terminal panel.
Every node with live port checks. A node reads down when nothing is listening, even if it answers a ping. Pull down to rescan.
The hub's full XFCE session over noVNC, if you ever want a GUI.
If the install fails with “package appears to be invalid”, the file truncated — re-download and compare:
sha256 b7b6b34a85cc4cf4603f26b02571ed0392fdb912b241a5081a690f50fc555afa
Size should be exactly 11620985 bytes.
The Claude, Mesh and Desktop tabs reach the hub over Tailscale — if the phone is off the tailnet they will sit at a blank screen. Open Tailscale and reconnect.
The Editor tab relays through Microsoft, so it works on mobile data with no tailnet at all.