Remote CLI
rimz remote attaches to a room on another host over SSH.
rimz remote attaches to a room on another host over SSH. remote connect builds a guarded ssh -t command on your machine and runs the remote host's own rimz, so your ~/.ssh/config, keys, ports, and jump hosts apply through normal SSH resolution — RimZ adds no daemon and opens no port of its own. It changes nothing on the remote host until you ask: remote setup is the only subcommand that installs a binary there, and aliases are plain lines in ~/.config/rimz/remote.toml you remove with remote rm. Why you attach this way, and how the link heals itself, is the remote guide.
Remote rooms
rimz remote add dev-box dev-box:query-engine # save an alias in remote.toml
rimz remote setup dev-box # install rimz on the remote host
rimz remote connect dev-box # attach the saved room over SSH
rimz remote connect dev-box --web # open the remote room's web UI locally
rimz remote connect agent@prod-box:/srv/query-engine
rimz remote bandwidth --secs 5 # attribute pane write-rate in this roomA raw target is [user@]host:<session-or-path>. After the colon, a value containing / or starting with ~ is a remote path and runs remote rimz start; a bare word is a remote session name and runs remote rimz attach. Valid targets include dev-box:query-engine, dev-box:~/code/query-engine, agent@prod-box:/srv/query-engine, and user@[::1]:query-engine. Spell another user's home as an absolute path (/home/alice/code), because ~user does not expand through the guarded command.
| Subcommand | Effect |
|---|---|
remote connect <alias-or-target> | Attach the room over SSH, reconnect-supervised |
remote setup <alias-or-host> | Install rimz to ~/.local/bin on the host over SSH |
remote add <name> <target> | Save an alias in ~/.config/rimz/remote.toml |
remote update <name> <target> | Replace a saved alias's target and flags |
remote rename <old> <new> | Rename a saved alias |
remote list | Print saved aliases |
remote rm <name> | Remove a saved alias |
remote reset <alias-or-target> | Connect with recovery skipped, so the remote room comes up empty |
remote bandwidth | Attribute pane write-rate inside a served room |
The details that matter in practice:
remote addtreats any input with a:as a raw target and everything else as an alias name. On an existing name it prompts to overwrite in an interactive terminal and errors otherwise, so a saved alias is never silently replaced; useremote updatein a script.updatetakes the same flags asadd, errors when the alias does not exist, and resets flags you do not pass to their defaults.remote setup <alias-or-host>accepts a saved alias, a raw[user@]host:<session-or-path>target, or a bare[user@]host, then installs the verified prebuilt release to~/.local/bin/rimzon that host. This is the only remote subcommand that writes to the remote host outside a room. Whenremote connectorremote connect --webfinds no remote binary, the local error points back to this command.- Reconnect supervision is on by default.
--no-reconnecthands the link to one SSH run;remote add --no-reconnectsaves that as the alias default. remote connect --resetandremote resetpass--no-resumeto the remoterimz;remote add --no-resumesaves that birth behavior on the alias.--attach,--no-attach, and--printmirror local behavior;--printemits the SSH command instead of running it, so you can inspect or wrap it.- For
remote addandremote update,--mux,--zellij, or--tmuxgiven anywhere on the invocation is saved on the alias;rimz remote connect --mux <name>keeps--muxas a per-invocation override. rimz remote bandwidth [--secs N] [--json]runs on the Linux host serving the room and samples VFS write-rate counters to attribute per-pane terminal output on both backends; tmux reports pane pids natively, and Zellij pane pids resolve through RimZ's process matcher. Use it inside the room when a remote attach looks chatty; full-screen TUIs such as agents mid-turn or system monitors should dominate the report.
Remote rooms in the browser
rimz remote connect <target> --web opens the remote room in your local browser instead of your terminal. The sequence:
- Runs remote
rimz web open --print --jsonover a prep connection, asking the recovery prompt there when your terminal is interactive. - Selects Zellij or ttyd from the remote room mux and relays its login token or Basic-Auth credential.
- Starts a supervised SSH local-forward tunnel to the selected remote web engine.
- Prints the bare
http://127.0.0.1:<port>/<session>URL and opens your local browser best-effort. - Stays in the foreground until Ctrl-C, which tears the tunnel down.
--web-port <port> pins the local browser origin; otherwise RimZ derives a stable port from the session name in 8300..8399. The room itself is rimz web.
Link health, web tunneling, reconnect mechanics, and bandwidth attribution are in remote internals.