command line

GPU Flow from your terminal.

One command for inference, your account, Sandboxes and dedicated GPU. It carries no dependencies: Node 18.3 or later is enough, and your data is still processed in the European Union.

get started

Install and check

One command to install. The doctor command validates your setup in seconds and exits non-zero when something is wrong, so it works the same in your terminal and inside a pipeline.

npm install -g @gpuflow/cli
gpuflow doctor

What doctor checks

The service and the catalogue, which are public; whether your API key is valid; whether you have a session open; and, with a session, your balance and your Sandboxes. Each mark is green, red or neutral: having no session is a valid state, not a failure. “All set” means inference is ready, not that you are logged in.

No dependencies

The tool installs no third-party packages: it uses Node's own built-ins. Node 18.3 or later is the whole requirement.

doctor and status are the same

The status command is an alias for doctor. Type whichever comes to mind.

configure

Your key and your session

There are two ways in and they are independent. The API key is for inference. Logging in is for your account, your Sandboxes and your disks.

terminal

gpuflow config set api-key sk-gpuflow-...
gpuflow login
gpuflow config show

Where it is stored

In the file ~/.gpuflow/config.json. On macOS and Linux it is mode 0600, yours only; on Windows it inherits your user profile's permissions. The CLI writes it atomically, so a failure mid-write never leaves you a half-written file.

HTTPS only

Service addresses must use HTTPS. The CLI rejects an http:// URL pointing at a real host, because your credentials would travel unencrypted; plain HTTP is allowed only against localhost, for development.

One login for everything

The same login unlocks your account and your infrastructure. It renews itself: when the access token expires, the CLI refreshes it and retries the call without you doing anything.

inference

Models and chat

The catalogue is public: you can see the models, their context and their price before signing up. To talk to one you need your API key.

terminal

gpuflow models
gpuflow chat "What is RDMA?"
gpuflow chat --model qwen-3.5-9b "Hello"
gpuflow chat --no-stream "Explain RDMA in one sentence"

The summary goes elsewhere

When it finishes, the chat command prints the model, the latency, the tokens and the estimated cost. That footer goes to stderr, not stdout, so you can redirect the answer to a file without the summary sneaking in.

Cost does not inflate latency

To estimate cost, the chat command reads the catalogue before starting the timer. That read does not count towards the latency it reports.

account

Balance, keys and usage

These commands need a prior gpuflow login.

terminal

gpuflow whoami
gpuflow balance
gpuflow usage --days 7
gpuflow keys list
gpuflow keys create ci-key
gpuflow keys revoke sk-gpuflow-xxxx

The key is shown once

The keys create command prints the full secret exactly once. Save it then: afterwards only the prefix can be retrieved. Revoking is irreversible and breaks everything using that key, so it asks for confirmation; in a script or without an interactive terminal, pass --yes.

Logging out does not remove the key

The logout command revokes the session and clears local tokens, but the API key stays in your config and keeps spending. To remove that too, set it back to empty with gpuflow config set api-key.

sandboxes

Create and run Sandboxes

A Sandbox is a cloud machine with processors, memory and a disk for your files. Every command here needs an open session.

The three sizes

The size fixes the processors, the memory and the default disk. They are the same ones you see on the Sandboxes page and in the dashboard wizard.

SizeProcessorsMemoryDisk
Starter48 GB10 GB
Pro832 GB50 GB
Team1664 GB100 GB

Three ways to create one

With flags, from a YAML manifest, or with the wizard. The wizard only opens when you pass no spec flags: if you pass one, the CLI errors instead of opening it, so it never provisions a machine you did not mean to create.

gpuflow sandbox create --plan starter --service opencode

How to refer to yours

By its full name, by the label you gave it, or by the unique tail of its name. If what you type matches more than one, the CLI stops and asks you to be specific rather than picking for you. You can see the names with gpuflow sandbox list.

Pause, resume and delete

Pausing scales it to zero and keeps the disk, but you lose whatever was in memory. On resume the machine is recreated and may land on a different node: the disk and the connection command do not change. Deleting destroys the Sandbox and keeps the disk. Both ask for confirmation, and the --yes flag skips it.

terminal

gpuflow sandbox list
gpuflow sandbox status my-box
gpuflow sandbox pause my-box
gpuflow sandbox resume my-box
gpuflow sandbox delete my-box --yes

Automatic pause

Pauses the Sandbox after N idle minutes, between 0 and 1440, or the value off to pause only by hand.

terminal

gpuflow sandbox auto-suspend my-box 30
gpuflow sandbox auto-suspend my-box off

Connecting

The CLI does not open the connection: it prints the command for you to copy. Since stdout carries only the command, you can also chain it. You need a registered key before connecting.

terminal

gpuflow sandbox ssh my-box
eval "$(gpuflow sandbox ssh my-box)"

What you have spent

The sandbox usage command breaks down the current billing cycle. A freshly created Sandbox may show 0.00 for the first few minutes: the current hour's estimate is a fraction of a cent until it has been up for a while.

terminal

gpuflow sandbox usage my-box

Two figures that do not add up

A Sandbox's spend and your inference balance come from different places and may be shown in different currencies. They are separate things: do not compare or add them.

disks and keys

Your files and your access

The disk is what makes your work outlive the machine. The SSH key is what lets you in.

The disk outlives the Sandbox

Deleting a Sandbox does not delete its disk: your files are still there and you can reuse it for the next one. It is created together with the Sandbox, so there is no separate command to create it. You cannot delete a disk that a Sandbox has mounted.

terminal

gpuflow storage list
gpuflow storage rm <id> --yes

Registering your key

The ssh-key add command with no arguments looks for ~/.ssh/id_ed25519.pub. You can also give it a path, read it from standard input, or pass the contents. The CLI checks whether it was already registered before sending it. If you have no key, create one with ssh-keygen -t ed25519.

terminal

gpuflow ssh-key add
gpuflow ssh-key list

Removing a key

Removals are handled from the dashboard: the CLI does not have a command for them yet.

dedicated gpu

See the offering and the capacity

GPU discovery is public: it works with no key and no session. You can check the offering and the free capacity before signing up.

terminal

gpuflow gpu list
gpuflow gpu availability

Capacity you can trust

The gpu availability command would rather withhold a figure than report a wrong one: when the numbers for a card type do not reconcile, it leaves it out and tells you which, instead of publishing a number it knows is off.

scripts and ci

Automating it

Everything above works inside a script. The --json flag is global and the exit code does the rest.

--json on any command

With the --json flag, the CLI emits a single JSON value on stdout, silences the decoration meant for humans and sends errors as JSON on stderr. The exit code is non-zero when something fails, so you can check the result without parsing the output.

terminal

gpuflow models --json | jq '.[0].pricing'
gpuflow chat --json "Hello" | jq '{model, cost_usd, latency_ms}'
gpuflow doctor --json | jq '.healthy'

Environment variables

They take precedence over the config file. The three service addresses can be overridden too, but that is for local development.

VariableWhat it is for
GPUFLOW_API_KEYYour API key for inference.
GPUFLOW_EMAILEmail, to log in without prompts.
GPUFLOW_PASSWORDPassword, to log in without prompts.
NO_COLORTurns off coloured output.

Non-interactive login

In a pipeline, GPUFLOW_EMAIL and GPUFLOW_PASSWORD together with --json keep the login prompt-free. Store them as pipeline secrets, never in the repository.

Your first command, today.

An account in a minute, no card, with 50 € of credit already loaded.