Skip to main content
Install @ornncompute/cli to browse capacity, launch reserved compute, connect, and inspect health from a terminal. The installed command is ornn. To integrate without the CLI, call the REST API with an API key. CLI and REST equivalents lists the request behind each command.

Install

Use Node.js 20 or newer:
Or use the hosted installer:
The installer adds the npm global bin directory to your shell profile when needed. Restart the shell, then sign in.

Sign in and choose an organization

ornn login opens the Ornn browser device flow. On a remote terminal, print the URL without opening a browser:
The CLI stores the approved session in auth.json under ~/.config/ornn, readable only by you. Set ORNN_CONFIG_HOME to keep it somewhere else, for example a separate directory per CI job. A session ends when you run ornn logout or after 14 days without use. Ornn verifies current membership for every request. The CLI does not accept an API key from a flag or environment variable. For unattended automation, call the REST API with an API key instead. See CLI sign-in and API keys.

Get help and discover commands

Use these three commands to launch, connect, and check compute:
Start with bare ornn or scoped help:
Help is generated from the same command catalog the CLI executes. It shows the human form, explicit automation form, accepted references, review points, resumable states, and related next command. ornn resources lists these command groups:
Use canonical IDs whenever possible. Every advertised exact, unique machine hostname works in human, JSON, and NDJSON output; the CLI resolves it to a canonical API request. Named resources are accepted only where scoped help lists them. The CLI never runs a fuzzy or first-result match.

Trade capacity

For listings with selectable terms and durations, make your offer in Reserve. CLI and MCP offer creation do not yet accept those selections.
capacity-offers list and show return capacity and availability, including capacityListingId. Pass that ID to ornn capacity-offers terms --listing-id ID to read the advertised prices and duration choices separately. Each choice has a listingTermsId; a listing can have multiple choices. List pages accept --limit from 1 to 100 and an opaque --cursor from the previous response. spot places and cancels bids on the Spot order books. schedules lists Reserve (--listing-kind primary) and Market (--listing-kind secondary) listings; sold windows are removed. offers post, accept, and cancel offers on Reserve listings. schedules buy buys a window of a Market listing at its current asking price, paid up front. capacity-offers relist publishes capacity from a reservation with explicit financial terms; delist removes it from sale. Price editing is staff-only. Prices are integer micro-USD per GPU-hour (2500000 is $2.50), already include Ornn’s fees, and match the web console; times are RFC 3339. Every bid, offer, purchase, and relist asks for review first; add --yes in automation. Saving a card and paying invoices use the web app. See Spot, Reserve, the Market, and Relist capacity.

Reservations and invoices

Launch compute

ornn launch [<reservation>] --mode vm|bare-metal|kubernetes|slurm [--key <ssh-key>] launches one reviewed VM, Bare Metal machine, Kubernetes cluster, or Slurm cluster from active reserved capacity. Kubernetes and Slurm prompt for a missing --network public|private and --nodes <count>. Bare Metal can add --network shared --volume <managed-volume> --mount-access read-only|read-write for a durable workspace. Launch uses active reserved capacity. In automation, VM, Bare Metal, and Slurm require --key <canonical-key-id>. Kubernetes and Slurm automation require one canonical organization, exact machine IDs in --machines matching --nodes, explicit --yes, and a stable idempotency key before any API request. --vms adds running VMs as workers, by canonical VM ID; --nodes 0 launches a cluster of VMs only. A VM’s SSH keys are set aside while it is in the cluster. Both modes recheck the organization and eligible machines immediately after review and fail closed if either changed. When a human composes a durable Bare Metal workspace with a private network and managed volume, the CLI generates and stores its recovery identity locally before the first mutation. An interrupted run prints ornn launch --mode bare-metal --resume; no workflow ID needs to be copied. Automation continues to supply its own stable --idempotency-key or --resume ID.

Connect

ornn connect [<hostname-or-machine-id-or-cluster-id-or-reservation-id>] accepts --identity-file <path>, --user <login>, --output <path>, --print, and --overwrite. VM and Bare Metal use SSH. A direct connect announces the native command before opening it. Bare ornn connect discovers all current VM, Bare Metal, Kubernetes, and Slurm targets, then lets you choose among the combined set. Add --print to display a usable direct SSH command without executing it. For Kubernetes connection setup, follow Kubernetes access. Slurm uses SSH and native Slurm tools. Secret bytes are available only through an explicit export; raw --print cannot be combined with an explicit --format.

Check health, metrics, and logs

check combines lifecycle, health, reachability, metrics, and logs without hiding source failures, and human output includes returned metric/log samples.

Manage VM and Bare Metal machines

<machine> is a canonical machine ID or an exact hostname.

Manage Kubernetes and Slurm clusters

