Skip to main content

Six ways to boot a VM.
One command.

AWS, Azure, GCP, Hetzner, or a Firecracker microVM on your own machine -- same CLI, same config file.

~/onctl
❯ curl -fsSL https://onctl.sh/get.sh | bash
# or, latest main (edge build):
❯ curl -fsSL https://onctl.sh/get-edge.sh | bash
❯ onctl create -n my-box -p aws
Using: aws
Server IP: 3.68.140.22
Vm started.
❯ onctl ssh my-box
root@my-box:~#

One config file, every backend​

onctl init writes a single onctl.yaml with every provider's defaults pre-filled. Edit the section you need, then pick it with -p or the ONCTL_CLOUD env var -- everything else about the command stays the same.

Abbreviated above -- the real file ships with every field commented.

# onctl.yaml
aws:
vm:
type: t2.micro
azure:
vm:
type: Standard_D4s_v3
gcp:
type: n1-standard-1
hetzner:
vm:
type: cpx21
# no cloud account needed
fc:
vcpuCount: 1
memSizeMib: 2048

The whole lifecycle​

Create, connect, check on it, tear it down -- four verbs, regardless of which of the six backends is on the other end.

~/onctl
❯ onctl create -n my-box -p aws
Server IP: 3.68.140.22
❯ onctl ssh my-box
root@my-box:~#
❯ onctl ls
CLOUD NAME PUBLIC IP STATE
aws my-box 3.68.140.22 running
❯ onctl destroy my-box
my-box destroyed.

Or watch them all at once​

onctl tui is the VM list as a live, k9s-style view. s opens a shell on the VM under the cursor, c creates one, p and r pause and resume, ctrl-d destroys (after asking), :images and :sizes show what the provider offers, and ? lists every key.

onctl tui
onctl tui: a header with the provider, VM counts and hotkeys, and a table of VMs with their state, public IP, type, image, location, age and hourly cost