by 0xMassi
One command to run the AI coding CLI you already pay for (Claude Code, Codex, Cursor, Gemini, Grok, aider) on a Tailscale-only Hetzner box — code from your phone.
# Add to your Claude Code skills
git clone https://github.com/0xMassi/pocketdevpocketdev is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by 0xMassi. One command to run the AI coding CLI you already pay for (Claude Code, Codex, Cursor, Gemini, Grok, aider) on a Tailscale-only Hetzner box — code from your phone. It has 55 GitHub stars.
pocketdev's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/0xMassi/pocketdev" and add it to your Claude Code skills directory (see the Installation section above).
pocketdev is primarily written in Go. It is open-source under 0xMassi on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh pocketdev against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Run the AI coding CLI you already pay for on a cloud box you reach from your phone.
pocketdev provisions an always-on Hetzner server, locks it to your private Tailscale network (no public SSH), and installs the agent you use: Claude Code, Codex, Cursor, opencode, Gemini, Grok, or Aider. You log in with your own subscription. Then you SSH in from a laptop or from Termius on a phone and code from anywhere.
Two commands and you are done:
# on your laptop
pocketdev
# on the box (once)
ssh dev@devbox
pocketdev setup
pocketdev (laptop) walks one step at a time: paste a Hetzner token (it checks the token before moving on), choose the box, connect Tailscale, choose which agents to install on the box, and pick what code the box starts with. Each console page opens only when you reach that step and say so.
The Project step picks one source for the box's code:
gh CLI; pocketdev clones it on the box during pocketdev setup (after gh auth login). If gh isn't installed locally, type owner/repo instead.ctrl+a toggles hidden files), pick a folder or file, and pocketdev rsyncs it to the box over the tailnet once the box is up.The box step offers two paths:
shift+tab to step back. pocketdev creates a firewall that drops all public inbound, boots Ubuntu 24.04 with that firewall attached, joins it to your tailnet, and installs the agent CLIs. Nothing listens on the public internet.pocketdev destroy never deletes an adopted server (you owned it first).pocketdev destroy deletes a created box and its firewall. With an OAuth client it also revokes the tailnet node; with a plain auth key, remove the node from the Tailscale console (it goes offline on its own when the box is gone).
After the box is up, pocketdev waits for first-boot to finish (cloud-init also runs apt upgrade), verifies over SSH that each agent CLI is installed, then offers to drop you into pocketdev setup.
pocketdev setup (on the box) installs anything missing, signs into GitHub and clones your repo, then runs each agent's login. The login runs over your SSH session, so the browser or paste-code flow works the same as it does on your laptop. (The clone runs before the agent logins, so your project is there even if you skip a login.)
After that: ssh dev@devbox, start tmux, run your agent.
go install github.com/0xMassi/pocketdev@latest
Or grab a prebuilt binary for macOS or Linux (amd64/arm64) from the Releases page.
Or build from source:
git clone https://github.com/0xMassi/pocketdev
cd pocketdev && go build -o pocketdev .
You need go 1.25+ to build, and ssh-keygen on your laptop (pocketdev generates an SSH key for you if you lack one). pocketdev version prints the build you're running.
tailscale CLI. (Advanced/zero-touch: set TS_OAUTH_CLIENT_ID + TS_OAUTH_CLIENT_SECRET for a tagged, auto-revoking node; tailscale-acl.hujson is the policy snippet for that path.)You only do this once. pocketdev saves your config to ~/.config/pocketdev/config.json (0600), so the next box skips the credential prompts.
| Agent | CLI | Auth |
|---|---|---|
| Claude Code | claude |
Claude Pro/Max (paste-code login over SSH) |
| OpenAI Codex | codex |
ChatGPT Plus/Pro/Business (codex login --device-auth) |
| opencode | opencode |
Claude Pro/Max, GitHub Copilot, ChatGPT |
| Cursor | cursor-agent |
Cursor Pro/Business |
| Google Gemini | gemini |
Google account, or GEMINI_API_KEY |
| Grok Build | grok |
SuperGrok / X Premium+, or GROK_CODE_XAI_API_KEY |
| Aider | aider |
API key only (no subscription login) |
Pick one or several. pocketdev setup installs each and runs its login.
AllowUsers dev. The dev user has no sudo, so an agent running arbitrary shell cannot escalate to root.unattended-upgrades patches the box and reboots in a quiet window (05:00 by default). A reboot ends the tmux session (processes don't survive it), but your code on disk does, and claude --resume reopens the last conversation, so you pick up where you left off.Break-glass when the box is unreachable: Hetzner Rescue mode gives you a root shell and mounts the disk, so you can read /var/log/cloud-init-output.log.
Hetzner CAX21 (4 vCPU / 8 GB ARM) runs about €8/mo with an IPv4, €8/mo without VAT. CAX11 (4 GB) is the cheap option at about €5/mo and works for a single light session. ARM lives in the EU regions (nbg1, fsn1, hel1); use the x86 CX32 in ash or hil for the US. Tailscale is free for personal use up to 6 users. A powered-off Hetzner server still bills, so pocketdev destroy is the way to stop charges.
After a create, pocketdev prints a "Code from your phone" card with a scannable QR, the host details, and these steps. Run pocketdev mobile anytime to show it again, authorize a phone key, and write an ~/.ssh/config entry (so ssh devbox works in any terminal).
The goal: open your SSH client, tap the box, FaceID, you're attached to the live tmux code session with your agent.
The box runs key-only SSH and trusts only keys it already knows, which at first is your laptop's alone. A QR can't carry a private key: it holds the address (ssh://dev@<host>) and nothing secret, and Termius free has no cloud key sync. Scan the QR with no key on the phone and you get "connection refused." So put a trusted key on the phone once. Easiest first:
sk- key) and publishes only the public halves at sshid.io/<your-handle>. Run pocketdev mobile, choose Termius SSH ID, and enter your handle; pocketdev fetches every device's public key over https, validates each, and appends them to the box's authorized_keys in one shot. No key file leaves a device, your hardened key-only SSH and Mosh stay untouched, and one handle covers all your devices. pocketdev mobile --sshid <handle> skips the prompt.pocketdev mobile → Paste a public key. The same trust model as SSH ID, one device at a time.~/.ssh/id_ed25519 to the phone and import it in Termius (Keychain → Import). Nothing to authorize, since it's already trusted, though laptop and phone then share one key.100.x IP as a fallback; user dev), attach your key, enable Mosh (yes, it's on the free Starter plan), set the startup command tmux new -As code. Then it's open → tap → FaceID → coding. (Host sync across your devices needs Pro; SSH ID public keys sync on free.)ssh://dev@<fqdn> QR, or wrap a blinkshell://run URL in an iOS Shortcut and "Add to Home Screen" for a literal one-tap-from-home-screen.Tried Tailscale SSH (no key at all)? It works, but on this hardened, tailnet-only box it's a step down: the default tailnet policy runs it in "check" mode (a browser re-auth every ~12h, and it breaks Blink), reaching seamless mode needs a one-time ACL edit, it bypasses the box's key-only/no-root SSH hardening, and Mosh support is unreliable through it. SSH ID keeps the hardening, the second factor, and Mosh, for the same "tap and you're in" feel.
Staying connected. Mosh keeps the transport alive across lock screens an