Documentation

CLI

Install, authenticate, enroll devices, and control machines with rc.

Install

Linux / macOS

$curl -fsSL https://rc.ohrats.party/install.sh | sh

Run in your terminal. The installer selects the Linux or macOS release for your architecture and installs RC under ~/.local/bin.

Windows (PowerShell)

>& ([scriptblock]::Create((Invoke-RestMethod -Uri 'https://rc.ohrats.party/install.ps1')))

Run in PowerShell as the Windows user who will run RC. Windows AMD64 is supported. RC is installed under %LOCALAPPDATA%\OhRats\RC.

To use rc by name, add %LOCALAPPDATA%\OhRats\RC\bin to your user PATH and reopen PowerShell. You can also invoke it directly:

>& "$env:LOCALAPPDATA\OhRats\RC\bin\rc.exe" status

Both installers download the current GitHub Release and verify the native binaries and core components before activation. Run the installer again to update an existing installation.

For a machine that will run the RC Node, prefer the enrollment command generated by the Devices page. Select the target platform. The new-install command installs RC, enrolls the machine, and starts its background service; the already-installed command enrolls and starts the service. On Windows, the per-user Task Scheduler service requires that user to remain logged in.

Sign in

$rc login
$rc login --expires 7d

login generates a local Ed25519 control key and opens RC for passkey approval. The default lifetime is until revoked.

Finite values are 1h, 1d, 7d, 30d, 90d, 180d, and 1y.

rc logout revokes the hosted CLI session and removes the local account session.

Commands

CommandDescription
rc devicesList devices, workspaces, online state, and Node version.
rc shell DEVICEOpen the machine's login shell in the current terminal.
rc run DEVICE -- CMD...Run one command remotely and stream its output.
rc ssh-key add [PUBLIC_KEY_FILE]Register an OpenSSH public key against the current passkey-backed CLI identity.
rc ssh-configPrint OpenSSH config entries using immutable RC device IDs.
rc ssh-proxyCarry an OpenSSH connection through RC's HTTPS/WebSocket endpoint.
rc statusShow local enrollment and hosted device status.
rc enroll TOKENEnroll this machine. Optional flags: --name, --url, --state-dir.
rc service install|start|stop|status|uninstallManage the per-user background Node service.
rc / rc --helpShow grouped native, kernel, and active component commands.
rc add SPEC / rc remove NAMEInstall or remove a managed WebAssembly component.
rc install / rc listRestore the locked component set or inspect installed components.
rc outdated [NAME...]Show available managed-component updates.
rc update [NAME...]Update managed WebAssembly components without replacing the native RC platform.
rc upgradeUpgrade the native RC platform and refresh its core component bundle.
rc device delete IDDelete a device from RC immediately. A sleeping Node reconciles the revocation when it next connects.
rc config show|path|set|unsetRead or modify the default RC server and enrollment name.
rc uninstallRemove the service, unregister the device when possible, delete local RC state, and remove the installed binary.

OpenSSH

$rc ssh-key add ~/.ssh/id_ed25519.pub
$rc ssh-config >> ~/.ssh/config

The generated hosts are named rc-<device-id>. The full immutable RC device ID is sent to the gateway, so renaming a device does not change which Node an existing entry targets.

$ssh rc-DEVICE_ID
$scp ./file rc-DEVICE_ID:/tmp/file
$sftp rc-DEVICE_ID
$rsync -e ssh ./dir/ rc-DEVICE_ID:/tmp/dir/

OpenSSH talks to stock sshd at the RC gateway through rc ssh-proxy, so the controlled Node does not expose port 22 and the client works on networks that permit HTTPS/WebSockets but block SSH ports.

Examples

$rc shell Mac
$rc run Mac -- uname -a

Use an API key

$RC_API_TOKEN='rcsk_...' rc devices
$rc devices --token 'rcsk_...'

The CLI parses the rcsk_ credential and signs API requests locally. It does not send the private signing key as a bearer token.

Local state

RC state is stored under ~/.config/rc on Linux and macOS, and %LOCALAPPDATA%\OhRats\RC\state on Windows by default. This includes device identity, RC Lock, device pins, CLI session data, configuration, service logs, and the CLI control private key.

The CLI uses the same X25519/HKDF-SHA256/AES-256-GCM encrypted control protocol as the browser. See Browser and CLI encrypted control for the handshake details.

OpenSSH is separate from that direct-control protocol. SSH sessions terminate at the RC gateway; see SSH gateway.