aq

command module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

README

aq — Aquanode control CLI

DCO

aq is the command-line client for Aquanode. It runs on your laptop and talks to the Aquanode API to rent a GPU, provision it, and restore a snapshot — turning a multi-step GPU rental into a one-command deploy.

It is a thin orchestration wrapper over the Aquanode API and does not reimplement any of the box-side provisioning itself.

What Aquanode is: a GPU cloud where your environment survives. Stop a box and your packages, model weights, custom nodes and config are still there when you come back — on the same provider or a different one. If you have ever reinstalled the same ComfyUI custom nodes at the start of every session, that is the problem it exists for. Aquanode prices GPUs across many providers in one place, so aq up rents the cheapest box that matches what you asked for.

Docs: docs.aquanode.io · Live GPU pricing: aquanode.io/gpu-index

Capabilities

aq is a complete, production-ready CLI for managing Aquanode GPU deployments:

  • aq login — pair the CLI to your Aquanode account via device-login
  • aq up — rent the cheapest matching GPU, provision it, and bring up a working environment (ComfyUI, Jupyter, or custom snapshot) in one command
  • aq deploy — restore a snapshot onto a freshly-rented Aquanode GPU box
  • aq ssh [name] — get a shell on a box: managed keypair, managed ~/.ssh/config alias, zero setup
  • aq status <name|id> — check a deployment's status, provisioning state, HTTPS URL, and credentials
  • aq down <name|id> — tear down a deployment and stop billing
  • aq logout / aq whoami — manage authentication state

Install

curl -fsSL https://github.com/Aquanodeio/aq-releases/releases/latest/download/install.sh | sh

This downloads the right binary for your OS/arch from the latest GitHub Release, verifies its SHA-256 checksum, and installs aq to /usr/local/bin (or ~/.local/bin if that isn't writable). Then:

aq version   # confirm the install
aq login     # pair the CLI to your Aquanode account

Overrides: AQ_VERSION pins a release tag, AQ_BIN_DIR sets the install dir.

Or, with a Go toolchain (1.26+):

go install github.com/Aquanodeio/aq@latest

Quickstart — the one-command deploy

aq login                          # pair this CLI to your Aquanode account (device-login)
aq up --comfyui --name my-box     # rent a GPU, provision it, bring up a working env
# → HTTPS URL printed when it's ready
aq ssh my-box                     # get a shell on it
aq down my-box                    # tear it down and stop billing

aq does the renting and provisioning; snapshot/restore is a durable, standalone capability of the box itself, so your data outlives any single aq session.

SSH

aq ssh is the whole connect story — no key to create, no IP to copy, no id to remember:

aq ssh                            # your only live box — just connects
aq ssh my-box                     # by the --name you gave it (or by numeric id)
aq ssh my-box -- nvidia-smi       # run one command instead of opening a shell
aq ssh my-box -L 8888:localhost:8888   # forward a port
aq ssh my-box --print             # print the ssh command instead of running it

The alias is the point. aq maintains ~/.ssh/aquanode.config — one aq-<name> Host block per live box — and adds a single Include line to your own ~/.ssh/config. So everything that speaks ssh_config works with no aq involved:

ssh aq-my-box
scp big.safetensors aq-my-box:/workspace/
rsync -av ./data/ aq-my-box:/workspace/data/
code --remote ssh-remote+aq-my-box /workspace

What aq touches, and why:

Path Owner Notes
~/.ssh/aquanode_ed25519[.pub] aq Generated on first use only if you have no usable key. An existing ~/.ssh/id_ed25519 is preferred so your setup stays un-fragmented; AQ_SSH_KEY overrides both.
~/.ssh/aquanode.config aq Regenerated wholesale from your live deployments on every aq ssh / up / down. Don't edit it.
~/.ssh/aquanode_known_hosts aq Aquanode boxes only, so a recycled provider IP can never trigger a host-key warning against your infrastructure.
~/.ssh/config you aq adds exactly three lines, once, between # BEGIN aquanode / # END aquanode markers. Everything outside them is left byte for byte. Delete the block to opt out.

Two details worth knowing. The Include goes at the top of your config because ssh_config is first-match-wins per keyword — appended blocks lose to any earlier Host * stanza you already have. And because the platform does not publish box host keys, the generated stanzas use a dedicated known_hosts with StrictHostKeyChecking accept-new: no prompt on first connect, but a changed key on a later connect still fails loudly.

Build from source

go build ./...
go test ./...

Releases are cut by pushing a v* tag — .github/workflows/release.yml runs GoReleaser (.goreleaser.yml) to build the linux/darwin × amd64/arm64 binaries and publish the Release.

Our promise — no rug-pull

  • aq stays Apache-2.0. We won't relicense already-released code out from under you, and we won't move the CLI behind a paywall. The LICENSE file ships inside every release tarball alongside the binary.
  • BYO-bucket is forever. Snapshots taken via this flow go to a bucket you own; any hosted convenience is strictly additive and opt-in.

If we ever add paid services, they sit on top of these commitments, not in place of them.

Contributing

Contributions welcome — by DCO sign-off, not a CLA. Add a Signed-off-by line to each commit (git commit -s) to certify you wrote the change and can submit it under the project license. See CONTRIBUTING.md and the DCO.

License

Apache-2.0 © Aquanode and the aq contributors.

Documentation

Overview

Command aq is the Aquanode control / funnel CLI.

It runs on a developer's laptop and talks to the Aquanode API to rent GPUs, provision the ogre on-box agent, and restore snapshots. It is a thin orchestration wrapper over `ogre` (the OSS on-box agent) + the Aquanode API — it does not reimplement ogre.

Subcommands are built out by the funnel tickets. `login` (device-grant pairing) ships here; deploy / up follow. See research/action/02-console-dx.md in the meta-repo.

Directories

Path Synopsis
internal
api
Package api is a thin client for the Aquanode control API.
Package api is a thin client for the Aquanode control API.
config
Package config handles the on-disk `aq` credential store and endpoint resolution.
Package config handles the on-disk `aq` credential store and endpoint resolution.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL