CLI Reference
Every rl command and subcommand, with flags, arguments, and examples.
The rl CLI is how you drive Ringleader. Everything you do, from signing in to
booting a cloud VM, is a command on this page.
If you installed the macOS native app, the rl binary
is already on your PATH (symlinked to /usr/local/bin/rl). The
Windows installer adds it to the machine PATH.
Note
rl. The longer ringleader name remains available as a
permanent alias on every platform, so existing scripts keep working unchanged.
The two are interchangeable; this documentation uses rl throughout.Command groups
Every resource kind gets a command group of the same name, and the grammar is
rl <kind> <verb> (e.g. rl workstation get, rl secret create). The generic
verbs and the cross-cutting apply mirror kubectl. Commands fall into a few
families:
- Authentication:
auth login,auth logout,auth status,auth token. - Service accounts:
serviceaccount create/trust, the non-human identities CI signs in as. - Resource verbs:
apply,diff, and the per-kindget,describe,create,edit,copy,delete,wait. - Imperative create: the rich generators
namespace create,secret create,workstation create,configmap createandsshkey create. - Workstation lifecycle & access:
workstation start/stop/restart/release-finalizer/get-resolved-configuration,shell,code,tmux,logs,troubleshoot. - File transfer:
file cp, moving files to and from a workstation. - Sharing & access:
workstation share/unshare/access,secret share/unshare/access, andshare show/enable/disable. - Local bindings:
binding show,enable,disable,switch,browser-opens. - SSH keys:
sshkey create/enable/disable, forwarding a local key into workstations. - Reusable content:
configmap create/get/edit, the text a config’sscripts/filescan reference. - Daemon:
daemon start,stop,restart,statusandlog-level. The page also coversrl status, which reports the workstation providers this machine can use. - Docs bundle:
docs, the embedded, offline documentation bundle. - TUI:
tui, a full-screen dashboard over your resources (full walkthrough in the Terminal UI section).
rl version prints the CLI version and the version of the in-VM agent it expects on a
workstation. rl --version and rl -v print the same. rl completion <shell> generates
a shell completion script.
Common flags
Most commands accept these flags:
| Flag | Description |
|---|---|
--home <dir> | Data directory (default $RINGLEADER_HOME, else ~/.ringleader). |
-n, --namespace <ns> | Target namespace. Defaults to the namespace pinned on this device, else your primary origin’s default namespace, else local. |
-A, --all-namespaces | Operate across every namespace you can see. |
-o, --output <format> | Output format: table (default for get), yaml, json, or jsonpath='{.path}'. |
--as <subject> | Impersonate a subject (e.g. user:alice, sa:builder). Requires the right to do so. |
Exit codes
| Code | Meaning |
|---|---|
0 | Success. |
1 | Command error (the operation failed). |
2 | Usage or flag error. |
3 | daemon status only: no daemon is running (scriptable, like systemctl). |
Namespaces and resolution
Your namespace is created the first time you sign in, not before, and the control
plane decides which one you land in. Working locally without signing in, you get
the reserved local namespace, which also holds the local container runtime.
When you omit -n, the CLI resolves the namespace in this order, highest first:
- an explicit
-n/--namespaceon the command; - the namespace pinned on this device with
rl namespace use; - your primary origin’s
spec.defaultNamespace, assigned at login; - the reserved built-in
local.
rl namespace use [namespace]
Pin the namespace that bare commands target on this device, so you stop typing
-n on every command. With no name, it reports the answer and which rung of the
ladder produced it.
rl namespace use team-a # pin it
rl namespace use # what do bare commands target, and why?
rl namespace use --unset # drop the pin, follow the origin's default again$ rl namespace use team-a
namespace pinned to "team-a"
$ rl namespace use
team-a (pinned on this device)
$ rl namespace use --unset
namespace pin cleared; commands now target "platform" (from origin "cp1")The part in parentheses matters. local (the built-in default) and
local (pinned on this device) are the same namespace for different reasons, and
only the first tells you that no login ever assigned you one.
| Flag | Description |
|---|---|
--unset | Clear the pin and follow the origin’s default again. |
--home <dir> | Data directory. |
Notes:
- The pin is device-local. It never federates, and it survives
rl auth loginandrl auth logout, so a login cannot re-target a user who has chosen otherwise. - It sits below
-n, so a per-invocation override still wins. - It works in standalone mode, where there is no origin at all.
- Only the shape of the name is checked. You can pin a namespace you cannot yet read; the next command reports an ordinary not-found that names it.
- Set and show are one verb, like
git config.rl ns useis the same command.
- AuthenticationSign in to a control plane, manage federated origins, and create API tokens.
- Resource verbsThe verbs every resource kind carries: get, describe, create, edit, copy, delete, and wait, plus the cross-cutting apply.
- Imperative createkubectl-style generators that build a canonical object from flags and apply it.
- Workstation accessStart, stop, connect to, and diagnose a workstation from the command line.
- Sharing & accessShare a workstation or secret with a teammate, revoke access, and report effective access.
- Local bindingsInspect and manage device-local forwards from a workstation to your machine.
- DaemonRun and control the local control plane: the control loop that boots workstations and forwards sockets.
- Docs bundlePrint Ringleader's documentation to stdout, offline, ready to pipe into an AI assistant.
- Terminal UIA full-screen dashboard for watching and managing your resources from the terminal.