# Exedev Ctl

> Manage exe.dev virtual machines with the exedev-ctl CLI installed from GitHub Releases. Use when Codex needs to help third-party users install exedev-ctl, inspect, create, delete, restart, rename, tag, resize, SSH into, share, or troubleshoot VMs on exe.dev; generate or check EXE_DEV_API_KEY permissions; or run raw exe.dev commands.

- Skill: `lollipopkit/exedev-ctl` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add lollipopkit/exedev-ctl`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lollipopkit/exedev-ctl/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: lollipopkit (https://skillmd.com/u/lollipopkit)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lollipopkit/exedev-ctl

---


# exedev-ctl

## Core Workflow

Use the installed `exedev-ctl` binary for exe.dev VM lifecycle and account-level operations:

```sh
exedev-ctl --help
exedev-ctl ls
```

For installation or platform-specific archive names, read `references/exedev-ctl.md`. Do not recommend `cargo run` to third-party users unless the user is explicitly maintaining the source repository.

## Install First

If `exedev-ctl` is not installed, direct users to the latest GitHub Release:

```sh
https://github.com/lollipopkit/exedev-cli/releases/latest
```

Release archives are named `exedev-clis-<tag>-<platform>.tar.gz` and include both the `exedev-ctl` and `exedev-k8s` binaries; archive member names carry a `./` prefix (extract with `./exedev-ctl`).

## Before Acting

Check the current environment and scope before proposing changes:

- Verify `EXE_DEV_API_KEY` is present for HTTPS `/exec` operations.
- Use `exedev-ctl --json ls` to inspect current VMs.
- Treat destructive VM actions as high risk. Require explicit confirmation before `rm`, bulk deletion, or operations that could lose disk state unless the user already asked for that exact action.
- When a token returns `403`, inspect token permissions before assuming a VM or CLI bug.
- When `/exec` returns `422`, surface the exe.dev command failure body.

## Command Selection

Use typed wrappers for supported commands: `help`, `doc`, `ls`, `new`, `rm`, `restart`, `rename`, `tag`, `comment`, `stat`, `cp`, `resize`, `share`, `domain`, `team`, `invite`, `whoami`, `ssh-key`, `set-region`, `integrations`, `billing`, `shelley`, `browser`, `ssh`, and `grant-support-root`.

Use `exec -- <command>` only for raw exe.dev commands that do not yet have a typed wrapper.

Use `--json` when output must be parsed, compared, or included in automation.

## SSH and API Boundary

`exedev-ctl` uses local SSH by default. It can use `POST https://exe.dev/exec` when the user passes `--transport http`; that mode requires `EXE_DEV_API_KEY`.

The HTTPS endpoint has no stdin or pty, so these commands always use local SSH even with `--transport http`:

- `exedev-ctl ssh ...`
- `exedev-ctl new --prompt /dev/stdin`
- `exedev-ctl new --setup-script /dev/stdin`

For streamed scripts or interactive VM work, prefer direct VM SSH such as `ssh <vm>.exe.xyz ...` when the repo evidence shows it is the reliable path.

## More Detail

Read `references/exedev-ctl.md` when you need concrete command examples, token-generation guidance, error triage, or repo-specific checks.

