CLICLI overview

CLI overview

rms is the admin/ops command-line interface for Devium RMS. It ships in the devium-rms-tools package alongside the MCP server, and is a thin front-end over a shared operations layer built on the devium-rms-api SDK — so it reuses the same clients and auth as everything else.

Install

pipx install devium-rms-tools     # provides `rms` and `rms-mcp`

Enable shell completion (bash, zsh, fish, …):

rms --install-completion

Authenticate

rms auth login --username you --password ••••••••   # stores a token for the profile
rms auth status                                      # profile, base URL, token state
rms auth logout

Configuration

Every setting is resolved with the precedence flag → environment → config file → default:

SettingFlagEnvironmentDefault
Base URL--base-urlRMS_BASE_URLhttp://localhost:8080
TokenRMS_TOKENfrom rms auth login
Profile--profileRMS_PROFILEdefault
Output--output / -oRMS_OUTPUTtable

The config file lives at $RMS_CONFIG_HOME, else $XDG_CONFIG_HOME/rms, else ~/.config/rms/config.toml, and is written with 0600 permissions. Setting RMS_TOKEN alone is enough to run authenticated commands without logging in — useful for CI and cron.

Profiles let you keep several environments side by side:

rms --profile staging auth login -u you -p ••••••••
rms --profile staging pool list

Output formats

rms pool list                 # table (human, default)
rms pool list --output json   # JSON (machine)
  • The format is chosen only by --output / RMS_OUTPUT — never inferred from whether stdout is a TTY, so piped output matches what you see interactively. TTY detection only toggles colour and borders.
  • Lists render as tables; a single object renders as a key→value panel.
  • Enum fields render as names (PENDING, not 0) in both formats.
  • Data is written to stdout; notes and errors to stderr — so rms … --output json | jq always receives clean JSON or nothing.
  • Errors mirror the format: a plain Error: line in table mode, or { "error": { "code", "message" } } in JSON mode.

Scripting

-q / --quiet prints only the object id on create/single-object commands:

POOL=$(rms pool create --name "GPU Pool" --org 1 -q)
rms booking create --pool "$POOL" --query "capability(name='GPU')" --available-for 120

Exit codes

CodeMeaning
0Success
1Generic error (validation, upstream)
2Usage error
3Authentication failure
4Not found

See the commands reference for the full surface.