Command Reference
Every aq command: auth, deploy & connect, save/share/fork, setup lifecycle, idle policy, and endpoints.
This page covers all 24 aq commands. If you just want the fastest path to a
running box, start with the Quickstart instead — come
back here for the rest of the surface.
All commands
| Command | What it does |
|---|---|
login | Pair this CLI to your Aquanode account (device login) |
up | Rent the cheapest matching GPU and bring up a working setup |
deploy | Restore a save onto a freshly-rented Aquanode GPU box |
import | Bring a box you rent elsewhere in as an Aquanode setup |
ssh | Open a shell on a setup (managed key + ~/.ssh/config alias) |
status | Show a setup's status, HTTPS URL, and credentials |
save | Save a setup's current state into its named lineage |
share | Get a link to one saved version of a setup |
fork | Turn a share link into a new setup in your own library |
edit-version | Edit a saved version's label, description, or visibility |
pause | Save a setup, then release its machine (resume later with up) |
autopause | Turn a setup's stop-when-idle preference on or off |
force-detach | Break a setup's lease even mid-sync (can lose unsynced work) |
sync-now | Force a setup's sync tick right now |
setups | List the setups you own |
idle | View or change a deployment's auto-pause thresholds |
endpoint | Make a setup version callable, repoint it, or remove it |
call | Make a call against an endpoint |
calls | List an endpoint's recent calls |
down | Tear down a setup (stop the rented GPU box) |
logout | Remove the stored CLI credential |
whoami | Show the current login state |
version | Print the aq version |
help | Show the built-in help |
Every command also accepts -h/--help for its own flag list.
Authentication
login
aq loginDevice-pairing flow: prints a URL and a confirmation code, optionally opens your browser to it, and waits for you to approve the pairing in the console. See the Quickstart for a full example.
logout
aq logoutRemoves the stored CLI credential from your machine.
whoami
aq whoamiShows the current login state.
version
aq versionPrints the installed aq version.
help
aq helpShows the built-in command list.
Deploy & connect
up
aq up [flags]Rents the cheapest matching GPU and brings up a working setup. See Quickstart for a walkthrough.
| Flag | Meaning |
|---|---|
--gpu <model> | Filter to a GPU model (substring, e.g. "RTX 4090") |
--max-price <n> | Only rent GPUs at or below this hourly price |
--provider <name> | Restrict to a single provider (e.g. massecompute) |
--show-secrets | Echo the service password to stdout (hidden by default) |
--auto-pause | Enable auto-pause on this deployment (off by default) |
--warn-after <duration> | With --auto-pause: warn after this much idle time |
--pause-after <duration> | With --auto-pause: auto-pause after this much idle time |
--comfyui | Install ComfyUI |
--jupyter | Install Torch + Jupyter instead |
ComfyUI is the default app
Pick neither --comfyui nor --jupyter and aq up installs ComfyUI. There
is currently no generic, app-free box from aq up — you always get one of the
two templates.
deploy
aq deploy --snapshot <id> [flags]Rents a fresh GPU and restores a save onto it — moving an environment to a different (or cheaper) box, optionally on a different provider than the one it came from.
| Flag | Meaning |
|---|---|
--snapshot <id> | The save to deploy (an id from aq or the console, e.g. ext-42) |
--gpu <model> | Filter to a GPU model (substring, e.g. "RTX 4090") |
--max-price <n> | Only rent GPUs at or below this hourly price |
--provider <name> | Restrict to a single provider (e.g. massecompute) |
--show-secrets | Echo the service password to stdout (hidden by default) |
--comfyui | Relaunch ComfyUI on the restored data |
--jupyter | Relaunch Torch + Jupyter on the restored data instead |
--no-app | Restore only — do not relaunch an app |
--comfyui is the default if you pass neither app flag; pass --no-app for a
restore with no app relaunched.
import
aq import [flags]
aq import --resume <setup-id>Run this ON a GPU box you rent somewhere else. It surveys the box, shows you exactly what it will and will not capture, and — once you agree — captures the environment into a new Aquanode setup you can launch on any provider we support. See aq import for the full walkthrough.
| Flag | Meaning |
|---|---|
--dry-run | Survey and print the plan; capture nothing, upload nothing |
--include <path> | Add a path to the capture set (repeatable) |
--exclude <path> | Drop a detected path from the capture set (repeatable) |
--name <name> | Name the resulting setup (default: derived from the hostname) |
--yes | Skip the confirmation prompt |
--resume <id> | Continue an interrupted import into the setup it already created |
--launch | After importing, rent a box and restore onto it (billable) |
--gpu <model> | With --launch: GPU model to rent (default: the one observed) |
--max-price <n> | With --launch: only rent at or below this hourly price |
--provider <name> | With --launch: restrict to a single provider |
The survey prints three groups: what is being captured, what is being skipped
(with sizes, so you can add it with --include), and what could not be read at
all. The third group matters most — a directory listed there is not in the
capture, and the usual fix is to re-run under sudo. Directories below a size
floor are not listed individually; the survey says so when it applies one.
A non-interactive shell without --yes refuses rather than guessing. Package
manifests (dpkg/rpm/pip) are recorded for reference and are never
replayed on restore.
ssh
aq ssh # your only live deployment
aq ssh <name|id> # a deployment by --name or id
aq ssh <name> -- <cmd…> # run a command instead of opening a shell| Flag | Meaning |
|---|---|
--print | Print the ssh command that would run, and exit |
-L <spec> | Forward a local port, e.g. 8888:localhost:8888 (repeatable) |
--user <name> | Override the login user (default: root) |
aq manages ~/.ssh/aquanode.config (included from your ~/.ssh/config)
with one aq-<name> alias per live box, so ssh, scp, rsync, and VSCode
Remote-SSH all work with that alias with no aq involved. If you have no SSH
key at all, aq generates a passphrase-less one at
~/.ssh/aquanode_ed25519. See the
Quickstart for more examples.
status
aq status <name|id>Re-checks a provisioning or running setup: state, HTTPS URL, and credentials
(add --show-secrets to print the password).
down
aq down <name|id> [--save]Tears the setup down and stops billing. --save saves first; termination is
skipped if the save fails.
Save, share & fork
Renamed from aq snapshot
This used to be aq snapshot. The verb is now aq save — there is no aq snapshot command or alias.
save
aq save <name|id> [--name <lineage>] [--path <dir>]Saves the setup's current state into its named save lineage. The first save on a setup asks for a lineage name once (Enter accepts the default, which is the setup's own name; a non-interactive shell just uses the default). Every later save reuses that lineage silently and increments its version (v1, v2, v3, ...).
share
aq share <name|id> <ver>Prints a link to one immutable saved version, e.g. aq share comfyui 3. The
link always points at that exact version, never at whatever the lineage's
head becomes later.
fork
aq fork <token|link> [--name <name>]Turns a link from aq share — someone else's, or your own team's share of a
team you've since left — into a brand new setup in your own library.
Registers ownership only; it does not itself boot any hardware. --name
defaults to a name derived from the source.
edit-version
aq edit-version <name|id> <ver> [--label <text>] [--description <text>] [--visibility private|team|public]Edits a saved version's label, description, and/or visibility. Only the flags you pass change; there is currently no way to clear a label/description back to empty.
Setup lifecycle
pause
aq pause <name|id>Saves the setup, then releases its machine. Pick it back up any time with
aq up.
autopause
aq autopause <name|id> on|offTurns this setup's stop-when-idle preference on or off, using the platform's
default idle thresholds. This is not the same as idle: idle policy
is a per-deployment threshold config that always outranks this, and
autopause carries no thresholds of its own — use aq idle set to change
when idle counts as idle, and autopause to turn stopping on setups on/off
at all.
force-detach
aq force-detach <name|id> --yesBreaks the setup's lease even mid-sync — for when a deployment died holding
it and it needs freeing before anything else can attach. --yes acknowledges
work since the last completed sync may be lost; there is no silent form of
this command.
sync-now
aq sync-now <name|id>Forces a sync tick right now instead of waiting for the setup's own schedule
— e.g. right before aq share/aq fork so the link reflects your latest
work. Requires the setup to be attached to a running deployment.
setups
aq setupsLists the setups you own: name, whether it's running, latest saved version, and size.
Idle policy
idle
A per-deployment auto-pause policy (warn/stop thresholds, GPU idle
%). It always outranks a setup's own aq autopause preference above.
aq idle status <name|id> # show the policy and its current live verdict
# (ACTIVE / IDLE / UNKNOWN)
aq idle set <name|id> # update the policy — only the flags you pass change| Flag | Meaning |
|---|---|
--warn-after <duration> | Warn after this much idle time, e.g. 30m, 1h |
--pause-after <duration> | Auto-pause after this much idle time, e.g. 1h |
--gpu-threshold <percent> | GPU utilization below which the box counts idle |
--on / --off | Enable / disable auto-pause |
See also Auto-pause for how this behaves across the console and API.
Endpoints
endpoint
aq endpoint create <setup> <version> --max-instances <n> --spend-cap-cents <n> [--name <name>]
aq endpoint point <name> <version>
aq endpoint rm <name>create makes a setup version callable. --max-instances and
--spend-cap-cents are required — an endpoint hands out a GPU budget, so
neither ever defaults to unbounded. --name defaults to the setup's own
name.
point repoints an endpoint at a different version in its lineage — also how
you roll back.
rm removes an endpoint.
call
aq call <endpoint> [--input file]Makes a call against an endpoint and prints its call id. --input is a JSON
file of the declared params; with no --input, the call is made with no
inputs.
calls
aq calls <endpoint>Lists an endpoint's recent calls: id, status, phase, and reason.
"unservable" means Aquanode could not get the call a box at all — not that
the call's own code failed.
Environment variables
| Variable | Meaning |
|---|---|
AQ_API_URL | Aquanode API base (default https://server.aquanode.io/api/v1) |
AQ_CONSOLE_URL | Aquanode console base aq share links point at (default https://console.aquanode.io) |
AQ_CONFIG_DIR | Credential directory (default <user-config-dir>/aq) |
AQ_SSH_KEY | Private key to use for box access (default: your ~/.ssh key, else aq's managed ~/.ssh/aquanode_ed25519) |
AQ_NO_BROWSER | Set to skip auto-opening the approval URL |
aq import
Capture a box you rent elsewhere - RunPod, Vast, your own hardware - into a portable Aquanode setup.
Supported GPU Providers
Aquanode integrates multiple providers to ensure reliable, cost-efficient, and flexible GPU compute. Provider selection is handled automatically based on availability, pricing, and performance requirements.