Tooling
Recipe CLI
Install
pipx install 'git+https://git.fedesito.me/fedes1to/airigs-cli.git'
# optional GPU measurements (TFLOPS, memory bandwidth, P2P):
pipx inject airigs torch
# or from a clone:
git clone https://git.fedesito.me/fedes1to/airigs-cli.git
cd airigs-cli && pip install -e '.[gpu]'
Python 3.11+. The CLI is a separate repository and does not need this site's source tree.
Point it at this instance
export AIRIGS_URL="https://airigs.net"
export RECIPES_URL="https://recipes.airigs.net"
airigs login
airigs doctor
Configuration is also stored in ~/.config/airigs/config.json (mode 0600).
The whole loop
-
Log in. A browser opens for the AIRigs device flow. On a headless host, pipe a token on stdin; a token on argv is refused on purpose.
airigs login printf '%s' "$AIRIGS_TOKEN" | airigs login --token - -
Measure the machine. Missing sensors produce
nullplus a note; nothing is fabricated.airigs bench --output bench.json airigs bench --quick # CI-sized iteration counts -
Submit and verify the rig. AIRigs issues a single-use benchmark challenge;
rig submitmeasures, uploads and fails loudly unless the server returnsverified:true.airigs rig submit --name "workstation" airigs rig submit --name "workstation" --benchmark bench.json airigs rig list -
Create and validate a recipe pinned to a verified rig.
airigs recipe init --name "70B on 2×4090" airigs recipe validate airigs recipe submit # draft; --publish does the publish checks -
Benchmark the running endpoint and publish. The recipe benchmark is measured against the OpenAI-compatible server the recipe launches.
airigs recipe bench my-recipe \ --endpoint http://localhost:8000/v1 \ --engine vllm --context 8192 --concurrency 4 --requests 16 \ --model meta-llama/Llama-3.1-8B --publishThe server stamps the current verified
rigRevisionwhen the benchmark is attached; publishing is refused if the rig has moved to another revision. The result is a checked, self-reported claim, not an independent measurement. AIRigs'verifiedflag reflects its own checks of the rig benchmark; neither service measures the machine for you. -
Fetch and run the launch script. The CLI prints the script before running it. Running it requires
--yes(orAIRIGS_YES=1) when stdin is not a TTY; unverified custom commands also require that gate.airigs recipe script my-recipe --out run.sh airigs recipe run my-recipe --yes -- --port 8000
For agents and CI
--jsonworks before or after the subcommand. Errors go to stderr as{"error": "...", "status": 422}and exit non-zero.- Exit codes:
1general,3auth/forbidden,4not found/conflict,5validation,6rate limit. - Non-interactive:
--yesfor deletes andrecipe run;AIRIGS_TOKEN/RECIPES_TOKENfor auth;AIRIGS_YES=1as the non-TTY confirmation gate;--no-browserfor login. airigs --self-check --jsonreturns{ok, uploadable, schemaProblems, missingRequired, benchmark}.--verboselogs HTTP requests with tokens redacted. Tokens are bound to their issuer origin; changing the issuer URL requires a fresh login.
Agents can skip the CLI and use /llms.txt plus openapi.json
against https://recipes.airigs.net/api/v1.
curl -H "Authorization: Bearer $RECIPES_TOKEN" \
https://recipes.airigs.net/api/v1/me
Other commands
airigs whoami
airigs rig show r_abc123 # id or name
airigs rig delete r_abc123 --yes
airigs recipe bench ./recipe.json --endpoint http://localhost:8000
airigs logout # revokes the refresh token, clears local state
Full command reference and source: https://git.fedesito.me/fedes1to/airigs-cli.