Terminal UI for OpenNebula cluster management
Monitor VMs, Hosts, Datastores, Manage ACLs and Quotas from your terminal
one9s.scszero.com |
Documentation
one9s is a TUI (terminal user interface) for managing and monitoring
OpenNebula clusters directly from your terminal, inspired by
k9s and
lazygit.
No Sunstone web UI. No Ruby CLI dependencies. Just a single binary that talks to the OpenNebula XML-RPC API.
one9s.mp4
- VM Management - monitor all VMs with state, CPU, memory, IP, host. Split view with detail pane showing full VM info.
- VM Lifecycle - reboot, stop, resume, suspend, terminate directly from the terminal with confirmation modals.
- Host Management - enable, disable, offline, delete, rename hosts. Detail view with CPU/Memory progress bars.
- Datastore Monitoring - view storage pools with type, total capacity, used and free space.
- ACL Rules - view and decode access control rules (user, resource, rights, zone) from hex to human-readable.
- User Quotas - view and edit per-user quotas for VMs, CPU, Memory, Running VMs, Images, Size and Leases.
- Fuzzy Search -
/key for instant filtering on all tabs. - Vault Encryption - credentials encrypted with AES-256-GCM, safe from third-party access.
- Cross-platform - single binary for Linux, macOS, Windows (amd64/arm64).
curl -LO https://github.com/SergioZ3R0/one9s/releases/latest/download/one9s-linux-amd64.zip
unzip one9s-linux-amd64.zip
chmod +x one9smkdir -p ~/.one9s
cat > ~/.one9s/config << 'EOF'
ONE_XMLRPC=http://opennebula:2633/RPC2
ONE_AUTH=oneadmin:password
EOF
chmod 600 ~/.one9s/configOr as a one-liner:
ONE_AUTH="oneadmin:password" ONE_XMLRPC="http://opennebula:2633/RPC2" ./one9sStore credentials encrypted with AES-256-GCM:
# Create encrypted vault
one9s vault init
# Run (prompts for vault password)
./one9s
# Or skip vault with direct env vars (no password prompt)
ONE_AUTH="oneadmin:password" ONE_XMLRPC="http://opennebula:2633/RPC2" ./one9sVault commands:
| Command | Description |
|---|---|
one9s vault init |
Create new encrypted config |
one9s vault encrypt |
Encrypt existing plain config |
one9s vault decrypt |
Decrypt and display contents |
Vault password can be set via ONE_VAULT_PASS env var to skip the prompt.
./one9s| Key | Action |
|---|---|
tab / shift+tab |
Next / previous tab |
↑/↓ / j/k |
Navigate rows |
PgUp/PgDn / b/f |
Page up / page down |
g/G |
Go to start / end |
enter |
View details (VMs/Hosts split view) |
/ |
Fuzzy search |
F5 |
Refresh current view |
? |
Help |
| Key | Action | Valid States |
|---|---|---|
r |
Reboot | ACTIVE |
s |
Stop | ACTIVE |
u |
Resume/Start | POWEROFF, SUSPENDED, STOPPED, UNDEPLOYED |
x |
Suspend | ACTIVE |
d |
Terminate (hard) | Any (with confirmation) |
| Key | Filter |
|---|---|
a |
All VMs |
i |
Active only |
o |
Stopped only |
p |
Poweroff only |
e |
Error only |
| Key | Action |
|---|---|
e |
Enable host |
d |
Disable host |
o |
Offline host (confirmation required) |
x |
Delete host (type yes to confirm) |
n |
Rename host (type new name) |
| Key | Action |
|---|---|
e |
Edit user quota (form modal with VMs, CPU, Memory, etc.) |
one9s requires appropriate OpenNebula permissions. If an action fails due to insufficient permissions, you'll see a clear message like "permission denied: requires VM:MANAGE".
| Action | Required Permission |
|---|---|
| View VMs, Hosts, Datastores, ACLs | VM:USE, HOST:USE, DS:USE, ACL:USE |
| Reboot, Stop, Suspend, Resume VM | VM:MANAGE |
| Terminate VM | VM:ADMIN |
| Enable/Disable/Offline Host | HOST:ADMIN |
| Delete/Rename Host | HOST:ADMIN |
| Edit Quotas | Quota:ADMIN |
- Language: Go 1.24+
- TUI: Bubble Tea
- Styling: Lip Gloss
- API: GOCA (Official OpenNebula Go Cloud API)