Skip to main content
The Runloop CLI (rli) provides both an interactive terminal UI and traditional CLI commands for managing your Runloop resources.

Installation

npm install -g @runloop/rl-cli

Setup

Configure your API key:
export RUNLOOP_API_KEY=your_api_key_here
Get your API key from runloop.ai/settings

Quick Start

Launch the interactive UI with a beautiful terminal interface:
rli
Navigate with arrow keys, select with Enter, and manage all your resources visually.
Runloop CLI Interactive Mode

Search Devboxes

Press / to search and filter through your devboxes by name or ID.
Search devboxes in interactive mode

SSH to Devbox

From the interactive menu, select a devbox and choose SSH to open a secure shell session directly into your devbox. The CLI handles all the SSH key setup and connection details automatically.
SSH into a Devbox

Command Groups

Command Reference

Devbox Commands

Create a new devbox
rli devbox create
name
string
Devbox name
template
string
Snapshot ID to use (alias: —snapshot)
snapshot
string
Snapshot ID to use
blueprint
string
Blueprint name or ID to use
resources
string
Resource size (X_SMALL, SMALL, MEDIUM, LARGE, X_LARGE, XX_LARGE)
architecture
string
Architecture (arm64, x86_64)
entrypoint
string
Entrypoint command to run
launch-commands
string[]
Initialization commands to run on startup
env-vars
string[]
Environment variables (format: KEY=value)
secrets
string[]
Secrets to inject as environment variables (format: ENV_VAR=SECRET_NAME)
code-mounts
string[]
Code mount configurations (JSON format)
idle-time
string
Idle time in seconds before idle action
idle-action
string
Action on idle (shutdown, suspend)
available-ports
string[]
Available ports
root
boolean
Run as root
user
string
Run as this user (format: username:uid)
network-policy
string
Network policy ID to apply
List all devboxes
rli devbox list
status
string
Filter by status (initializing, running, suspending, suspended, resuming, failure, shutdown)
limit
string
default:"20"
Max results
Shutdown a devbox
rli devbox delete <id>
Execute a command in a devbox
rli devbox exec <id> <command...>
shell-name
string
Shell name to use (optional)
Upload a file to a devbox
rli devbox upload <id> <file>
path
string
Target path in devbox
Get devbox details
rli devbox get <id>
Suspend a devbox
rli devbox suspend <id>
Resume a suspended devbox
rli devbox resume <id>
Shutdown a devbox
rli devbox shutdown <id>
SSH into a devbox
rli devbox ssh <id>
config-only
boolean
Print SSH config only
no-wait
boolean
Do not wait for devbox to be ready
timeout
string
default:"180"
Timeout in seconds to wait for readiness
poll-interval
string
default:"3"
Polling interval in seconds while waiting
Copy files to/from a devbox using scp
rli devbox scp <id> <src> <dst>
scp-options
string
Additional scp options (quoted)
Sync files to/from a devbox using rsync
rli devbox rsync <id> <src> <dst>
rsync-options
string
Additional rsync options (quoted)
Create a port-forwarding tunnel to a devbox
rli devbox tunnel <id> <ports>
open
boolean
Open the tunnel URL in browser automatically
Read a file from a devbox using the API
rli devbox read <id>
remote
string
Remote file path to read from the devbox
Write a file to a devbox using the API
rli devbox write <id>
input
string
Local file path to read contents from
remote
string
Remote file path to write to on the devbox
Download a file from a devbox
rli devbox download <id>
file-path
string
Path to the file in the devbox
Execute a command asynchronously on a devbox
rli devbox exec-async <id> <command...>
shell-name
string
Shell name to use (optional)
Get status of an async execution
rli devbox get-async <id> <execution-id>
Send stdin to a running async execution
rli devbox send-stdin <id> <execution-id>
text
string
Text content to send to stdin
signal
string
Signal to send (EOF, INTERRUPT)
View devbox logs
rli devbox logs <id>

Snapshot Commands

List all snapshots
rli snapshot list
devbox
string
Filter by devbox ID
Create a snapshot of a devbox
rli snapshot create <devbox-id>
name
string
Snapshot name
Delete a snapshot
rli snapshot delete <id>
Get snapshot details
rli snapshot get <id>
Get snapshot operation status
rli snapshot status <snapshot-id>

Blueprint Commands

