Skip to content

Install

You need:

  • A GitHub org owner, who creates and installs backmesh’s GitHub App in the browser during install.
  • The backmesh CLI. Each release ships one binary per platform, with no Node.js: darwin-arm64, darwin-x64, linux-x64 and linux-arm64. Check it against the release’s checksums.txt.
  • The anycloud CLI on your PATH, at the version the backmesh release notes pin. backmesh runs it for you; you don’t type anycloud commands yourself.
  • Docker, for the local installer API.
  • A signed-in cloud CLI for each cloud you pick: aws, gcloud or az.
  • anycloud’s GitHub sign-in: anycloud login, or GITHUB_TOKEN in the environment.

TODO(owner): name the public download location for the CLI. Release assets in the private backmesh repository can’t be downloaded by customers.

Pick one or more clouds, each with a region:

Terminal window
backmesh install --org acme --cloud aws:us-east-2 --cloud gcp:us-central1 --cloud azure:westus2

Install then:

  1. Checks your sign-ins and the anycloud version, and names any that’s missing.
  2. Starts anycloud’s local installer API in Docker and connects each cloud with a role from your cloud CLI session. No cloud keys are stored.
  3. Prints what each spot pool costs a month before any job runs, and asks before creating anything billed. Pass --yes to skip the question; without a terminal it’s required.
  4. Opens a page that creates a private GitHub App for your org. The org owner creates it, then clicks Install. See the security model for its permissions.
  5. Creates anycloud’s API on a management VM in the first cloud you named.
  6. Creates bm-control, a small VM that runs only the listener, and one spot pool per cloud, bm-<cloud>-spot.
  7. Starts the listener and prints the label to use, then runs backmesh status.
Done. Use `runs-on: backmesh-aws-4` in a workflow.

Running install again reuses what an earlier run created.

Install sizes each pool’s maximum from the cloud’s spot vCPU quota, 16 vCPUs per VM, and names the quota increase to request when it’s low. GCP’s default CPUS_ALL_REGIONS quota is 32 vCPUs, which holds a GCP pool to two VMs until you raise it.

Set runs-on to a label:

jobs:
test:
runs-on: backmesh-4
steps:
- uses: actions/checkout@v5
- run: make test

Only private repositories can use the runners.