cli.md

The Render CLI — Manage your Render resources from the command line.

Use the Render CLI to manage your Render services and datastores directly from your terminal:

![video]

Among many other capabilities, the CLI supports:

The CLI also supports non-interactive use in scripts and CI/CD.

Please submit bugs and feature requests on the CLI's public GitHub repository.

Setup

1. Install or Upgrade

Use any of the following methods to install the Render CLI or upgrade to the latest version:

Homebrew installation

Run the following commands:

brew update
brew install render

WinGet installation

Run the following command:

winget install render.cli

Installing with curl

Run the following command:

curl -fsSL https://raw.githubusercontent.com/render-oss/cli/refs/heads/main/bin/install.sh | sh

Direct download

  1. Open the CLI's GitHub releases page.
  2. Download the executable that corresponds to your system's architecture.

Building from source

We recommend building from source only if no other installation method works for your system.

  1. Install the Go programming language if you haven't already.

  2. Clone and build the CLI project with the following commands:

   git clone git@github.com:render-oss/cli.git
   cd cli
   go build -o render

After installation completes, open a new terminal tab and run render with no arguments to confirm.

2. Log in

The Render CLI uses a CLI token to authenticate with the Render platform. Generate a token with the following steps:

  1. Run the following command:
   render login

Your browser opens a confirmation page in the Render Dashboard.

  1. Click Authorize CLI.

The CLI saves the generated token to its local configuration file.

  1. When you see the success message in your browser, close the tab and return to your terminal.

  2. The CLI prompts you to set your active workspace.

You can switch workspaces at any time with render workspace set.

You're ready to go!

Common commands

This is not an exhaustive list of commands.


login

Opens your browser to authorize the Render CLI for your account. Authorizing generates a CLI token that's saved locally.

If the CLI already has a valid CLI token or API key, this command instead exits with a zero status.

workspaces

Lists the Render workspaces your account belongs to.

In non-interactive mode, set the output format with -o json, -o yaml, or -o text.

workspace set

Sets the CLI's active workspace. CLI commands always operate on the active workspace.

services

Lists all services and datastores in the active workspace. Select a service to perform actions like deploying, viewing logs, or opening an SSH/psql session.

services create

Creates a new service in the active workspace. This command only runs in non-interactive mode.

Provide a source for a new service (--repo or --image), or clone an existing service configuration with --from. For all available options, see the services create reference.

deploys list [SERVICE_ID]

Lists deploys for the specified service. Select a deploy to view its logs or open its details in the Render Dashboard.

If you don't provide a service ID in interactive mode, the CLI prompts you to select a service.

deploys create [SERVICE_ID]

Triggers a deploy for the specified service.

If you don't provide a service ID in interactive mode, the CLI prompts you to select a service.

In non-interactive mode, helpful options include:

psql [DATABASE_ID]

Opens a psql session to the specified Render Postgres database.

If you don't provide a database ID in interactive mode, the CLI prompts you to select a database.

In non-interactive mode, helpful options include:

# Single query, plaintext output
render psql my-database -c "SELECT NOW();" -o text

# Query results as JSON (e.g. for scripts or piping into jq)
render psql my-database -c "SELECT id, name FROM projects LIMIT 5;" -o json

# CSV output via psql passthrough
render psql my-database -c "SELECT id, email FROM users;" -o text -- --csv
ssh [SERVICE_ID]

Opens an SSH session to a running instance of the specified service.

If you don't provide a service ID in interactive mode, the CLI prompts you to select a service.

Use --ephemeral / -e to create and connect to an ephemeral, isolated shell instance instead of an existing running instance. Render does not run your service's start command for an ephemeral instance.

# Launch an ephemeral shell for a service
render ssh my-service --ephemeral

# Short flag
render ssh my-service -e
blueprints validate [BLUEPRINT_FILE]

Validates the structure of the specified render.yaml file for use with Render Blueprints. Exits with a non-zero status if the file fails validation.

If you don't provide a file path, the CLI defaults to ./render.yaml.

skills [install | update | remove | list]

Manages Render agent skills for AI coding tools such as Claude Code, Codex, OpenCode, and Cursor. Run skills with no subcommand to open an interactive menu.

See Using Render with Coding Agents for details on available skills and installation options.


Non-interactive mode

By default, the Render CLI uses interactive, menu-based navigation. This default is great for manual use, but not for scripting or automation.

Configure the CLI for non-interactive use in CI/CD and other automated environments with the following steps:

1. Authenticate via API key

The Render CLI can authenticate using an API key instead of render login. Unlike CLI tokens, API keys do not periodically expire. For security, use this authentication method only for automated environments.

  1. Generate an API key with these steps.

  2. In your automation's environment, set the RENDER_API_KEY environment variable to your API key:

   export RENDER_API_KEY=rnd_RUExip…

If you provide an API key this way, it always takes precedence over CLI tokens you generate with render login.

2. Set non-interactive command options

Set the following options for all commands you run in non-interactive mode:


-o / --output

Sets the output format. Supported values are json, yaml, text, and interactive (default for TTY environments).

