Skip to content
pilots
Dashboard
All pages

The Claude Code plugin

Claude Code gains the platform: create a machine, run something in it, checkpoint before the risky step, put a directory on a URL. The fleet serves the tools, so there is nothing to run on your side.

Install

/plugin marketplace add pilotsrun/pilots-claude-plugin
/plugin install pilots@pilots

The repository is its own marketplace, so those are the only two lines. /pilots:status afterwards says whether it reached the fleet and as whom.

/pilots:status

What it adds

What it is
The toolset Machines, exec, logs, metrics, checkpoints and forks, deploy, promote, releases and rollback, domains, volumes, databases, grants. Served over HTTP by every host.
The skill The pilots skill, which Claude loads itself when the task is about pilots. It is the same text the CLI and the fleet serve, so no surface disagrees.
Two you invoke /pilots:status for what the plugin can reach, and /pilots:smoke for an end-to-end check of the fleet.
The guard A hook that stops and asks before a call that cannot be taken back.

What it asks before

Three calls destroy something: destroy_machine, restore and rollback. The guard puts each one in front of you before it runs, rather than after.

It also catches the exec that should have been checkpointed first -- a migration, a package upgrade, a recursive delete -- because a checkpoint taken a second earlier is the difference between undoing that and rebuilding the machine.

Where its credential comes from

The plugin carries none. It reads the key pilot login filed in ~/.config/pilots/credentials, and only when that file is for the fleet being dialled.

pilot login

With nothing filed it sends no credential at all, which is what lets the fleet's refusal start a browser login from /mcp: you approve it on the dashboard's consent screen, and what comes back is an ordinary pilots token that the tokens page can revoke.

  • It does not read PILOT_API_KEY. Claude Code hides credential-shaped variables from a plugin, so a static header would be the one thing that cannot work. Headless, file the key first.
  • PILOT_API_URL points it at another fleet instead of api.pilotrun.app.
pilot login --token <key>

In a repository

pilot init copies the skill into the checkout's .agents/skills/pilots/ and registers the server there, so any agent that opens that repository finds both without installing anything.

pilot init

What a machine may do covers what an agent inside a machine is allowed to reach, and the agents page makes the case for the whole shape.