exe.dev Setup

Provision persistent VMs with SSH access using exe.dev. No cloud account needed — just SSH key authentication.

What is exe.dev?

exe.dev provides persistent VMs accessible via SSH. Unlike ephemeral providers (Daytona, Replicated CMX), exe.dev VMs survive until you explicitly delete them — making them ideal for long-running agents or stateful workloads.

Type: Stateful (persistent VM)

Auth: SSH key (no API token required)

Capabilities: exec, ssh

Best for: Long-running agents, persistent workspaces, SSH-native workflows

Prerequisites

  1. An exe.dev account. Sign up at exe.dev.
  2. The ssh CLI installed and in your $PATH. exe.dev uses standard SSH for all control-plane operations.
  3. An SSH key pair. exe.dev authenticates via SSH keys — no separate API tokens needed.

SSH Key Setup

If you don't have an SSH key pair:

bash
ssh-keygen -t ed25519 -C "your-email@example.com" -f ~/.ssh/exedev

Register the public key with exe.dev:

bash
ssh exe.dev key add ~/.ssh/exedev.pub

Or copy the key to your clipboard and paste it into the exe.dev web UI:

bash
cat ~/.ssh/exedev.pub | pbcopy  # macOS
# cat ~/.ssh/exedev.pub | xclip -selection clipboard  # Linux
The SSH key is used for both control-plane commands ssh exe.dev ... and per-VM access. Keep the private key secure — it's your only authentication credential.

Verify CLI Access

Test that your SSH key is recognized:

bash
ssh exe.dev ls --json

You should see a JSON list of VMs (empty if you haven't created any):

json
{"vms":[]}

If you get a permission error, verify the key is registered:

bash
ssh exe.dev key list

Configure ElasticClaw

Add the exe.dev provider to your hub.yaml:

yaml
providers:
  exedev:
    ssh_key_path: ~/.ssh/exedev    # optional; uses SSH agent if omitted

If ssh_key_path is omitted, ElasticClaw uses your default SSH agent. This works if you've added the key via ssh-add.

Use in Workspaces

Set exe.dev as the default provider for a workspace:

yaml
# elasticclaw-config.yaml
provider: exedev
resources:
  cpu: "2"
  memory: 4GB
  disk: 20GB
nix: false                       # exe.dev VMs are bare; enable if you need Nix
docker: false                    # enable if you need Docker

Or set per-workflow:

yaml
# workflows/long-running-agent/workflow.yaml
name: long-running-agent
provider: exedev
trigger:
  linear:
    event: status_changed
    states:
      - "Ready for Agent"

Provider Behavior

Create — Provisions a new VM via ssh exe.dev new --json. The VM name is auto-generated (e.g., agent-abc123) and the SSH destination is vm-name.exe.xyz.

Stop / Start — No-ops for exe.dev. VMs are always running (there is no hibernate API exposed via the SSH CLI).

Destroy — Deletes the VM via ssh exe.dev delete vm-name. This is irreversible.

Exec — Runs commands via ssh vm-name.exe.xyz command.

WriteFile — Pipes content through ssh ... cat > path to avoid shell escaping issues.

Troubleshooting

Permission denied (publickey) — Your SSH key isn't registered with exe.dev. Run ssh exe.dev key add ~/.ssh/your-key.pub.

Command not found: exe.dev — The SSH destination exe.dev requires your SSH config to resolve it. Ensure your SSH client can connect to ssh exe.dev (this uses exe.dev's SSH gateway).

VM not found after creation — The VM name may have been auto-generated differently. Check ssh exe.dev ls --json to list all VMs.

exe.dev VMs are billed by uptime. Delete unused VMs promptly to avoid unexpected charges. ElasticClaw's TTL-based auto-destroy does not apply to exe.dev — VMs persist until explicitly deleted.