Skip to main content
The Dedalus command-line interface (CLI) lets people, scripts, and agents create and control Dedalus Machines, persistent Linux virtual machines (VMs), without interfacing with a dashboard. The CLI allows you to control their lifecycle, run commands, open interactive SSH sessions, expose services, retrieve files, and inspect usage.

Install

Homebrew installs the version currently published in the tap. Compare dedalus --version with the latest CLI release; if the tap trails the release, use Go, curl, or PowerShell.
Verify the installation and inspect the available commands:

Authenticate

Commands that call the Dedalus API need an API key. Create one in the Dedalus Dashboard, then export it in your shell:
Prefer the environment variable to --api-key in scripts. This keeps the key out of shell history and command arguments. To verify that the CLI can access your account, run the following command to list your machines:

Update

Update the current installation, or check for a newer release without installing it:
Homebrew and curl-installer installations update in place. On Windows, the command prints the PowerShell update command. Go users should rerun go install github.com/dedalus-labs/dedalus-cli/cmd/dedalus@latest. During interactive use, the CLI periodically checks for a newer release and asks before updating. Continuous integration jobs and commands without an interactive terminal skip this check. Set DEDALUS_NO_UPDATE_CHECK=1 to disable it in interactive shells. If an older CLI does not recognize dedalus update, reinstall it with the Go, curl, or PowerShell command above.

How commands are organized

Each command names a resource, an action, and any input needed for that action. A resource is an object managed by Dedalus, such as a Machine or execution.
machines is the main resource. Nested resources belong to one Machine, so their commands also require --machine-id. Examples of subresources include executions and artifacts. An execution is a command run inside a Machine, and an artifact is a file captured from an execution. Required request-body values can come from flags or JSON or YAML sent through standard input. Resource identifiers such as --machine-id remain command flags.

Command index

Global flags

Global flags apply to every command. Use them to authenticate, select the API endpoint, and control how the CLI prints results.

Machines

Use these commands to allocate compute, inspect it, and control its lifecycle. See Lifecycle for state transitions and persistence behavior.

Executions

An execution runs a non-interactive command inside a Machine and returns immediately. Use the returned execution_id to check status and read results. See Executions for the full asynchronous workflow.

SSH sessions

Use dedalus ssh for a human shell. The nested machines ssh commands expose the underlying session resource for custom clients. See SSH for the authorization and host-verification contract.

Usage

Usage commands read billing data for the organization associated with the API key. Dates use YYYY-MM-DD in Coordinated Universal Time (UTC).

Local CLI operations

Control input and output

The default output format is JSON. Use --format for human-readable YAML or the interactive explorer:
Example output:
Use explore to open the same data in an interactive table. The CLI adjusts column widths to fit the terminal.
Example output:
GJSON is the field-selection syntax for CLI JSON output. Use GJSON path syntax to transform each list item. This example prints one Machine ID per line without JSON quotes:
Commands with a request body also accept JSON or YAML from standard input:
Run dedalus <command> --help to inspect pagination flags and accepted input fields. Run dedalus --help to see the global output formats for your version.

Shell completions

Homebrew installs completions automatically. Manual installations can generate a script for Bash, zsh, Fish, or PowerShell. The command writes the script to standard output; source it for the current session or save it where your shell loads completions.

Command reference

The CLI generates its reference from the same command tree it executes. Add --help at any level to see the exact flags and nested commands in the installed release:
See the CLI repository for release notes and source code.
Last modified on September 9, 2026