List all blueprints
rli blueprint list
name
string
Filter by blueprint name
Create a new blueprint
rli blueprint create
name
string
required
Blueprint name (required)
dockerfile
string
Dockerfile contents
dockerfile-path
string
Dockerfile path
system-setup-commands
string[]
System setup commands
resources
string
Resource size (X_SMALL, SMALL, MEDIUM, LARGE, X_LARGE, XX_LARGE)
architecture
string
Architecture (arm64, x86_64)
available-ports
string[]
Available ports
root
boolean
Run as root
user
string
Run as this user (format: username:uid)
Get blueprint details by name or ID (IDs start with bpt_)
rli blueprint get <name-or-id>
Get blueprint build logs by name or ID (IDs start with bpt_)
rli blueprint logs <name-or-id>
Delete old blueprint builds, keeping only recent successful ones
rli blueprint prune <name>
dry-run
boolean
Show what would be deleted without actually deleting
yes
boolean
Skip confirmation prompt
keep
string
default:"1"
Number of successful builds to keep
Create a blueprint from a Dockerfile with build context support
rli blueprint from-dockerfile
name
string
required
Blueprint name (required)
build-context
string
Build context directory (default: current directory)
dockerfile
string
Dockerfile path (default: Dockerfile in build context)
system-setup-commands
string[]
System setup commands
resources
string
Resource size (X_SMALL, SMALL, MEDIUM, LARGE, X_LARGE, XX_LARGE)
architecture
string
Architecture (arm64, x86_64)
available-ports
string[]
Available ports
root
boolean
Run as root
user
string
Run as this user (format: username:uid)
ttl
string
TTL in seconds for the build context object (default: 3600)

Object Commands

List objects
rli object list
limit
string
default:"20"
Max results
starting-after
string
Starting point for pagination
name
string
Filter by name (partial match supported)
content-type
string
Filter by content type
state
string
Filter by state (UPLOADING, READ_ONLY, DELETED)
Search by object ID or name
public
boolean
List public objects only
Get object details
rli object get <id>
Download object to local file
rli object download <id> <path>
extract
boolean
Extract downloaded archive after download
duration-seconds
string
default:"3600"
Duration in seconds for the presigned URL validity
Upload a file as an object
rli object upload <path>
name
string
Object name (required)
content-type
string
Content type: unspecified|text|binary|gzip|tar|tgz
public
boolean
Make object publicly accessible
Delete an object (irreversible)
rli object delete <id>

Network-policy Commands

List network policies
rli network-policy list
limit
string
default:"20"
Max results
starting-after
string
Starting point for pagination
name
string
Filter by name
Get network policy details
rli network-policy get <id>
Create a new network policy
rli network-policy create
name
string
required
Policy name (required)
description
string
Policy description
allow-all
boolean
Allow all egress traffic
allow-devbox-to-devbox
boolean
Allow devbox-to-devbox communication
allowed-hostnames
string[]
List of allowed hostnames for egress
Delete a network policy
rli network-policy delete <id>

Secret Commands

Create a new secret. Value can be piped via stdin (e.g., echo ‘val’ | rli secret create name) or entered interactively with masked input for security.
rli secret create <name>
List all secrets
rli secret list
limit
string
default:"20"
Max results
Get secret metadata by name
rli secret get <name>
Update a secret value (value from stdin or secure prompt)
rli secret update <name>
Delete a secret
rli secret delete <name>
yes
boolean
Skip confirmation prompt

Mcp Commands

Start the MCP server
rli mcp start
http
boolean
Use HTTP/SSE transport instead of stdio
port
string
Port to listen on for HTTP mode (default: 3000)
Install Runloop MCP server configuration in Claude Desktop
rli mcp install

MCP Server (AI Integration)

The CLI includes a Model Context Protocol (MCP) server that allows AI assistants like Claude to interact with your devboxes.

Quick Setup for Claude Desktop

# Install MCP configuration
rli mcp install
After installation, restart Claude Desktop and ask Claude to “List my devboxes” or “Create a new devbox”.

Server Modes

rli mcp start
Standard input/output mode for Claude Desktop integration.

Output Formats

All commands support multiple output formats via the --output flag:
--output json
flag
JSON output for programmatic parsing
--output yaml
flag
YAML output for configuration files
--output text
flag
Plain text output for human readability
rli devbox list --output json
rli devbox list --output yaml
rli devbox list --output text

Contributing

The Runloop CLI is open-source. We welcome contributions!