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:
| Setting | Flag | Environment | Default |
|---|---|---|---|
| Base URL | --base-url | RMS_BASE_URL | http://localhost:8080 |
| Token | — | RMS_TOKEN | from rms auth login |
| Profile | --profile | RMS_PROFILE | default |
| Output | --output / -o | RMS_OUTPUT | table |
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, not0) in both formats. - Data is written to stdout; notes and errors to stderr — so
rms … --output json | jqalways 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
| Code | Meaning |
|---|---|
0 | Success |
1 | Generic error (validation, upstream) |
2 | Usage error |
3 | Authentication failure |
4 | Not found |
See the commands reference for the full surface.