Launch clusters with ornn launch and get access with ornn connect.

Manage SSH keys

Assignment and delivery are separate. A queued key is not installed. See Manage SSH keys.

Private networks and VPN connections

Private networking belongs to the selected organization. Durable Bare Metal workspaces use --network shared with a managed volume. Per-reservation network attachment commands have been removed.

Storage

Storage list pages

Ornn CLI 1.0.22 and later request storage lists one page at a time. ornn volumes list and ornn external-buckets list accept --limit 1 through --limit 100 (default 25), ordered by last updated. Pass the returned page.next_cursor to --cursor for the next page; null means the end. Refresh from the first page after changes. Older CLI versions receive an upgrade error for storage lists. File-list pagination is unchanged.

Retry uploads and refresh usage

CLI 1.0.28 supports retrying a file upload with the same --idempotency-key and unchanged volume, remote path, file bytes, and content type. After the matching server update, a completed retry returns the original upload ID without sending bytes again. Use a new key for a different request or an expired incomplete upload. Overwriting a file replaces its contribution to volume usage. Run ornn volumes refresh <volume> to reconcile usage with the stored files.

GCS imports and Storage Transfer Service

CLI 1.x can connect a GCS bucket, but imports are currently blocked because GCS source verification is unavailable. Contact Ornn support to arrange an import. Include your source bucket name and region, destination reservation ID, and the files or prefix you need. Confirm the transfer cost, destination storage, and access permissions before starting. Ornn copies the source data into destination storage. Editing imported files does not update the originals in GCS. Your bucket administrator may need to grant read access; confirm the current transfer identity with Ornn before changing bucket permissions. Never share an access key or service-account private key. Wait for copying and mounting to finish, then check files from your workload. An accepted request does not mean the import is complete. Before replacing an existing attachment, export important data and confirm how to restore access. See storage pricing and the access guide for your mode.
CLI 0.2.x storage commands in historical release notes do not work in CLI 1.x. Use ornn help for the installed version’s commands.

Human and automation modes

In a terminal, commands default to human output. They may guide safe selection, show one final review, and ask default-no [y/N] consent. Pressing Enter, reaching EOF, or declining sends no mutation. Redirected and automated commands require an explicit format:
The shared modifiers are --format human|json|ndjson, --guided, --yes, --wait, --no-wait, --timeout, --no-browser, --overwrite, and --idempotency-key. The old --json flag is not an alias; use --format json. Machine mode never prompts, launches a browser, or guesses a missing choice. Unsafe or incomplete input fails before any request. Mutations that create or increase spend, erase data, tear down a resource, or reduce access require explicit consent and a caller-stable idempotency key. Lists use bounded --limit and opaque --cursor values. Waits poll only transitional states, honor your timeout and cancellation, and report the last observed state on timeout. Use --no-wait to stop at the first durable state.

Read machine output

JSON and NDJSON use schema ornn.cli/v1:
NDJSON emits progress records followed by exactly one terminal result or error.

CLI and REST equivalents

Each command below maps to the REST request that does the same job with an API key. Paths are relative to https://api.ornn.com. Where a command composes several requests, the table lists each one. CLI-only flows have no documented REST route yet; use the CLI for those. The CLI adds review prompts, waits, and name resolution on top of these requests. Over REST, poll the read endpoints yourself and pass canonical IDs. See conventions for errors, pagination, and idempotency.

Session and platform

Capacity: Spot, Reserve, Market, and Relist

Reservations and billing

VM and Bare Metal machines

SSH keys

Kubernetes and Slurm clusters

Private networks and VPN connections

Storage

Monitoring

Migrating to vNext

The current major is a clean cutover. A retired command does not execute. It exits before making a request and prints one exact replacement plus the migration URL. The new contract also uses deadline-bound waits, semantic default-no consent, bounded cursor pagination, versioned machine envelopes, and semantic exit statuses. @ornncompute/cli 1.x uses the existing ornn command and requires Node 20 or newer. Install the latest published release with npm install -g @ornncompute/cli@latest. Publication does not wait for the legacy support schedule, which starts at 2026-10-05T00:00:00Z. 0.2.10 remains the configured previous release for rollback. ornn update updates within the installed major. Review this guide, then use ornn update --major to acknowledge the major crossing. Through day 90, you can roll back to the final previous release:
The new and previous releases reuse valid auth.json, config.json, endpoint settings, and update cache. Updating or rolling back does not rewrite your bearer. Rollback is unsupported at 2027-01-04T00:00:00Z (day 91). Legacy calls then return an upgrade-only 426 response through day 180. The retired routes are absent at 2027-04-04T00:00:00Z (day 181). Use ornn --version or ornn -v for the semantic version. ornn version also shows the machine schema and update channel.