Skip to main content Skip to navigation Skip to footer

CLI Application

Complete guide to using the Rediacc command-line interface for platform management

Rediacc CLI Reference

Overview

The **Rediacc CLI** (`rdc`) is a command-line interface for managing self-hosted infrastructure — machines, repositories, storage, backups, and more.

Installation

Download the latest binary for your platform from the [Rediacc releases page](https://www.rediacc.com) or install via your package manager:

# macOS / Linux
curl -fsSL https://www.rediacc.com | sh

# Or use the packaged binary directly
./rdc --help

Global Options

Every command supports these global flags:

FlagDescription
--outputOutput format (table|json|yaml|csv)
--configUse specific config for this command
--langLanguage override ({{languages}})
--forceSkip confirmation prompts

1. Agent Utilities

Introspection commands for AI agents. Key subcommands: capabilities (list all commands with args/options as JSON), schema (detailed schema for a single command), exec (execute a command with JSON input from stdin, always returns JSON).

1.1 capabilities

List all available commands with arguments and options

rdc agent capabilities

1.2 schema

Show detailed schema for a specific command

rdc agent schema [options]
FlagDescriptionRequiredDefault
--command <path>Execute a command instead of interactive shellYes-

1.3 exec

Execute a command with JSON input from stdin

rdc agent exec [options]
FlagDescriptionRequiredDefault
--command <path>Execute a command instead of interactive shellYes-

1.4 generate-reference

Generate command reference markdown for Claude skills

rdc agent generate-reference

2. Config Management

Manage CLI configuration files stored at ~/.config/rediacc/. CRUD operations for machines, repositories, storage backends, and SSH keys within a config. Key subcommands: init (create named config), show, list, ssh (manage keys), recover (from backup). Nested groups: config machine, config repository, config storage, config infra.

Config files store connection details (API URL, credentials, default team/region/bridge) so you can switch between environments quickly.

2.1 init

Create a new named config file

You can add machines directly:

rdc config init [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
--ssh-key <path>Path to SSH private key (e.g., ~/.ssh/id_rsa)No-
--renet-path <path>Path to renet binary (default: renet in PATH)No-
--master-password <password>Encrypt resources with a master passwordNo-
-u, --api-url <url>API URLNo-
--server <url>Account server URLNo-

2.2 list

List all config files

rdc config list

2.3 show

Show current config details

rdc config show [options]
FlagDescriptionRequiredDefault
--revealShow plaintext for sensitive values (interactive only)No-

2.4 delete

Delete a config file

rdc config delete [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-

2.5 set

Set a default value (team, region, bridge)

rdc config set [options]
FlagDescriptionRequiredDefault
--key <key>Configuration keyYes-
--value <value>Configuration valueYes-

Tip: Setting defaults means you don't need to pass `--team`, `--region`, or `--bridge` with every command.

2.6 clear

Clear defaults (all or specific key)

rdc config clear [options]
FlagDescriptionRequiredDefault
--key <key>Configuration keyNo-

2.7 recover

Restore config from backup (.bak) file

rdc config recover [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-y, --yesSkip confirmation promptNo-

2.8 set-ssh

Update SSH configuration for the current config

rdc config set-ssh

2.9 set-renet

Set the path to renet binary

rdc config set-renet

2.10 ssh

Manage SSH key configuration

set

Set SSH key for the current config

rdc config ssh set [options]
FlagDescriptionRequiredDefault
--key <path>Path to SSH private key fileYes-
--embedEmbed key content in config instead of storing pathNo-

show

Show current SSH key configuration

rdc config ssh show

remove

Remove SSH key from the current config

rdc config ssh remove

2.11 remote

Manage remote config storage connection

enable

Link this config to remote encrypted storage

rdc config remote enable [options]
FlagDescriptionRequiredDefault
--headlessUse device code flow (for headless servers)No-
--api-url <url>Account server URLNo-

disable

Disconnect from remote storage and save config locally

rdc config remote disable

status

Show remote connection status

rdc config remote status

refresh

Force re-fetch config from remote storage

rdc config remote refresh

2.12 machine

Manage machines in the current config

add

Add a machine to the current config. Auto-scans SSH host keys. After adding, run: config machine setup <name>

rdc config machine add [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--ip <address>Machine IP address or hostnameYes-
--user <username>SSH usernameYes-
--port <port>SSH portNo22
--datastore <path>Datastore path on machineNo/mnt/rediacc

remove

Remove a machine from the current config

rdc config machine remove [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-

list

List machines in the current config

rdc config machine list

scan-keys

Scan SSH host keys for machines in the current config

rdc config machine scan-keys [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameNo-

setup

Provision a remote machine for repositories (installs renet, configures Docker, BTRFS datastore). Idempotent. Required after 'config machine add' and before 'repo create'

rdc config machine setup [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--datastore <path>Datastore path on remote machineNo/mnt/rediacc
--datastore-size <size>Datastore size (e.g., 95%, 100G)No95%
--debugEnable debug outputNo-

set-ceph

Set Ceph RBD configuration for a machine

rdc config machine set-ceph [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--pool <name>Ceph pool name (e.g., rbd)Yes-
--image <name>RBD image name (e.g., datastore-prod1)Yes-
--cluster <name>Ceph cluster nameNoceph

2.13 repository

Manage repository mappings in the current config

add

Add a repository GUID mapping to the current config

rdc config repository add [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--guid <guid>Repository GUID (UUID from storage backup filenames)Yes-
--tag <tag>Repository tagNolatest
--credential <credential>Repository credential (encryption passphrase)No-
--network-id <id>Network ID for Docker isolation (2816, 2880, ...). Auto-assigned if omittedNo-

remove

Remove a repository mapping from the current config

rdc config repository remove [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-

list

List repository GUID mappings in the current config

rdc config repository list

list-archived

List archived repository credentials

rdc config repository list-archived

restore-archived

Restore an archived repository credential

rdc config repository restore-archived [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--new-name <name>New resource nameNo-

purge-archived

Permanently delete all archived credentials

rdc config repository purge-archived

2.14 provider

Manage cloud providers for automated machine provisioning

add

Add a cloud provider

rdc config provider add [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--provider <source>Known provider source (e.g., linode/linode, hetznercloud/hcloud)No-
--source <source>Custom OpenTofu provider source (e.g., vultr/vultr)No-
--token <token>API token for the cloud providerYes-
--region <region>Default region for new machinesNo-
--type <type>Default instance type/sizeNo-
--image <image>Default OS imageNo-
--ssh-user <user>SSH username for new VMs (default: root)No-
--resource <type>Custom: OpenTofu resource type for VMNo-
--label-attr <attr>Custom: attribute name for VM labelNo-
--region-attr <attr>Custom: attribute name for regionNo-
--size-attr <attr>Custom: attribute name for instance typeNo-
--image-attr <attr>Custom: attribute name for OS imageNo-
--ipv4-output <attr>Custom: output attribute for IPv4 addressNo-
--ipv6-output <attr>Custom: output attribute for IPv6 addressNo-
--ssh-key-attr <attr>Custom: attribute name for SSH keysNo-
--ssh-key-format <format>Custom: SSH key format (inline_list or resource_id)No-
--ssh-key-resource <type>Custom: OpenTofu resource type for SSH keysNo-

remove

Remove a cloud provider configuration

rdc config provider remove [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-

list

List configured cloud providers

rdc config provider list

2.15 storage

Manage storage backends in the current config

import

Import storages from an rclone config file

rdc config storage import [options]
FlagDescriptionRequiredDefault
--file <path>Path to fileYes-
--name <name>Import only this named sectionNo-

remove

Remove a storage from the current config

rdc config storage remove [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-

list

List storages in the current config

rdc config storage list

2.16 infra

Manage infrastructure configuration (proxy, DNS, certificates)

set

Set infrastructure configuration for a machine (machine-specific: IPs, domain, ports; shared: cert email, CF DNS token)

rdc config infra set [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--public-ipv4 <ip>Public IPv4 address (per-machine)No-
--public-ipv6 <ip>Public IPv6 address (per-machine)No-
--base-domain <domain>Base domain for applications (per-machine)No-
--cert-email <email>Email for TLS certificate notifications (shared across machines)No-
--cf-dns-token <token>Cloudflare DNS API token for ACME DNS-01 challenge (shared across machines)No-
--tcp-ports <ports>TCP ports to forward (comma-separated, e.g., 25,143,465)No-
--udp-ports <ports>UDP ports to forward (comma-separated, e.g., 53)No-

show

Show infrastructure configuration for a machine

rdc config infra show [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-

push

Push infrastructure config to machine (Traefik proxy, router, Cloudflare DNS). Run 'config infra set <machine>' first

rdc config infra push [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--debugEnable debug outputNo-

2.17 cert-cache

Manage cached TLS certificates

pull

Download and cache TLS certificates from a machine

rdc config cert-cache pull [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--no-pruneSkip pruning stale network-ID certificatesNo-
--debugEnable debug outputNo-

push

Upload cached TLS certificates to a machine

rdc config cert-cache push [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--debugEnable debug outputNo-

status

Show cached certificate inventory

rdc config cert-cache status

clear

Remove the certificate cache

rdc config cert-cache clear

2.18 field

Pointer-addressed config field operations (get/set/unset/rotate/list). JSON Pointers (RFC 6901) like /credentials/cfDnsApiToken.

get

Read a single config value by JSON Pointer. Sensitive fields redact unless --reveal (humans only).

rdc config field get [options]
FlagDescriptionRequiredDefault
--pointer <pointer>JSON Pointer to the field (e.g. /credentials/cfDnsApiToken)Yes-
--revealShow plaintext for sensitive values (interactive TTY only; audited)No-
--digestPrint the SHA-256 digest instead of the value (safe to share with agents)No-

set

Write a config value at a JSON Pointer. Sensitive paths require --current (knowledge-gate).

rdc config field set [options]
FlagDescriptionRequiredDefault
--pointer <pointer>JSON Pointer to the field (e.g. /credentials/cfDnsApiToken)Yes-
--new <value>New value (parsed as JSON if it looks like JSON: {, [, ", true/false/null/number)Yes-
--current <value>Current plaintext value — required for sensitive-path mutations (knowledge-gate proof)No-

unset

Delete a config value at a JSON Pointer. Sensitive paths require --current.

rdc config field unset [options]
FlagDescriptionRequiredDefault
--pointer <pointer>JSON Pointer to the field (e.g. /credentials/cfDnsApiToken)Yes-
--current <value>Current plaintext value — required for sensitive-path deletionsNo-

rotate

Rotate a sensitive value without --current. Interactive TTY only; loudly audited.

rdc config field rotate [options]
FlagDescriptionRequiredDefault
--pointer <pointer>JSON Pointer to the sensitive field (e.g. /credentials/cfDnsApiToken)Yes-
--new <value>New valueYes-

list

List every registered sensitivity pointer template with its kind and commit/encrypt policy.

rdc config field list [options]
FlagDescriptionRequiredDefault
--sensitiveShow only sensitive (non-public) templatesNo-

2.19 edit

Open the active config in $EDITOR as a redacted JSONC projection. Humans only; agents refused.

rdc config edit [options]
FlagDescriptionRequiredDefault
--revealShow plaintext for sensitive values (interactive TTY only; audited)No-
--dumpPrint current config as JSONC to stdout (read-only; safe for agents when redacted)No-
--apply <file>Apply an edited JSONC file (skips $EDITOR launch)No-
--current-secrets <file>JSON file mapping pointer→old plaintext for knowledge-gate on --applyNo-
--editor <cmd>Editor command override (follows git precedence: flag > $GIT_EDITOR > git config core.editor > $VISUAL > $EDITOR)No-

2.20 audit

Inspect the config audit log (hash-chained JSONL at ~/.config/rediacc/audit.log.jsonl)

log

Print recent audit entries as JSON

rdc config audit log [options]
FlagDescriptionRequiredDefault
--since <spec>Only show entries newer than (e.g., '24h', '7d', ISO timestamp)No-
--path <glob>Filter by JSON Pointer glob (e.g., /credentials/*)No-
--actor <kind>Filter by actor kind (human|agent)No-

tail

Stream new audit entries as they are written (Ctrl+C to stop)

rdc config audit tail

verify

Verify the integrity of the SHA-256 hash chain across all audit entries

rdc config audit verify

2.21 backup-strategy

Manage named backup strategies (hot/cold modes, destinations, scheduling)

set

Create or update a backup strategy

rdc config backup-strategy set [options]
FlagDescriptionRequiredDefault
--name <name>Strategy name (required)Yes-
--destination <name>Destination name within the strategyNo-
--storage <name>Storage config name (rclone credentials)No-
--cron <expression>Cron schedule (e.g., "0 * * * *" for hourly)No-
--mode <mode>Backup mode: "hot" (zero downtime) or "cold" (stop, snapshot, restart)No-
--bwlimit <limit>Rclone bandwidth limit (e.g., "6M", "10M:off", "08:00,3M;22:00,10M")No-
--include <repos>Only back up these repos (comma-separated names)No-
--exclude <repos>Exclude these repos from backup (comma-separated names)No-
--folder <path>Subfolder under the storage bucket for this destination (e.g. hot, cold)No-
--enableEnable the strategy or destinationNo-
--disableDisable the strategy or destinationNo-

remove

Remove a backup strategy or destination

rdc config backup-strategy remove [options]
FlagDescriptionRequiredDefault
--name <name>Strategy name (required)Yes-
--destination <name>Remove only this destination (keeps other destinations)No-

list

List all backup strategies

rdc config backup-strategy list

show

Show backup strategy details

rdc config backup-strategy show [options]
FlagDescriptionRequiredDefault
--name <name>Strategy name (shows all if omitted)No-

3. Datastore Management

Low-level block storage management for machine datastores (Ceph RBD or local BTRFS). Typically only needed during initial machine setup or cross-machine migration. Key subcommands: init (create datastore), status (health/usage), fork (clone datastore to another machine), unfork (restore from snapshot).

3.1 init

Initialize datastore on a machine (local loop-backed or Ceph RBD)

rdc datastore init [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine name (where the Ceph datastore is hosted)Yes-
--size <size>Datastore size (e.g., 5G, 50G, 100G)Yes-
--backend <type>Backend type: local (default) or cephNolocal
--pool <name>Ceph pool name (default: from machine config, or rbd)Norbd
--image <name>Ceph RBD image name (default: from machine config via set-ceph)No-
--cluster <name>Ceph cluster name (default: ceph)Noceph
--forceForce initialization even if datastore already exists (WARNING: reformats storage)No-
--debugEnable debug outputNo-

3.2 fork

Create a local COW copy of a Ceph datastore via RBD snapshot + clone (< 2s). Save snapshot/clone names from output for unfork. Only one fork per target name; unfork before re-forking

rdc datastore fork [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine name (where the Ceph datastore is hosted)Yes-
--to <name>Clone suffix (creates clone named <image>-fork-<name>). The fork stays on the source machineYes-
--cow-size <size>COW backing file size (default: auto, grows on demand)No-
--debugEnable debug outputNo-

3.3 unfork

Clean up a fork: unmount COW, remove clone, remove snapshot

rdc datastore unfork [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine name (where the Ceph datastore is hosted)Yes-
--source <image>Original RBD image that was forked (from config set-ceph --image, e.g. ds-prod)Yes-
--snapshot <name>Snapshot to remove (the "Snapshot:" value from fork output, e.g. fork-<timestamp>)Yes-
--dest <image>Clone image to remove (the "Clone:" value from fork output, e.g. ds-prod-fork-<machine>)Yes-
--pool <name>Ceph pool name (default: from machine config)No-
--mount-point <path>Fork mount point to unmount (default: /mnt/rediacc)No-
--forceContinue cleanup even if individual steps fail (e.g. unmount, snapshot removal)No-
--debugEnable debug outputNo-

3.4 status

Show datastore backend, size, usage, mount status, and cow_mode (if forked)

rdc datastore status [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine name (where the Ceph datastore is hosted)Yes-
--debugEnable debug outputNo-

4. Machine Management

Inspect remote machine state: system resources, running containers, systemd services, deployed repositories, and health diagnostics. Read-only queries — to modify repos use `repo`. Key subcommands: query (full status with --system, --containers, --repositories, --services filters), list, create, rename, delete, prune.

4.1 list

List machines

rdc machine list [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
--search <text>Search in {{field}}No-
--sort <field>Sort by fieldNo-
--descSort in descending orderNo-

4.2 create

Create a new machine

rdc machine create [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-
-b, --bridge <name>Bridge nameNo-
--vault <json>Machine vault data as JSON stringNo-

4.3 rename

Rename a machine

rdc machine rename [options]
FlagDescriptionRequiredDefault
--current-name <name>Current resource nameYes-
--new-name <name>New resource nameYes-
-t, --team <name>Team nameNo-

4.4 delete

Delete a machine

rdc machine delete [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-
-f, --forceSkip confirmation promptsNo-
--dry-runShow what would be done without making changesNo-

4.5 vault

Machine vault management (cloud adapter only)

rdc machine vault

4.6 vault-status

{{t:cli.commands.machine.vault-status.description}}

rdc machine vault-status [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-

4.7 update

Update machine configuration

rdc machine update

4.8 health

Check machine health for CI/CD pipelines

The health command outputs system metrics, container status, service stability, and storage information — useful for CI/CD pipeline checks.

rdc machine health [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-

4.9 containers

List containers on a machine with status, health, and domain routing. JSON includes full container details with repository resolved to name (original in repository_guid), domain, and autoRoute

rdc machine containers [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-
--health-checkHealth check mode - exits with code 2 if any unhealthyNo-

4.10 services

List rediacc-managed systemd services on a machine (name, state, sub-state, restart count, memory, repository resolved to name with original in repository_guid). Use --stability-check to exit with code 2 if any failed or restarting (for CI/CD)

rdc machine services [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-
--stability-checkStability check mode - exits with code 2 if any failed/restartingNo-

4.11 query

Show full machine status (infra, system, repos with name/guid, containers with repository/repository_guid/domain/autoRoute, services with repository/repository_guid)

rdc machine query [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--debugEnable debug outputNo-
--systemInclude system info onlyNo-
--repositoriesInclude repositories onlyNo-
--containersInclude containers onlyNo-
--servicesInclude services onlyNo-
--networkInclude network interfaces onlyNo-
--block-devicesInclude block devices onlyNo-
--licensesInclude repository license statusesNo-
--storage-healthShow BTRFS fragmentation and reflink savings per repositoryNo-
--sync-certsAlso pull the ACME cert cache from the machine after queryingNo-

4.12 vault-status

Show parsed vault status for a machine

rdc machine vault-status [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-

4.13 repos

List deployed repositories on a machine (name, GUID, size, mount status, Docker state, container count, disk usage, modified date, Rediaccfile present). JSON nests containers and services under each repo. Use --search to filter by name or GUID

rdc machine repos [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-
--search <text>Filter repositories by nameNo-

4.14 test-connection

Test SSH connection to a machine and capture host key

rdc machine test-connection [options]
FlagDescriptionRequiredDefault
--ip <address>Machine IP address or hostnameYes-
--user <name>SSH usernameYes-
-t, --team <name>Team nameNo-
-b, --bridge <name>Bridge nameNo-
--port <number>SSH portNo22
--password <pwd>SSH password for initial authenticationNo-
--datastore <path>Datastore path on machineNo/mnt/rediacc
-m, --machine <name>Machine name (for updating vault after test)No-
--saveSave known_hosts to machine vault after successful testNo-

Tip: Use `--save-known-hosts` to automatically persist the host key to the machine vault after a successful test.

4.15 provision

Provision a new machine on a cloud provider using OpenTofu

rdc machine provision [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--provider <name>Cloud provider name (from config provider add)Yes-
--region <region>Override default regionNo-
--type <type>Override default instance typeNo-
--image <image>Override default OS imageNo-
--ssh-user <user>SSH username for the new VM (default: root)No-
--base-domain <domain>Base domain for infrastructure (e.g., example.com). Implies --infraNo-
--no-infraSkip infrastructure configuration (proxy + DNS)No-
--debugEnable debug outputNo-

4.16 deprovision

Destroy a cloud-provisioned machine and remove from config

rdc machine deprovision [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--forceSkip confirmation promptNo-
--debugEnable debug outputNo-

4.17 backup

Machine backup management (schedule, trigger, status)

list

List backup strategies bound to all machines

rdc machine backup list

schedule

Deploy backup schedule to a remote machine (systemd timers)

rdc machine backup schedule [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--dry-runPreview generated units without deployingNo-
--forceProceed even if a backup is currently running (new unit applies on next tick; running invocation keeps its old unit)No-
--reset-failedClear failed state on touched services after a successful deploy (off by default, preserves failure signal)No-
--debugEnable debug outputNo-

now

Trigger a backup immediately on a remote machine

rdc machine backup now [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--strategy <name>Strategy name (triggers all if omitted)No-
--debugEnable debug outputNo-

status

Show backup status and timer state on a remote machine

rdc machine backup status [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--strategy <name>Show details for a specific strategyNo-
--debugEnable debug outputNo-

cancel

Cancel a running backup on a remote machine

rdc machine backup cancel [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-
--strategy <name>Strategy name (cancels all if omitted)No-
--debugEnable debug outputNo-

4.18 prune

Remove orphaned datastore resources and stale snapshots from a machine

rdc machine prune [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--dry-runShow what would be removed without making changesNo-
--orphaned-reposAlso prune repo images not in any configNo-
--forceSkip confirmation promptsNo-
--grace-days <days>Grace period in days for recently archived repos (default: 7)No-
--debugEnable debug outputNo-

5. MCP Server

Expose the CLI as a Model Context Protocol (MCP) server for integration with AI agents. The server wraps CLI commands as MCP tools with structured JSON input/output. Key subcommand: serve (start stdio-based MCP server).

5.1 serve

Start MCP server (stdio transport)

rdc mcp serve [options]
FlagDescriptionRequiredDefault
--config <name>Config name to use for all commandsNo-
--timeout <ms>Default command timeout in millisecondsNo120000
--allow-grandAllow destructive operations on grand (non-fork) repositories. Default: fork-only modeNo-

6. Repository Lifecycle

Deploy and manage encrypted repositories on machines. Key subcommands: create, up (deploy), down (stop), fork (instant CoW clone), delete, push/pull (backup), sync (file transfer). Lifecycle: repo create → repo up --mount → repo down. See Key Concepts in rdc --help for architecture, routing, and environment variable details.

6.1 mount

Mount a repository (decrypt and open the LUKS container, making the filesystem accessible). Needed on first deploy, after 'repo push' to a new machine, or after 'repo unmount'. Can also be done via 'repo up --mount'. The volume stays mounted until explicitly unmounted. Omit name to mount all repos on the machine

rdc repo mount [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-m, --machine <name>Target machine nameYes-
--checkpointRestore CRIU container checkpoint after mount (resume processes from saved memory state). Used after 'repo push --checkpoint' for live migrationNo-
--no-dockerSkip starting Docker daemon after mountNo-
--parallelStart repositories concurrentlyNo-
--concurrency <n>Max concurrent repositories (default: 3)No3
-y, --yesSkip confirmation for batch operationsNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.2 unmount

Unmount a repository (close the LUKS container, detaching the encrypted filesystem). Services must be stopped first ('repo down'). After unmount, repo data is inaccessible until remounted. Required before 'repo resize'. Omit name to unmount all repos on the machine

rdc repo unmount [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-m, --machine <name>Target machine nameYes-
--checkpointCreate CRIU container checkpoint before unmount (capture running process memory state for later restore)No-
--parallelStart repositories concurrentlyNo-
--concurrency <n>Max concurrent repositories (default: 3)No3
-y, --yesSkip confirmation for batch operationsNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.3 up

Deploy or update a repository (mount, run Rediaccfile up which calls renet compose). Proxy routes take ~3s to become active after deploy. Prints the URL pattern for HTTP-exposed services (rediacc.service_port label) on completion. Use --mount for first deploy or forked repos. CRIU checkpoint restore is auto-detected — use --skip-checkpoint to force fresh start. Omit name to deploy all repos on the machine

rdc repo up [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-m, --machine <name>Target machine nameYes-
--skip-checkpointSkip CRIU checkpoint restore even if checkpoint data exists (force fresh start)No-
--tlsRequest dedicated TLS cert for this repo (forks use shared machine cert by default)No-
--include-forksAlso mount/start forked repositoriesNo-
--mount-onlyOnly mount, don't start servicesNo-
--parallelStart repositories concurrentlyNo-
--concurrency <n>Max concurrent repositories (default: 3)No3
-y, --yesSkip confirmation for batch operationsNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-
--dry-runShow what would be done without making changesNo-

6.4 up-all

Deploy all repositories on a machine

rdc repo up-all

6.5 down

Stop repository Docker containers (runs Rediaccfile down via renet compose). Does NOT unmount the encrypted volume -- the repo stays mounted and can be restarted with 'repo up'. Use --unmount to also close the LUKS container after stopping. Use --checkpoint to save CRIU process state before stopping (next 'repo up' auto-restores). Omit name to stop all repos on the machine

rdc repo down [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-m, --machine <name>Target machine nameYes-
--unmountAlso unmount (close LUKS container) after stopping. Equivalent to 'repo down' then 'repo unmount'. Required before 'repo resize' or to fully secure the volumeNo-
--checkpointCreate CRIU checkpoint before stopping (save process memory state for later restore via 'repo up')No-
-y, --yesSkip confirmation for batch operationsNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-
--dry-runShow what would be done without making changesNo-

6.6 status

Get repository status (mount state, Docker daemon running, container count, disk usage)

rdc repo status [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.7 list

List repositories on a machine

rdc repo list [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Target machine nameYes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.8 create

Create a new encrypted repository

rdc repo create [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--size <size>Repository size (e.g., 10G, 100G, 1T)Yes-
--no-dockerSkip starting Docker daemon after creationNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.9 delete

Delete a repository (destroys containers, volumes, and encrypted image). Config entry is preserved. Use --archive-config to move credentials to deletedRepositories for recovery via 'config restore-archived'

rdc repo delete [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--archive-configMove config entry to deletedRepositories for later recoveryNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-
--dry-runShow what would be done without making changesNo-

6.10 fork

Create a CoW (Copy-on-Write) fork of a repository. FORK IS NEAR-INSTANT AND CONSTANT-TIME regardless of repo size, BTRFS reflink clones the underlying image so a 100 GB repo and a 1 GB repo fork in the same ~seconds. The fork gets a NEW GUID, networkId, IP range, and auto-route domain ({service}-fork-{tag}.{repo}.{machine}.{baseDomain}) and is a fully independent copy. Online forking is supported, the parent can remain running. Fork inherits the parent's encryption credentials automatically. Use --checkpoint to capture CRIU process state before forking, the fork will auto-restore on first 'repo up' (in-memory state preserved). CROSS-MACHINE FORK: To fork to another machine, first fork locally, then transfer: (1) repo fork --parent <parent> -m <source> --tag <name>, (2) backup push <name> -m <source> --to-machine <target>, (3) repo up <name> -m <target> --mount. WARNING: Do NOT use 'backup push' alone for forking, it creates a raw copy with the SAME GUID (not an independent fork). Always fork first to get a new identity. Auto-routes use the repo name so each fork gets a unique domain automatically.

rdc repo fork [options]
FlagDescriptionRequiredDefault
--parent <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--tag <name>Tag for the fork (creates name:tag)Yes-
--checkpointCreate CRIU checkpoint on source before forking (capture process memory state for restore on fork)No-
--upMount and start services after forking (fork + mount + up in one command)No-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.11 takeover

Replace grand repo's data with a fork's data. The grand keeps its identity (GUID, networkId, domains, autostart, backup chain) but gets the fork's upgraded data. The old production data is preserved as a backup fork. Use for: test upgrade on fork → verify → takeover to production.

rdc repo takeover [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--forceSkip modification warningsNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.12 resize

Resize a repository offline (supports both grow and shrink). Repo must be unmounted first ('repo down --unmount'). For zero-downtime growth without stopping, use 'repo expand' instead

rdc repo resize [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--size <size>New repository size (e.g., 10G, 100G, 1T)Yes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.13 expand

Expand a mounted repository online (zero downtime, grow-only). Grows the LUKS container and filesystem while containers keep running. Cannot shrink -- use 'repo resize' for that (requires unmount)

rdc repo expand [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--size <size>New repository size (e.g., 10G, 100G, 1T)Yes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.14 validate

Validate repository integrity (LUKS container, filesystem consistency, configuration). Use after unexpected shutdowns or to verify backup health

rdc repo validate [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.15 autostart

Manage automatic repository startup on boot

enable

Enable autostart for a repository (omit name to enable all)

rdc repo autostart enable [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-m, --machine <name>Target machine nameYes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

disable

Disable autostart for a repository (omit name to disable all)

rdc repo autostart disable [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
-m, --machine <name>Target machine nameYes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

list

List repositories with autostart enabled

rdc repo autostart list [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Target machine nameYes-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.16 ownership

Change repository directory ownership UID on the mounted volume (default: 7111). Use when containers need a specific UID to access repo files

rdc repo ownership [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
--uid <uid>Owner UID (default: 7111)No-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.17 template

Manage and apply deployment templates (writes docker-compose.yml, Rediaccfile, and additional files). Rediaccfile must use 'renet compose' (not 'docker compose'). Restart policies are safe (auto-managed by renet watchdog). Renet auto-injects network_mode:host, CRIU capabilities, and rediacc labels. Dangerous settings (privileged, pid:host) blocked unless --unsafe. Use 'list' to see available built-in templates, 'apply' to deploy one to a repository

list

List all embedded deployment templates shipped with the CLI

rdc repo template list

apply

Apply a template to a repository. Use a built-in template name (e.g. app-postgres) or --file for a custom JSON template. Rediaccfile lifecycle: up() starts containers (pull images, generate configs here), down() stops. Minimal Rediaccfile: up() { renet compose -- pull; renet compose -- up -d; } down() { renet compose -- down; }. IMPORTANT: Rediaccfile MUST use 'renet compose' — 'docker compose' is rejected. ENV VARS — two levels: (a) Rediaccfile shell: ${SVCNAME_IP} (e.g. APP_IP), ${REDIACC_WORKING_DIR}, ${REDIACC_NETWORK_ID}. (b) Inside containers: renet auto-injects SERVICE_IP and REDIACC_NETWORK_ID env vars. eBPF bind rewriting handles IP isolation transparently, so apps can bind to 0.0.0.0 and the kernel rewrites it to the correct loopback IP. Health checks can use localhost. network_mode:host is injected and ports: are ignored. STORAGE: Both ${REDIACC_WORKING_DIR}/... bind mounts and Docker named volumes are safe — Docker data-root is inside the encrypted LUKS mount. RESTART POLICY: Restart policies are safe — renet auto-strips them for CRIU compatibility and the watchdog handles recovery. Compose: do NOT add network_mode or rediacc.* labels (renet injects them). Multi-project: place each sub-project in its own subdirectory with its own Rediaccfile — renet auto-discovers and runs them in order. HTTPS routing: (A) Auto-route (fork-friendly, recommended): do NOT add traefik.enable. Renet auto-generates https://{serviceName}.{repoName}.{machineName}.{baseDomain}. Add rediacc.service_port=<port> label for non-80 ports. Each fork gets a unique domain. (B) Traefik labels (custom domain, NOT fork-friendly): traefik.enable=true, traefik.http.routers.<n>.rule=Host(`domain`), traefik.http.routers.<n>.entrypoints=websecure,websecure-v6, traefik.http.routers.<n>.tls.certresolver=letsencrypt, traefik.http.services.<n>.loadbalancer.server.port=<port>. For TCP/UDP: rediacc.tcp_ports=3306 / rediacc.udp_ports=53

rdc repo template apply [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Target machine nameYes-
-r, --repository <name>Repository name (connects to repository environment)Yes-
--file <path>Path to custom template JSON file ({"version":"2","files":{"Rediaccfile":"...","docker-compose.yml":"..."}}) — overrides the built-in template nameNo-
--grand <name>Parent credential repository (auto-resolves name to GUID). Only for repos sharing secrets with a parentNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.18 push

Push repository to a remote (machine or storage). Omit name to push all repos. The target type is auto-detected from config. For machine-to-machine transfer, the encrypted repo image is copied with the SAME GUID — this is a backup/migration, not a fork. To create an independent fork, use 'repo fork' first, then push. Use --up to deploy after push

rdc repo push [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
--to <remote>Destination machine or storage name (auto-detected from config)No-
--to-machine <machine>No-
--provision <provider>Auto-provision target machine via cloud provider if it doesn't existNo-
--checkpointCreate CRIU checkpoint before backup (captures process memory state for live migration)No-
--forceForce overwrite existing backupNo-
--upAfter push, mount and deploy repository on target machineNo-
--tag <tag>Deployment tag for versioningNo-
-m, --machine <name>Machine nameYes-
-w, --watchWatch for changesNo-
--parallelStart repositories concurrentlyNo-
--concurrency <n>Max concurrent repositories (default: 3)No3
-y, --yesSkip confirmation for batch operationsNo-
--bwlimit <limit>Bandwidth limit for rsync transfer (e.g., "6M", "10M")No-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.19 pull

Pull repository from a remote (machine or storage). Omit name to pull all repos. The source type is auto-detected from config. Use --up to deploy after pull

rdc repo pull [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameNo-
--from <remote>Source machine or storage name (auto-detected from config)No-
--from-machine <machine>No-
--forceForce overwrite existing repositoryNo-
--upAfter pull, mount and deploy repository on this machineNo-
-m, --machine <name>Machine nameYes-
-w, --watchWatch for changesNo-
--parallelStart repositories concurrentlyNo-
--concurrency <n>Max concurrent repositories (default: 3)No3
-y, --yesSkip confirmation for batch operationsNo-
--bwlimit <limit>Bandwidth limit for rsync transfer (e.g., "6M", "10M")No-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.20 migrate

Live-migrate a repository from one machine to another with minimal downtime. Two-phase rsync: bulk transfer while running, then brief stop for delta sync. Supports CRIU checkpoint for process memory migration and auto-provisioning of target machines

rdc repo migrate [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--from <machine>Source machine nameYes-
--to <machine>Target machine nameYes-
--provision <provider>Auto-provision target via cloud provider (e.g., hetzner, linode)No-
--bwlimit <limit>Bandwidth limit for rsync transfer (e.g., 10M)No-
--checkpointCRIU live migration: capture and restore process memory stateNo-
--skip-dnsSkip DNS record switching after migrationNo-
--debugEnable debug outputNo-

6.21 backup

Manage repository backups

list

List available backups on a remote (machine or storage)

rdc repo backup list [options]
FlagDescriptionRequiredDefault
--from <remote>Source machine or storage name (auto-detected from config)No-
--from-machine <machine>No-
-m, --machine <name>Machine nameYes-
-w, --watchWatch for changesNo-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

6.22 sync

Sync repositories and files (bulk push/pull, file transfer)

push

Push repositories to cloud storage (omit name to push all)

rdc repo sync push

pull

Pull repositories from cloud storage (omit name to pull all)

rdc repo sync pull

upload

Upload files to a repository via rsync over SSH (delta transfer). Use --mirror to delete extra remote files, --dry-run to preview, --exclude to skip patterns

rdc repo sync upload [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
-m, --machine <name>Machine nameYes-
-r, --repository <name>Repository name (connects to repository environment)No-
--local <paths...>One or more local file or directory paths (default: current directory)No-
--remote <path>Remote subdirectory path within repositoryNo-
--remote-file <path>Single remote file path (relative to repo root) to upload to. Mutually exclusive with --remote.No-
--mirrorMirror mode - delete remote files not present locallyNo-
--verifyVerify files using checksums after syncNo-
--confirmPreview changes and ask for confirmation before syncingNo-
--exclude <patterns...>Patterns to exclude from syncNo-
--dry-runShow what would be done without making changesNo-

download

Download files from a repository via rsync over SSH (delta transfer). Use --mirror to delete extra local files, --dry-run to preview, --exclude to skip patterns

rdc repo sync download [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
-m, --machine <name>Machine nameYes-
-r, --repository <name>Repository name (connects to repository environment)No-
--local <path>Local directory path (default: current directory)No-
--remote <path>Remote subdirectory path within repositoryNo-
--remote-file <path>Remote file path within repository (alternative to --remote for single-file transfers)No-
--mirrorMirror mode - delete local files not present on remoteNo-
--verifyVerify files using checksums after syncNo-
--confirmPreview changes and ask for confirmation before syncingNo-
--exclude <patterns...>Patterns to exclude from syncNo-
--dry-runShow what would be done without making changesNo-

status

Dry-run comparison of local and remote files (shows what would be transferred without actually transferring)

rdc repo sync status [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
-m, --machine <name>Machine nameYes-
-r, --repository <name>Repository name (connects to repository environment)No-
--local <path>Local directory path (default: current directory)No-
--remote <path>Remote subdirectory path within repositoryNo-
--remote-file <path>Remote file path within repository (alternative to --remote for single-file transfers)No-

6.23 snapshot

Manage BTRFS snapshots on remote machines

create

Create a point-in-time BTRFS snapshot of a repository (instant, no downtime). Use --snapshot-name for a custom name

rdc repo snapshot create

list

List BTRFS snapshots on a remote machine with name, creation date, and size

rdc repo snapshot list

delete

Delete a snapshot from a remote machine

rdc repo snapshot delete

6.24 tunnel

Create an SSH port-forward tunnel to a container's port on a remote machine. Auto-detects container and port when unambiguous. The tunnel stays open until you press Ctrl+C

rdc repo tunnel [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameNo-
-r, --repository <name>Repository name (connects to repository environment)No-
-c, --container <name>Container name (auto-detected if only one running)No-
--port <port>Remote container port to forwardNo-
--local <port>Local port (defaults to same as remote port)No-

7. Storage Management

Manage remote backup storage providers (S3, rclone-compatible). CRUD operations (list, create, rename, delete), vault configuration, browse remote files, and prune orphaned backups.

7.1 list

List storage providers

rdc storage list [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
--search <text>Search in {{field}}No-
--sort <field>Sort by fieldNo-
--descSort in descending orderNo-

7.2 create

Create a new storage provider

rdc storage create [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-

7.3 rename

Rename a storage provider

rdc storage rename [options]
FlagDescriptionRequiredDefault
--current-name <name>Current resource nameYes-
--new-name <name>New resource nameYes-
-t, --team <name>Team nameNo-

7.4 delete

Delete a storage provider

rdc storage delete [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-t, --team <name>Team nameNo-
-f, --forceSkip confirmation promptsNo-
--dry-runShow what would be done without making changesNo-

7.5 vault

Storage vault management (cloud adapter only)

rdc storage vault

7.6 browse

Browse files in a storage system

rdc storage browse [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
--path <subpath>Subdirectory path to listNo

7.7 prune

Delete orphaned backups from storage that are no longer in any config. Multi-config safe with grace period protection.

rdc storage prune [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Machine nameYes-
--dry-runShow what would be done without making changesNo-
--forceSkip confirmation promptsNo-
--grace-days <days>Grace period in days for recently archived repos (default: 7)No-
--debugEnable debug outputNo-
--skip-router-restartSkip restarting the route server after binary updateNo-

7.8 pull

Pull a backup from cloud storage to a machine

rdc storage pull

8. VS Code Integration

Open VS Code with Remote SSH to a machine or repository with sandboxed per-repo environment. Same SSH connection as `term` but launches VS Code instead. Key subcommands: connect (or positional shorthand), list (show configured connections), cleanup (remove SSH config entries), check (verify VS Code installation).

8.1 connect

Connect to a machine or repository in VS Code

rdc vscode connect [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
-m, --machine <name>Machine nameNo-
-r, --repository <name>Repository name (connects to repository environment)No-
-f, --folder <path>Remote folder path to openNo-
--url-onlyPrint the VS Code URI instead of launchingNo-
-n, --new-windowOpen in new VS Code windowNo-
--skip-env-setupSkip remote environment setupNo-
--insidersUse VS Code Insiders settingsNo-

8.2 list

List configured VS Code SSH connections

rdc vscode list

8.3 cleanup

Remove VS Code SSH configurations

rdc vscode cleanup [options]
FlagDescriptionRequiredDefault
--allRemove all rediacc SSH configurationsNo-
-c, --connection <name>Remove specific connectionNo-

8.4 check

Check VS Code installation and configuration

rdc vscode check [options]
FlagDescriptionRequiredDefault
--insidersUse VS Code Insiders settingsNo-

9. SSH Terminal Access

Open an SSH terminal to a machine or repository context. Sets up DOCKER_HOST, working directory, and environment automatically. Supports container actions via --container: logs, exec, stats, terminal. Use `-c` to run a single command non-interactively. For VS Code, use `vscode` instead.

9.1 connect

Connect to a machine or repository via SSH

rdc term connect [options]
FlagDescriptionRequiredDefault
-t, --team <name>Team nameNo-
-m, --machine <name>Machine nameNo-
-r, --repository <name>Repository name (connects to repository environment)No-
-c, --command <cmd>Execute a command instead of interactive shellNo-
--container <id>Connect to a specific Docker containerNo-
--container-action <action>Container action: terminal, logs, stats, execNo-
--log-lines <lines>Number of log lines to show (default: 50)No-
--followFollow logs outputNo-
--externalForce launching in external terminal windowNo-
--reset-homeReset per-repo home overlay for a fresh startNo-

10. Protocol Handler

Register and handle {{scheme}}:// protocol URLs

10.1 register

Register the protocol handler on the system

rdc protocol register [options]
FlagDescriptionRequiredDefault
--systemRegister system-wide (requires admin privileges)No-
--forceForce re-registration even if already registeredNo-

10.2 unregister

Unregister the protocol handler from the system

rdc protocol unregister [options]
FlagDescriptionRequiredDefault
--systemUnregister system-wide registration (requires admin privileges)No-

10.3 status

Show protocol handler registration status

rdc protocol status

10.4 open

Open a {{scheme}}:// URL and execute the action

rdc protocol open <url>

10.5 build

Build a {{scheme}}:// URL from components

rdc protocol build [options]
FlagDescriptionRequiredDefault
--token <token>Authentication tokenYes-
-t, --team <name>Team nameYes-
-m, --machine <name>Machine nameYes-
-r, --repository <name>Repository name (connects to repository environment)No-
-a, --action <action>Action ({{actions}})Nodesktop
-p, --params <key=value...>Additional parametersNo-

10.6 parse

Parse a {{scheme}}:// URL and show components

rdc protocol parse <url>

11. Quick Commands (Shortcuts)

11.1 run

WARNING: Low-level command for debugging and experimentation only. Not for production use. Use higher-level commands (repo up, repo down, etc.) instead. Runs a raw bridge function on a machine.

rdc run

11.2 trace

Trace a task (shortcut for: queue trace)

rdc trace

11.3 cancel

Cancel a task (shortcut for: queue cancel)

rdc cancel

11.4 retry

Retry a failed task (shortcut for: queue retry)

rdc retry

12. Subscription Management

Manage licensing and subscription tokens. Key subcommands: login (authenticate with subscription portal), status (show current license state), activation (machine slot status), repo (manage per-repo licenses).

12.1 login

Authenticate via browser or API token

rdc subscription login [options]
FlagDescriptionRequiredDefault
-t, --token <token>API token (rdt_...)No-
--server <url>Account server URLNo-

12.2 logout

Clear stored subscription token

rdc subscription logout

12.3 status

Show subscription, machine slots, and repo license status

rdc subscription status

12.4 activation

Machine slot management

status

Show machine slot status for one machine

rdc subscription activation status [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-

12.5 repo

Repo license management

status

Show installed repo licenses on a machine

rdc subscription repo status [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-

12.6 refresh

Refresh repo licenses on a remote machine

activation

Refresh repo licenses on a remote machine

rdc subscription refresh activation [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-

repos

Batch-refresh repo licenses on a remote machine

rdc subscription refresh repos [options]
FlagDescriptionRequiredDefault
-m, --machine <name>Machine nameYes-

repo

Refresh the repo license for a specific repository

rdc subscription refresh repo [options]
FlagDescriptionRequiredDefault
--name <name>Resource nameYes-
-m, --machine <name>Machine nameYes-

13. CLI Updates

Check for new CLI versions and apply updates. Supports --check-only to check without installing, and --force to update even if already on the latest version.

rdc update [options]
FlagDescriptionRequiredDefault
--forceForce update even if already up-to-dateNo-
--check-onlyOnly check for updates without downloadingNo-
--rollbackRollback to the previous versionNo-
--statusShow auto-update status and diagnosticsNo-
--channel <channel>Set release channel (stable or edge)No-

14. System Diagnostics

Run diagnostic checks on the CLI environment: Node.js version, renet binary availability, config file validity, SSH key status, and network connectivity. Outputs a structured health report with pass/fail indicators.

rdc doctor

15. Experimental VM Operations

Local VM provisioning and management using KVM/QEMU/Hyper-V (platform auto-detected). Not for remote machines — use `machine` for those. Key subcommands: up (start VMs), down (stop), status (list running VMs), ssh (connect to VM), setup (install prerequisites), check (verify host readiness).

15.1 up

Provision VM cluster locally

rdc ops up [options]
FlagDescriptionRequiredDefault
--forceForce restart all VMsNo-
--parallelCreate VMs in parallelNo-
--basicMinimal cluster (bridge + 1 worker)No-
--liteSkip VM provisioning (status only)No-
--skip-orchestrationSkip cluster orchestrationNo-
--backend <backend>Virtualization backend (kvm|qemu, auto-detected)No-
--os <name>VM operating system (e.g., ubuntu-24.04, debian-13)No-
--debugEnable debug outputNo-

15.2 down

Destroy VM cluster

rdc ops down [options]
FlagDescriptionRequiredDefault
--backend <backend>Virtualization backend (kvm|qemu, auto-detected)No-
--debugEnable debug outputNo-

15.3 status

Show VM cluster status

rdc ops status [options]
FlagDescriptionRequiredDefault
--backend <backend>Virtualization backend (kvm|qemu, auto-detected)No-

15.4 ssh

SSH into a VM

rdc ops ssh [options]
FlagDescriptionRequiredDefault
--vm-id <id>Virtual machine IDYes-
-c, --command <cmd>Execute a command instead of interactive shellNo-
--backend <backend>Virtualization backend (kvm|qemu, auto-detected)No-
--user <user>SSH username for VM connectionNo-

15.5 setup

Install virtualization prerequisites

rdc ops setup [options]
FlagDescriptionRequiredDefault
--debugEnable debug outputNo-

15.6 check

Verify virtualization prerequisites

rdc ops check

Common Error Messages

When something goes wrong, the CLI provides clear error messages:

ErrorMeaning
Authentication required. Run: rdc auth loginYou need to log in first
No active config. Create one with: rdc config init --name <name>No config is active — create one with `rdc config init`
Permission deniedYour account lacks the required permissions
Machine name required. Use --machine <name>Specify a machine with `--machine` or set a config default
Team name required. Use --team or set default with: rdc config set --key team --value <name>Specify a team with `--team` or set a config default
Region name required. Use --region or set default with: rdc config set --key region --value <name>Specify a region with `--region` or set a config default

Output Formats

All list/get commands support multiple output formats via `--output`:

rdc machine list --output json
rdc machine list --output yaml
rdc machine list --output csv
rdc machine list --output table   # default

This makes it easy to integrate Rediacc CLI into scripts, CI/CD pipelines, and automation workflows.