← ClaudeAtlas

flysolid

Manage Fly.io machines, apps, volumes and app secrets through the Machines API. Use when the user asks what is running on Fly.io, or to start, stop, resize, move, redeploy or destroy a Fly machine.
intentic/intentic · ★ 46 · DevOps & Infrastructure · score 82
Install: claude install-skill intentic/intentic
# Fly.io (connected) Token in `$FLY_API_TOKEN`, organization slug in `$FLY_ORG`. Everything below is the Machines API at `https://api.machines.dev/v1`; flyctl is not installed here, and a copy you install yourself reads the plain name, so hand it the token per command: `FLY_API_TOKEN=$FLY_API_TOKEN fly status -a <APP>`. Define this helper once per shell: `flyapi <METHOD> <path> [-d '<json>']`: ```sh flyapi() { local m="$1" p="$2"; shift 2; curl -s -X "$m" -H "Authorization: Bearer $FLY_API_TOKEN" \ -H "Content-Type: application/json" "https://api.machines.dev/v1/$p" "$@"; } ``` The machine is the unit: an app is a namespace with its own private network, and scaling means creating or destroying machines inside one. A failure answers non-2xx with `{"error": "…"}`, so read `.error` rather than assuming the shape of the result: 404 is definitively gone, 401/403 is a token that never covered this, and an app-scoped token refuses org-wide calls outright instead of answering an empty list. ## Reading - What this token is: `flyapi GET tokens/current | jq -c '.tokens[] | {org_slug, apps, user}'` - Apps: `flyapi GET "apps?org_slug=$FLY_ORG" | jq -c '.apps[] | {name, status, machine_count, volume_count}'` - Every machine in the org, with the app it belongs to: `flyapi GET "orgs/$FLY_ORG/machines" | jq -c '.machines[] | {app_name, id, name, state, region}'`, page on with `?cursor=<next_cursor>` - Machines in one app: `flyapi GET apps/<APP>/machines | jq -c '.[] | {id, name, state,