fabro/docs/integrations/exe-dev.mdx
Bryan Helmkamp e2f884df23 Fix resume command bugs, remove --ssh flag, simplify EventEmitter
Fix three bugs from PR review in the new `fabro resume` command:

1. RunArgs.workflow lost its required constraint when --run-branch was
   removed — add #[arg(required = true)] so clap enforces it.

2. run_resumed ignored --preserve-sandbox (hardcoded false),
   --verbose (no ProgressUI), and --ssh (no listener). Wire
   preserve_sandbox through resolve_preserve_sandbox, create a
   ProgressUI registered on the emitter, and handle SSH access.

3. prepare_from_checkpoint unconditionally created a LocalSandbox,
   ignoring --sandbox. Add the same sandbox resolution logic used by
   prepare_from_branch (Local, Docker, Ssh, Exe, Daytona).

Remove --ssh from `fabro run` and `fabro resume` since `fabro ssh`
is the dedicated command now. Remove the flag from RunArgs, ResumeArgs,
RunSpec, and all docs/changelogs.

Simplify EventEmitter: change on_event to take &self (via
Mutex<Vec<Arc<...>>>) instead of &mut self, removing the need for
the late_listeners workaround. emit() snapshots the listener list
before dispatching to prevent deadlocks from reentrant emit calls.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 13:07:58 -04:00

54 lines
1.7 KiB
Text

---
title: "exe.dev (preview)"
description: "Run Fabro workflows in fast ephemeral VMs from exe.dev"
---
<Warning>
The exe.dev sandbox provider is **under development**. It requires building Fabro with the `exedev` feature flag enabled. The API and configuration may change.
</Warning>
[exe.dev](https://exe.dev) provides fast ephemeral cloud VMs for Fabro workflows. Each run gets a fresh VM with full machine-level isolation, connected via SSH.
## How it works
- Each run creates a new VM via the exe.dev management plane over SSH
- Fabro clones the current git repository into the VM automatically (using GitHub App credentials for private repos)
- Agent tool calls (shell commands, file edits, grep, glob) execute over SSH inside the VM
- Git checkpointing commits agent changes to a remote branch between stages
- Cancelling a run cleanly tears down the VM
- VMs are destroyed automatically when the run finishes
## Configuration
```bash
fabro run workflow.fabro --sandbox exe
```
```toml title="run.toml"
[sandbox]
provider = "exe"
[sandbox.exe]
image = "my-custom-image:latest"
```
| Field | Description |
|---|---|
| `image` | Custom container image for the VM. Optional — uses the exe.dev default when omitted. |
## SSH access
Connect to a running exe.dev sandbox via SSH for live debugging:
```bash
fabro ssh <run-id>
```
This prints the SSH connection command so you can connect to the VM while the workflow runs.
## Prerequisites
- SSH keys configured for exe.dev (added via the [exe.dev dashboard](https://exe.dev))
- A [GitHub App](/integrations/github) configured via `fabro install` (for private repository cloning)
See [Environments](/execution/environments#exe) for additional details on how the exe.dev sandbox operates.