Exe Dev/vm
exe.dev VM lifecycle model. Wraps the exe.dev HTTPS API to manage VMs as typed swamp resources — create, destroy, restart, resize, observe fleet state, execute commands, manage sharing, and track Shelley versions.
Authentication
Uses a bearer token generated via ssh exe.dev ssh-key generate-api-key.
Run the setup method to generate a token with the correct permissions and
store it in your vault automatically.
Quick Start
swamp extension pull @webframp/exe-dev/vm
swamp model create @webframp/exe-dev/vm exe-dev
# Edit model YAML to set: token: '${{ vault.get("vault-name", "exe-dev-api-token") }}'
swamp model method run exe-dev setup
swamp model method run exe-dev sync2026.08.21.2
Changed: exe.dev API request failures (network errors, DNS failures, connection
resets) now raise an error that names the exe.dev command that was being attempted,
instead of surfacing the raw fetch error with no context. The timeout error message
also now includes the command that timed out. A malformed/non-JSON response from
the exe.dev API now raises a clear "returned malformed JSON for command ..." error
(including a snippet of the raw response) instead of a bare JSON.parse SyntaxError.
2026.08.21.1
Changed: Added .describe() documentation to every previously undocumented field in the
resource schemas (SharingSchema, VmSchema, FleetSchema, StatSchema, ExecResultSchema,
ShelleyVersionSchema, ShelleyVersionsSchema, ShelleyUpgradeResultSchema, and the inline
shelleyUpgrade resource schema). No behavioral change — method argument schemas were already
fully documented and are untouched.
2026.08.04.1
Added: Initial release of the exe.dev VM lifecycle model. Methods: setup, sync, create, destroy, restart, resize, stat, tag, exec, comment, share, shelley_versions, shelley_upgrade. Full fleet observation with typed resources, pre-flight existence checks on destructive operations, and actionable 403 diagnostics guiding token permission fixes.
Global Arguments
| Argument | Type | Description |
|---|---|---|
| token? | string | exe.dev API bearer token (use vault reference). Generate with the |
| Argument | Type | Description |
|---|---|---|
| expiry | string | Token lifetime (e.g. 7d, 30d, 90d) |
| vaultName | string | Vault to store the token in |
| secretKey | string | Secret key name within the vault |
| Argument | Type | Description |
|---|---|---|
| name? | string | VM name (auto-generated if omitted) |
| image? | string | Container image (e.g. ubuntu:22.04) |
| cpu? | number | Number of CPUs (default 2) |
| memory? | string | Memory allocation (e.g. 4GB, 8G) |
| disk? | string | Disk size (e.g. 20GB, 50G) |
| tags? | array | Tags to apply |
| comment? | string | Short comment about the VM (max 200 bytes) |
| setupScript? | string | Setup script to run on first boot (max 10KiB) |
| env? | record | Environment variables as KEY=VALUE pairs |
| integrations? | array | Integration names to attach |
| Argument | Type | Description |
|---|---|---|
| names | array | VM name(s) to delete |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to restart |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to resize |
| cpu? | number | New CPU count |
| memory? | string | New memory (e.g. 8GB) |
| disk? | string | New disk size (must be larger than current) |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name |
| range | enum | Time range for metrics |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name |
| add? | array | Tags to add |
| remove? | array | Tags to remove |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name to execute on |
| command | string | Shell command to run (max 64KB) |
| timeout | number | SSH command timeout in seconds (max 300) |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name |
| text | string | Comment text (empty string to clear) |
| Argument | Type | Description |
|---|---|---|
| name | string | VM name |
| action | enum | Sharing action to perform |
| email? | string | Email address (required for add/remove actions) |
| linkToken? | string | Share link token (required for remove-link) |
| root? | boolean | Grant/revoke shell (SSH) access instead of web-only (for add/remove) |
| Argument | Type | Description |
|---|---|---|
| filter? | array | VM names to check (default: all VMs from latest fleet sync) |
| Argument | Type | Description |
|---|---|---|
| names? | array | VM names to upgrade. Default: all VMs where shelley_versions |
Resources
2026.08.21.1
Changed: Added .describe() documentation to every previously undocumented field in the
resource schemas (SharingSchema, VmSchema, FleetSchema, StatSchema, ExecResultSchema,
ShelleyVersionSchema, ShelleyVersionsSchema, ShelleyUpgradeResultSchema, and the inline
shelleyUpgrade resource schema). No behavioral change — method argument schemas were already
fully documented and are untouched.
2026.08.04.1
Added: Initial release of the exe.dev VM lifecycle model. Methods: setup, sync, create, destroy, restart, resize, stat, tag, exec, comment, share, shelley_versions, shelley_upgrade. Full fleet observation with typed resources, pre-flight existence checks on destructive operations, and actionable 403 diagnostics guiding token permission fixes.
2026.08.04.1
Added: Initial release of the exe.dev VM lifecycle model. Methods: setup, sync, create, destroy, restart, resize, stat, tag, exec, comment, share, shelley_versions, shelley_upgrade. Full fleet observation with typed resources, pre-flight existence checks on destructive operations, and actionable 403 diagnostics guiding token permission fixes.
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License declared1/1earned
- Verified public repository2/2earned