Requirements
- Go 1.24+ to build from source.
- An OpenNebula installation with XML-RPC API enabled (default port 2633).
- Credentials via
ONE_AUTHenvironment variable or~/.one/one_auth.
Installation
Pre-built binaries (recommended)
Download the zip for your platform from GitHub Releases:
unzip one9s-linux-amd64.zip
chmod +x one9s
Platforms: one9s-linux-amd64, one9s-linux-arm64, one9s-darwin-amd64, one9s-darwin-arm64, one9s-windows-amd64.exe.
From source
cd one9s
make build
Configuration
one9s is configured through environment variables:
| Variable | Required | Description |
|---|---|---|
ONE_XMLRPC | No | OpenNebula XML-RPC endpoint. Defaults to http://localhost:2633/RPC2. |
ONE_AUTH | Yes* | Credentials as user:password or path to auth file. |
Note: Falls back to ~/.one/one_auth if ONE_AUTH is not set.
export ONE_XMLRPC="http://opennebula:2633/RPC2"
./one9s
Usage & key bindings
one9s opens a tabbed TUI. Navigate tabs and interact with the data.
| Key | Action |
|---|---|
q / Ctrl+C | Quit |
tab | Next tab |
? | Help / back to VMs |
↑/↓ / j/k | Navigate rows |
PgUp/PgDn / b/f | Page up / page down |
g/G | Go to start / end |
/ | Fuzzy search / filter |
F5 | Refresh current view |
VMs tab
All VMs with state, user, CPU, memory, IP and host. Filter by state (i active, o stopped, p poweroff, e error, a all) or use / for fuzzy text search.
Hosts tab
Cluster hosts with state, CPU%, memory%, running VMs. Enable, disable, offline, delete or rename hosts.
Datastores tab
Storage pools with type, total capacity, used and free space.
ACLs tab
Access control rules with decoded hex values: user, resource, rights and zone in human-readable format.
Quotas tab
User quotas for VMs, CPU, Memory, Running VMs, Images, Size and Leases.
VM Actions
Actions are performed on the selected VM. State-aware: invalid actions show an error.
| Key | Action | Valid States |
|---|---|---|
r | Reboot | ACTIVE only |
s | Stop | ACTIVE only |
u | Resume / Start | POWEROFF, SUSPENDED, STOPPED, UNDEPLOYED |
x | Suspend | ACTIVE only |
d | Terminate (hard) | Any state (with confirmation) |
State filters
| Key | Filter |
|---|---|
a | All VMs |
i | Active only (ACTIVE/*) |
o | Stopped (STOPPED, SUSPENDED, HOLD, DONE) |
p | Poweroff (POWEROFF, UNDEPLOYED) |
e | Error (CLONING_FAILURE, ACTIVE/*FAILURE*) |
Host Actions
| Key | Action | Confirmation |
|---|---|---|
e | Enable host | No |
d | Disable host | No |
o | Offline host | Yes (y/n modal) |
x | Delete host | Type yes to confirm |
n | Rename host | Type new name |
ACL Decoding
OpenNebula ACL rules are stored as hex values. one9s decodes them automatically:
| Field | Example | Decoded |
|---|---|---|
| User | 100000002 | #2 (UID 2) |
| User | 200000001 | @1 (GID 1) |
| User | 400000000 | * (all) |
| Resource | 20400000000 | HOST |
| Resource | 40100000065 | NET/#101 |
| Rights | f | USE+MANAGE+ADMIN+CREATE |
| Rights | 2 | MANAGE |
| Zone | 400000000 | * (all zones) |
Quotas
one9s shows per-user quotas fetched from one.user.info for each user. Columns show used/limit for:
- VMs, total VMs allocated
- CPU, CPU cores allocated
- Memory, Memory in MB
- Running, Currently running VMs
- Images, Disk images
- Size, Disk size in MB
- Leases, Network leases
Note: Quota data requires individual one.user.info calls per user. With many users, the first load may take a few seconds.