fabro/docs/public/execution
Bryan Helmkamp e7e4fb5ca1
Add Daytona volume mount passthrough (#263)
## Summary

This adds run-configuration support for mounting existing Daytona
volumes into Fabro-managed Daytona sandboxes.

Concretely, this PR:

- adds `[[run.sandbox.daytona.volumes]]` with `volume_id`, `mount_path`,
and optional `subpath`
- resolves that config through the layer/settings/runtime pipeline
- forwards configured mounts to `daytona_sdk::SandboxBaseParams.volumes`
when creating the sandbox
- documents the configuration surface in the Daytona environment and run
configuration docs

## Motivation

Daytona already supports attaching volumes when a sandbox is created,
but Fabro currently owns that sandbox creation call. That means users
cannot attach a pre-created Daytona volume to a Fabro-managed sandbox
from run config.

The intended use is persistent, provider-owned state such as agent
credentials, caches, datasets, or other files that should survive
ephemeral sandbox lifecycles.

## Scope

This is intentionally a narrow passthrough. Fabro does not create,
delete, list, wait on, or otherwise manage Daytona volume lifecycle.
Users create the volume in Daytona first, then reference its `volume_id`
from Fabro run config.

`volumes` defaults to an empty list in resolved settings for backwards
compatibility with existing serialized settings.

## Testing

- `cargo test -p fabro-server
runtime_daytona_config_preserves_volume_mounts`
- `cargo test -p fabro-config resolves_daytona_volume_mounts`
- `cargo test -p fabro-sandbox --features daytona volume_mounts`
- `cargo test -p fabro-workflow
runtime_daytona_config_preserves_volume_mounts`
- `cargo check -p fabro-server`

---

_Re-opened from #262 (originally by @kimprobably) to land a rustfmt fix
— the original PR came from an org-owned fork, which blocks maintainer
pushes. Branch is now on the base repo. Original commit preserved; one
additional commit fixes rustfmt formatting._

Co-authored-by: Tim Keen <tim@keen.digital>
2026-05-14 10:54:43 -04:00
..
checkpoints.mdx refactor(workflow): remove retro stage (#230) 2026-05-09 10:18:20 -04:00
context.mdx docs: sync command output docs 2026-05-08 17:16:17 -07:00
devcontainers.mdx docs: sync public docs to recent runtime changes 2026-04-30 08:35:53 -04:00
environments.mdx Add Daytona volume mount passthrough (#263) 2026-05-14 10:54:43 -04:00
failures.mdx refactor(types): remove stage status compatibility 2026-04-30 06:48:47 -04:00
observability.mdx refactor(workflow): remove retro stage (#230) 2026-05-09 10:18:20 -04:00
outcomes.mdx refactor(types): remove stage status compatibility 2026-04-30 06:48:47 -04:00
run-configuration.mdx Add Daytona volume mount passthrough (#263) 2026-05-14 10:54:43 -04:00