When to use Bare Metal
- Your workload is sensitive to virtualization overhead.
- You need direct control over driver versions or kernel modules.
- You’re running performance benchmarks or distributed training that benefits from bare physical networking.
- You want to manage the full software stack yourself.
For most ML training and inference workloads, VM access is the simpler
choice. Bare Metal is best when you need full hardware control.
Prerequisites
Before you can launch or switch to Bare Metal on a reservation:- You must hold a Confirmed or Active reservation from an accepted Reserve offer on a Bare Metal listing, visible in Nodes. Spot and relisted capacity are VM only.
- You must have at least one active SSH public key registered on your account. Bare Metal does not use a VM disk, so the SSH key is the only credential pushed to the host.
Set up Bare Metal access
1
Open the reservation detail page
From Nodes (
/portfolio), click View on the reservation you want to configure. The detail page opens at /portfolio/[reservationId]. Access mode and state are managed here. The legacy /portfolio/access URL redirects to this page.2
Select Bare Metal
Pick Bare Metal as the access mode. Bare Metal does not require a disk selection; you manage the OS and software stack directly. Refreshing node status or syncing SSH keys keeps your Bare Metal access mode and does not display a VM disk selector.
3
Add an SSH key and launch
In the SSH Keys section, use Add Key to add or confirm an SSH key on the reservation, then launch. Ornn pushes the active reservation keys to the host as part of the launch step.
4
Connect via SSH
Once the host is ready, the SSH Host and User fields (plus a ready-to-run Quick Connect command) appear in the Connect section. Copy that command, including its port:
VM and Bare Metal can’t run on the same reservation at the same time. Switching modes after launch
tears down the existing environment; anything not persisted off the host will be lost.
GPU metrics
View GPU metrics in the reservation Observability tab or withornn check. Ornn’s agent collects these readings locally on the host.
Push additional keys
To add another key to an already-launched Bare Metal reservation, open the reservation’s SSH Keys section and use Add Key. Ornn queues the new key for every active machine in that grouped reservation. From the CLI, add the key directly to the reservation:Reboot and Hard reset
Bare Metal hosts stay live for the reservation term. Use Reboot or Hard reset from the reservation detail page when you need to recover from a stuck workload without giving up the reservation:- Reboot cycles the operating system on the host. Your Linux user, home directory, authorized SSH keys, and any attached Ornn storage volumes stay in place. Ornn re-mounts volumes and reconnects the agent automatically.
- Hard reset wipes tenant data on the host (Linux user, home directory, authorized keys,
/tmp,/var/tmp,/dev/shmresidue) and then reboots. Once the host is back, Ornn re-pushes the reservation’s active SSH keys, so you can reconnect once provisioning finishes. Use it to return the host to a clean state without releasing the reservation.
CLI equivalents
From an interactive terminal, the Ornn Compute CLI can queue Bare Metal access, wait for SSH readiness, and connect directly. The Linux login istenant.
ornn connect opens an interactive session. ornn check reports lifecycle, health, metrics, and logs. After you connect, verify GPUs with nvidia-smi on NVIDIA hosts or amd-smi list on AMD Instinct.
--key accepts a saved key id, saved key label, inline public key, or public-key file path. If you pass a private key path by mistake and the matching .pub exists, the CLI uses the public key file and refuses to upload private key material.
Because launch queues provisioning, use --wait or run ornn machines wait <node-id> to wait until the host is reachable. ornn connect <node-id> --print prints the SSH command without connecting.
See the Ornn Compute CLI and Manage SSH keys for details.
Use the API
You can run the same flow over HTTPS with an organization API key. Each step shows the CLI command where one exists, the REST request, and Python withrequests. The API reference has the full request and response schemas. The examples use fictional IDs.
Before you start:
- Your organization is approved and holds a Bare Metal reservation.
- Your organization has at least one active SSH key. Note its ID; see Manage SSH keys.
- Note your key’s fingerprint.
ssh-keygen -lf ~/.ssh/id_ed25519.pubprints it asSHA256:..., the same format the API returns.
1. Wait for activation
When the reserved window starts, Ornn activates the reservation and assigns its hosts. A non-nulldeployedAt on the reservation means hosts were requested. To start sooner within the window, or to retry when pendingOperation is activate, activate the reservation:
409 with runtime_pending, repeat the same request.
2. Launch access
Launch pushes your SSH keys to the reservation’s hosts. If the reservation has no hosts yet, launch selects them and starts provisioning.202 response means the hosts already exist and your keys are queued for them. A 201 response means launch started provisioning. Neither means SSH is ready. Once the reservation has hosts, repeating launch sends the keys again; it does not reprovision them. In scripts, the CLI also needs the flags described in automation mode.
Bare Metal launch takes access_mode, ssh_key_ids, network_mode, network_id, node_count, and request_id; see Launch VM or Bare Metal access. Set network_mode to private to join your organization’s private network, and add network_id to choose a specific network. Do not send disk_id: Bare Metal returns 422 with bare_metal_disk_not_allowed.
3. Wait for SSH
Poll each node every five seconds with a deadline. A host is ready whenhealth_readiness.ready is true and your fingerprint is in authorized_key_fingerprints. ready: true with heartbeat:unknown in advisory_reasons is not proof that the host is reachable, so confirm with SSH. Stop if authorized_key_metadata reports failed for your key.
4. Connect
Use the node’sssh_endpoint (tenant@<host>) and port. Like the CLI, the examples fall back to port 22 only when port is null.
nvidia-smi or amd-smi list.
Reboot or hard reset through the API
Reboot or hard reset takes a host’snode_id, not a VM ID. Send a stable request_id so a retry does not reboot twice.
reboot.status, which starts as in_progress. Poll the node until reboot.status is succeeded or failed, then confirm SSH. A second reboot request while one is in progress returns the existing reboot. Nodes in a Kubernetes or Slurm cluster return 409 with cluster_worker_reboot_blocked.
For a hard reset, send "mode": "hard_reset"; the CLI equivalent is ornn machines reset <node-id> --erase-local-data. A hard reset returns reboot: null. Ornn wipes tenant data, reboots, and then restores the reservation’s SSH keys, so the reservation needs at least one key. Wait until the node’s keys_pushed_at is later than your request and your fingerprint is listed again. A hard reset requested during a reboot returns 409 with reboot_in_progress.
Change the network
To move the reservation between public and private networking, switch access with the newnetwork_mode. SSH is interrupted until access is ready again. The CLI equivalent is ornn machines switch <reservation-id> --network private.
202, then wait for SSH as in step 3.
Stop the reservation
Stopping ends the reservation now and releases its hosts. Ornn revokes your access. This cannot be
undone. Copy data off the hosts first.
POST /commerce/reservations/{reservationId}/stop. The CLI has no stop command. A 202 response means the stop is accepted and the hosts are still being released; read the reservation until endsAt is set.
What’s next

Access overview
Compare VM and Bare Metal and understand the prerequisites for each.

VM access
Use a managed VM booted from an Ornn, created, or uploaded disk.