mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-05 08:10:39 +00:00
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>
54 lines
1.7 KiB
Text
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.
|