Skip to main content
Create a machine, run a command, get output.
1

Install the CLI

brew install dedalus-labs/tap/dedalus
On macOS, if you see a quarantine warning, run:
xattr -d com.apple.quarantine $(which dedalus)
2

Set your API key

Get a key from the Dashboard.
export DEDALUS_API_KEY=<your-key>
3

Create a machine

dedalus machines create --vcpu 1 --memory-mib 1024 --storage-gib 10
Note the machine_id (starts with dm-).
4

Run a command

dedalus machines exec --machine-id dm-<id> -- whoami

SDK examples

Same thing, in code.
from dedalus_sdk import Dedalus
import os, time

client = Dedalus()

dm = client.machines.create(vcpu=1, memory_mib=1024, storage_gib=10)

while dm.status.phase != "running":
    time.sleep(1)
    dm = client.machines.retrieve(machine_id=dm.machine_id)

exc = client.machines.executions.create(
    machine_id=dm.machine_id,
    command=["/bin/bash", "-c", "whoami && uname -a"],
)
while exc.status not in ("succeeded", "failed"):
    time.sleep(0.5)
    exc = client.machines.executions.retrieve(
        machine_id=dm.machine_id, execution_id=exc.execution_id,
    )
output = client.machines.executions.output(
    machine_id=dm.machine_id, execution_id=exc.execution_id,
)
print(output.stdout)

What’s next

Streaming

Watch machine status changes in real time via SSE.

Executions

Run commands, install packages, clone repos.

Lifecycle

Sleep, wake, resize, and delete machines.
Last modified on April 9, 2026