// book 24
patriola.com

Book 24 · Patriola’s Guide to Claude

One Button Claude


Three machines, three separate setups, and starting work on any of them means being in front of it. This book builds the remote-control layer that connects every machine in a Claude workflow into one reachable system — triggered from a phone, from anywhere.

Buy Kindle

Patriola's Guide to Claude — One Button Claude: Build a Remote Trigger That Reaches Any Machine Anywhere
What this book is

The remote-control layer for a multi-machine Claude fleet

You built the GPU desktop for heavy Claude jobs. You wrote the deploy scripts that push to your web host. You have a Claude session open on the laptop. Three machines, three separate setups, and starting work on any of them means being in front of it — or at least at a keyboard, connected, navigating. One Button Claude is about eliminating that friction entirely.

The core design is an allow-list launcher: a Python script that lives on a remote machine, accepts a job name over SSH, maps it to a fixed tmux command, and refuses to run anything not on the list. Your phone sends a name; it never composes a command. That discipline — a button that can only ever do what you defined in advance — is what makes a home-screen shortcut safe to press from a parking lot. The infrastructure beneath the button is a Tailscale private network and a device-specific SSH key for the phone — the same two pieces that let the tailnet follow your devices across networks without exposing any public port.

What you’ll learn

Ten chapters from allow-list launcher to three-machine pipeline

  • the-allow-list-launcher — A Python script that accepts a job name over SSH, looks it up in a local allow list, maps it to a tmux command, and refuses to run anything not on the list. The data structure for the allow list, the SSH invocation pattern, and why a name-to-command mapping is the entire security model.
  • status-and-stop — Adding status and stop as first-class operations alongside start: three SSH calls that each return one line of text. The tmux session naming convention that makes status checks and stop signals reliable across reboots and reconnects.
  • ssh-keys-and-the-tailnet — Setting up a Tailscale private network so the launcher is reachable from any network without a public port, and generating a device-specific SSH key for the phone so the launcher can authorize it without sharing credentials with anything else.
  • the-phone-button — Wiring the SSH call to a phone home-screen shortcut: the iOS Shortcuts action or Android equivalent that sends a job name to the launcher and surfaces the one-line response as a notification. The button that is safe to press from a parking lot.
  • cross-machine-triggers — A dispatch script on the laptop that fires named jobs on any machine in the fleet over the tailnet. The config format that maps machine names to tailnet addresses, and the dispatch call that starts a job on the GPU box without opening a separate SSH session.
  • provisioning-a-new-machine — A provisioning script that installs the launcher, registers the allow list, sets up the SSH authorized-keys entry for the phone, and joins the tailnet on a fresh machine in one run. The checklist that confirms the machine is trigger-ready before the provisioning script exits.
  • the-sons-pc-pattern — Running the same allow-list launcher on a Windows PC as a PowerShell script with a desktop notification as its job. The generalization to machines you don’t fully control: minimal footprint, no persistent service, triggered the same way as the rest of the fleet.
  • notifications-and-the-finish-signal — Adding a finish-signal step to long-running jobs: a curl call at the end of the tmux command that posts a notification to the phone when the job completes. The notification payload format, the receiver endpoint, and how to distinguish job-finished from job-failed in the notification text.
  • claude-as-the-remote-job — Configuring a Claude Code session as a named job in the allow list: the tmux command that starts claude with a specific project and prompt, the status check that shows whether the session is waiting for input or running, and the stop signal that exits cleanly.
  • three-machines-one-sequence — Chaining the laptop, GPU box, and web host into a single phone-triggered sequence: start preprocessing on the laptop, dispatch training to the GPU box when preprocessing finishes, deploy results to the web host when training finishes, receive a notification when the full sequence is done.
From the book

A preview

A button that can compose arbitrary commands is a remote shell. A button that can only call names on a list is a trigger. The allow-list is the entire security model — keep it short, keep it explicit, and the button is safe to press from anywhere.
You — not at home I need to start the voice cloning training job on the GPU box but I’m not home.
Claude Run: ssh gpu-box launcher.py start voice-train. The launcher checks the allow list, finds voice-train, and starts the job in a tmux session. You’ll get one line back: the session name and PID. To check status later: ssh gpu-box launcher.py status voice-train. When it finishes, the finish-signal script sends a notification to your phone.
The tailnet is invisible infrastructure. You press the button on your phone in a parking lot. The SSH connection resolves the machine name, crosses the tailnet, reaches the launcher, and returns one line. None of that requires a public port, a VPN login, or you being at a keyboard.
Who it’s for

Claude Code users who run multi-machine workflows

This book is for Claude Code users who run work across a laptop, a GPU desktop, and a web host, and want to trigger any of them from anywhere. The book assumes comfort with SSH and the CLI. It is not an introduction to networking — it is the discipline layer for the infrastructure you already have: an allow-list that means the button can only do what you already defined, and a tailnet that means it works from anywhere without a public port.

A longer excerpt is available to newsletter subscribers.

Buy Kindle

Stay current

New books in this series

One short email per book launch.