Fleetwright

Your Claude Code sessions, on your own machines, from your phone.

You run the machines. Fleetwright gives you a list of what is running on them, tells you when something is waiting on you, and lets you answer it without finding a laptop.

What you need

A machine you ownA Linux box, a spare laptop, a VM. It dials out — nothing is aimed at it, and it needs no open port.
Your own Claude accountSessions run as whoever starts them. Nobody borrows anybody else's.
The appiPhone or Android. Sign in with Apple or Google.

What it does

Fleetwright does not write a session's instructions. You start one on a task — a file on the machine that runs it, chosen by name — and it comes up already working. Pick no task and it waits for you instead, and says so. Either way, what a session is told to do is decided on the machine, not by anything in between.

What it does not do

Getting started

The install is one command on the machine, and the setup is ten steps end to end. Both are in the repository, which is where they stay current:

How finished is it

Honestly: in beta, and the repository says which parts are proven and how that was established — including the ones that are not. That table is kept in one place on purpose, because four documents quietly disagreeing about it is a mistake this project has already made once.

Run your own coordinator

The coordinator is a Cloudflare Worker. It is the only piece that is not on your own hardware, and you deploy it to your own account — there is no tenancy of ours to be in.

Deploy to Cloudflare Workers

One thing to check in the dialog that opens: the deploy command should be npm run deploy. The Worker lives in worker/ of a repository that also holds everything that runs on your machines, so an offer to configure the project automatically has looked at the wrong directory and will configure the wrong thing — that command is the repository saying which thing is the Worker. The repository the button makes is yours — updates reach it when you merge ours in and push, and the deploy page says how. Prefer a terminal? The same page is five commands from clone to a coordinator answering on a URL, with no copy to maintain.

The dialog asks up front for two values — a break-glass admin token, and who may sign in. A coordinator that comes up with no way for anybody to authenticate refuses every request and says so, naming both remedies; the dialog's questions are how a button deploy starts life past that state. The rest of the deploy is DNS and four secrets.

Sign-in still works with the apps from the stores — you need no Apple or Google setup of your own for it. What you cannot self-host is push: a notification is addressed to one specific app, so waking these apps needs our credentials. Your fleet works without it, and says so. A relay that delivers notifications for coordinators that are not ours is planned, and its terms are written down already — nothing about a notification is kept, and the only stored state is a rate-limit counter.