In non-TTY environments (including piped output), the CLI defaults to text output. The order of precedence for specifying output format is:

  1. The value of a command's --output / -o flag
  2. The value of the RENDER_OUTPUT environment variable
  3. Auto-detection based on TTY/CI signals
--confirm

Skips any confirmation prompts that the command would otherwise display.


For example, to list the active workspace's services in JSON format:

render services --output json --confirm

You can also set the output format globally with the RENDER_OUTPUT environment variable:

# Set default output format for all commands
export RENDER_OUTPUT=json

# Override default per command
render services list -o yaml

Example: GitHub Actions

This example action provides similar functionality to Render's automatic Git deploys. You could disable auto-deploys and customize this action to trigger deploys with different conditions.

To use this action, first set the following secrets in your repository:

Secret Description
RENDER_API_KEY A valid Render API key
RENDER_SERVICE_ID The ID of the service you want to deploy
name: Render CLI Deploy
run-name: Deploying via Render CLI
# Run this workflow when code is pushed to the main branch.
on:
  push:
    branches:
      - main
jobs:
  Deploy-Render:
    runs-on: ubuntu-latest
    steps:
      # Downloads the Render CLI binary and adds it to the PATH.
      - name: Install Render CLI
        run: |
          curl -L https://github.com/render-oss/cli/releases/download/v1.1.0/cli_1.1.0_linux_amd64.zip -o render.zip
          unzip render.zip
          sudo mv cli_v1.1.0 /usr/local/bin/render
      - name: Trigger deploy with Render CLI
        env:
          # The CLI can authenticate via a Render API key without logging in.
          RENDER_API_KEY: ${{ secrets.RENDER_API_KEY }}
          CI: true
        run: |
          render deploys create ${{ secrets.RENDER_SERVICE_ID }} --output json --confirm

Local directory

The Render CLI creates a local directory for storing files:

$HOME/.render/

This directory contains:

You can change the directory where the Render CLI stores state/ and cli.yaml by setting the RENDER_CLI_CONFIG_DIR environment variable:

export RENDER_CLI_CONFIG_DIR=/path/to/directory

This setting does not affect skills.yaml, which stays in $HOME/.render/.

Usage telemetry

The Render CLI enables usage telemetry by default in version 2.26.0 and later.

The Render CLI collects usage telemetry to help us understand common use cases and improve user experience.

What Render collects

Telemetry includes the following:

The Render CLI does not collect sensitive user data, such as command arguments, environment variable values, passwords, or the contents of your files.

To see exactly what usage data the Render CLI generates, set the RENDER_LOG_ANALYTICS environment variable to 1:

export RENDER_LOG_ANALYTICS=1

With RENDER_LOG_ANALYTICS enabled, the CLI prints each telemetry event after a command completes:

render workspaces -o json
[...workspaces...]
{
  "agent_signals": [],
  "arch": "arm64",
  "ci_signals": [],
  "cli_version": "2.25.0",
  "command": "render workspaces",
  "completion_kind": "success",
  "duration_ms": 259,
  "exit_code": 0,
  ...omitted...
}

Each telemetry event includes the following fields:

Field Description
agent_signals Allow-listed environment variable names that indicate the CLI ran inside an AI coding agent (e.g., CLAUDECODE).
arch The CPU architecture the CLI ran on.
ci_signals Allow-listed environment variable names that indicate the CLI ran in a CI environment (e.g., CI).
cli_version The Render CLI version that generated this event.
command The CLI command that was invoked (e.g., render services list). Does not include arguments or flag values.
completion_kind How the command ended (e.g., success or execution_error).
current_workspace_id Effective active workspace ID reported by the CLI, or an empty string when none is set.
duration_ms How long the command took to run, in milliseconds.
exit_code The command's exit code.
installation_id A random UUID that the CLI generates and stores to identify this installation.
is_stderr_tty Whether stderr was attached to an interactive terminal session.
is_stdin_tty Whether stdin was attached to an interactive terminal session.
is_stdout_tty Whether stdout was attached to an interactive terminal session.
is_term_dumb Whether the TERM environment variable was set to dumb.
launched_full_screen_tui Whether the CLI attempted to open a full-screen interface in interactive mode.
os The operating system the CLI ran on.
output_format The output format of this command.
started_at An RFC 3339 UTC timestamp of when the command started, based on the client's clock.

For the most up-to-date list of data collected, see the telemetry event model.

Disabling telemetry

You can disable telemetry at any time by setting RENDER_CLI_DISABLE_ANALYTICS to 1:

export RENDER_CLI_DISABLE_ANALYTICS=1

The Render CLI honors the DO_NOT_TRACK standard, so you can also disable telemetry by setting DO_NOT_TRACK to 1:

export DO_NOT_TRACK=1

Managing CLI tokens

For security, CLI tokens periodically expire. If you don't use the Render CLI for a while, you might need to re-authenticate with render login.

View a list of your active CLI tokens from your Account Settings page in the Render Dashboard. You can manually revoke a CLI token that you no longer need or that might be compromised. Expired and revoked tokens do not appear in the list.

Release history