Run ACP agents on Daytona

Move sandbox-driver to the commit that streams stdin into Daytona
commands, and the Daytona SDK to the fix for stdout/stderr markers that
leaked into the session log stream. Together they let an ACP agent start
on Daytona and keep its JSON-RPC output intact. The agents docs no longer
say ACP fails on Daytona.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Scott Werner 2026-10-08 12:32:35 -04:00
parent 5b3689c132
commit 782190d177
2 changed files with 21 additions and 21 deletions

38
Cargo.lock generated
View file

@ -1820,7 +1820,7 @@ dependencies = [
"libc",
"option-ext",
"redox_users",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -1934,7 +1934,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -3774,7 +3774,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
"windows-core 0.62.2",
"windows-core 0.61.2",
]
[[package]]
@ -4584,7 +4584,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -5752,7 +5752,7 @@ dependencies = [
"once_cell",
"socket2",
"tracing",
"windows-sys 0.60.2",
"windows-sys 0.59.0",
]
[[package]]
@ -6200,7 +6200,7 @@ dependencies = [
"errno 0.3.14",
"libc",
"linux-raw-sys",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -6259,7 +6259,7 @@ dependencies = [
"security-framework",
"security-framework-sys",
"webpki-root-certs",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -6304,7 +6304,7 @@ dependencies = [
[[package]]
name = "sandbox-driver"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"async-trait",
"globset",
@ -6321,7 +6321,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-daytona"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"anyhow",
"async-trait",
@ -6349,7 +6349,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-daytona-config"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"sandbox-driver-docker-config",
"serde",
@ -6359,7 +6359,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-docker"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"anyhow",
"async-trait",
@ -6380,7 +6380,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-docker-config"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"serde",
"serde_json",
@ -6389,7 +6389,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-host"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"anyhow",
"async-trait",
@ -6407,7 +6407,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-protocol"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"async-trait",
"base64",
@ -6424,7 +6424,7 @@ dependencies = [
[[package]]
name = "sandbox-driver-testing"
version = "0.1.0"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#5663536ce37a33a05e07491a5172367c0b30b656"
source = "git+https://github.com/lithoscomputer/sandbox-driver?branch=main#90b0d825767105d4b42e59fdbd116c4d66b87d83"
dependencies = [
"async-trait",
"sandbox-driver",
@ -6907,7 +6907,7 @@ version = "1.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
dependencies = [
"errno 0.2.8",
"errno 0.3.14",
"libc",
]
@ -7385,7 +7385,7 @@ dependencies = [
"getrandom 0.4.1",
"once_cell",
"rustix",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -7420,7 +7420,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "230a1b821ccbd75b185820a1f1ff7b14d21da1e442e22c0863ea5f08771a8874"
dependencies = [
"rustix",
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]
@ -8467,7 +8467,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.59.0",
]
[[package]]

View file

@ -31,7 +31,7 @@ Fabro manages the agent loop directly — it calls the LLM provider's API, execu
### ACP backend
Fabro can run Agent Client Protocol (ACP) stdio agents with `backend="acp"`. ACP agents run inside the active Fabro sandbox, so local and Docker runs keep the same workspace isolation, cancellation, and file-change tracking behavior as other agent stages.
Fabro can run Agent Client Protocol (ACP) stdio agents with `backend="acp"`. ACP agents run inside the active Fabro sandbox, so local, Docker, and Daytona runs keep the same workspace isolation, cancellation, and file-change tracking behavior as other agent stages.
ACP stages do not use Fabro model/provider credentials. The ACP process owns its auth, tools, and model behavior. Configure the process with exactly one of:
@ -52,7 +52,7 @@ implement [
Fabro does not install ACP agents, Node.js, npm, or `npx` at runtime. Commands must already be available in the sandbox image, repository, or setup steps. You can use `npx ...@latest` as an explicit `acp.command` if that is the behavior you want, but Fabro will treat it like any other user-supplied command.
The legacy `acp_command` attribute is rejected; use `acp.command` for shell commands or `acp.config` for JSON stdio configs. ACP is supported with local and Docker sandboxes; Daytona does not expose bidirectional stdio yet, so ACP nodes fail there with an explicit unsupported-provider error.
The legacy `acp_command` attribute is rejected; use `acp.command` for shell commands or `acp.config` for JSON stdio configs. ACP is supported with local, Docker, and Daytona sandboxes.
### Comparison