For the complete documentation index, see llms.txt. This page is also available as Markdown.

Overview

The DCD CLI is the primary way to interact with DeviceCloud from your terminal or CI/CD pipeline. It is a drop-in replacement for maestro cloud — in most cases you can swap maestro cloud for dcd cloud.

The CLI is published as @devicecloud.dev/dcd on npm and as a standalone binary. The npm package also ships an MCP server (dcd-mcp) so AI agents can drive DeviceCloud directly. The standalone binary doesn't include the MCP server.

New in v5: browser-based dcd login (no more passing a key on every command), a standalone binary installer with dcd upgrade, interactive dcd live device sessions, and an MCP server. Existing API keys and dcd cloud usage continue to work unchanged.

Installation

The recommended install is the standalone binary — it has no dependencies and doesn't require Node.

curl -fsSL https://get.devicecloud.dev/install.sh | sh
irm https://get.devicecloud.dev/install.ps1 | iex

Requires Node 22 or newer.

npm install -g @devicecloud.dev/dcd

In CI, you can skip a separate install step and run the CLI directly with npx:

npx --yes @devicecloud.dev/dcd@latest cloud <app-file> <flows-dir>

Upgrading

If you installed the standalone binary, update it in place:

dcd upgrade

If you installed via npm, upgrade with npm instead:

npm install -g @devicecloud.dev/dcd@latest

dcd upgrade is only for binary installs. Automatic upgrade is not yet supported on Windows — re-run the PowerShell installer to update.

Authentication

There are two ways to authenticate. See Authentication for full detail.

  • dcd login (recommended for local use) — authenticate once in your browser. The CLI stores a session, so you don't have to pass a key on every command, and it unlocks live test updates.

  • API key (recommended for CI/headless) — set the DEVICE_CLOUD_API_KEY environment variable, or pass --api-key <key> on any command.

When both are present, precedence is: --api-key flag → DEVICE_CLOUD_API_KEY env var → stored dcd login session.

Commands

Command
Description

Upload an app and run Maestro flows on DeviceCloud

Upload an app binary and get a reusable binary ID

Check the status of a test upload

List recent uploads for your organisation

Download artifacts or reports for a completed run

Authenticate via your browser

Clear the stored session

Show the logged-in user and active organisation

Switch the active organisation

Start and interact with a live device session (beta)

dcd upgrade

Upgrade the standalone binary in place

Environment Variables

Variable
Description

DEVICE_CLOUD_API_KEY

API key to use when --api-key isn't passed. Takes precedence over a dcd login session

DCD_CONFIG_DIR

Directory for the dcd login session file (default $XDG_CONFIG_HOME/dcd, or ~/.dcd)

DCD_ENCRYPT

Set to 1 to make dcd cloud (and the MCP server) encrypt the app binary, flows and --env values on your machine before upload, the same as passing --encrypt

DCD_TELEMETRY_DISABLED

Set to 1 to turn off telemetry

DCD_API_URL

MCP server only. The API base URL to use (CLI commands take --api-url instead)

DCD_MCP_READONLY

MCP server only. Set to 1 for read-only mode

The standalone binary installers also read these:

Variable
Description

DCD_VERSION

Install a specific version instead of the latest stable release, e.g. 5.5.0

DCD_BETA

Set to 1 to install the latest beta

DCD_INSTALL_DIR

Where to install the binary (default ~/.dcd/bin, or $env:USERPROFILE\.dcd\bin on Windows)

Telemetry

The CLI sends usage and error events to DeviceCloud to help us find and fix problems. Only commands that authenticate send anything — --help, --version and dcd whoami, for example, don't. Events include:

  • the command and its arguments, with the values of --api-key, --app-url and --env / -e redacted

  • how long the command took and its exit code

  • the error message and stack trace when a command fails

  • the names, durations and errors of MCP server tool calls

  • the CLI version, install method (binary or npm), Node version, operating system and architecture, a random ID for the invocation and, with dcd login, your email address and team ID

To opt out, set DCD_TELEMETRY_DISABLED=1.

Getting Help

Last updated