Skip to content

pilot v0.4.0

Latest

Choose a tag to compare

@vivek7405 vivek7405 released this 23 Sep 13:21

This release is about not being sent to a web page. Setting up push-to-deploy, running a team, minting a token and changing a plan could only be done in the dashboard, so an agent holding the CLI could get you a URL and then had to stop and tell you to go and click something. All of it works from the terminal now, and from the MCP toolset an agent drives. Upgrade with pilot upgrade, or npm install -g pilots@latest.

Added

  • pilot repo deploy acme/shop takes a repository to a URL with nothing checked out. It claims the repository for your team, opens the GitHub App install page and waits if the App is not on that account yet, creates the service, builds, releases, and wires push-to-deploy. One command, and the only thing you do is approve the GitHub screen.

    Connecting a repository could not be done from a terminal at all before this, by anyone without an admin key. The claim needed a service, creating a service from a repository needed a build, and a build needed the claim — a circle a normal key could not enter at any point.

  • pilot repo connect | disconnect | show | ls. connect writes both halves of push-to-deploy: your team's claim on the repository, and the service's branch. When the App is missing it opens the install page and waits, rather than printing a URL and asking you to run the command again — which was silent when you forgot, because the service looked wired up and no push ever arrived. ls shows the repositories you granted, so you pick one instead of remembering its exact name.

  • pilot org create | rename | delete | members | invite | remove | transfer | leave. Running a team from the terminal. Inviting a teammate carries no secret and needs no consent screen, and it needed a browser.

  • pilot key create | list | revoke, with --org to mint for a team you belong to. admin scope is still owner-only and still refused to anyone else, exactly as the consent screen refuses it.

  • pilot billing show | activate. A plan here is a set of limits the fleet holds your team to. When a payment provider is configured, activate opens its page and waits for the plan to actually move, rather than reporting success at a checkout you have not finished.

  • A repos tab in pilot tui, beside machines and services: which service deploys from which repository, and on which branch. It reads the same fleet snapshot the other two do, so the dashboard being unreachable cannot blank it — pilot tui talks to the fleet and nothing else.

  • Colour. States are green, amber or red the way the dashboard paints them, error: is red, and the next step is in the colour used for anything you are meant to type. It turns itself off when the output is not a terminal, under --json, under NO_COLOR and on a dumb terminal, so pilot machine ls | awk '{print $1}' is unchanged.

  • 22 new MCP tools for agents: repos, repo_claim, repo_connect, repo_disconnect, repo_deploy, teams, team_admin, keys, key_revoke, billing, billing_activate, service_set, domain_add, domain_remove, builders and more. An agent can now change a service, attach a domain and reset a builder, where before it could only read them.

    There is deliberately no tool that mints a token or sets a secret: the value would travel back through the conversation. Those stay commands you run.

Changed

  • pilot builder reset names a builder, not a host. It took a host id, which made you go and find the one identifier this product promises nothing about — a machine may be on a different host tomorrow. It now takes a builder id from pilot builder ls and finds the host itself. If you have this in a script, the argument changes.
  • pilot machine ls and pilot service ls show CREATED instead of ID. Every command takes a name and resolves it, so the id was a column nobody typed and everybody scrolled past; "3d ago" is the question you actually have in front of a list. Both fields are unchanged under --json, which is what a script reads.

Upgrading from 0.2.0 or 0.3.0, which pilot upgrade cannot do for you

If you are on 0.2.0 or 0.3.0, pilot upgrade will tell you no release has been published. It is wrong, and re-running it will not help. Those binaries ask GitHub about the repository the source used to live in, and that repository is now private, so GitHub answers "not found" and the CLI reports it as nothing having been published.

Install this one the way you first installed it, and pilot upgrade works from here on:

curl -fsSL https://pilots.run/install.sh | sh
# or
npm install -g pilots@latest

Fixed

  • pilot upgrade will not move you backwards. It compared the published version against yours for difference, not order, so a binary ahead of the latest release — a prerelease, or one you built — was replaced by an older one and told upgraded pilot v0.4.0 -> v0.3.0. It now installs only what is newer, and --force is the way to go back on purpose.
  • pilot claude no longer asks for a browser login every time it starts. #185
  • Installing and upgrading works without an account. The install script and pilot upgrade fetch from a public location again, so neither needs credentials. #193
  • The npm page no longer promises provenance it does not carry. #195
  • A CLI newer than its fleet's dashboard says so. A team or token command against an older dashboard answered "the dashboard answered 404 / try again", which sent people to report a version difference as a bug and to retry the one thing that cannot start working. It now names the dashboard as older than your pilot.

Known limits

  • Repositories owned by a GitHub organisation are not listed by pilot repo ls. They connect by name, and everything else about them works.
  • The team, token, plan and repository commands need the fleet's dashboard to be current. They are the one part of the CLI that talks to it rather than to a host; pilot deploy and everything else keep working when it is down.

Install, or upgrade an install the script made:

curl -fsSL https://pilots.run/install.sh | sh
pilot upgrade

From npm: npm install -g pilots@latest. Every way in is on https://pilots.run/install.