From 782190d177478a9d09459c3c30e401f1f21f633f Mon Sep 17 00:00:00 2001 From: Scott Werner Date: Thu, 8 Oct 2026 12:32:35 -0400 Subject: [PATCH] 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 --- Cargo.lock | 38 ++++++++++++++-------------- docs/public/core-concepts/agents.mdx | 4 +-- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dd9a7ac07..42587414c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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]] diff --git a/docs/public/core-concepts/agents.mdx b/docs/public/core-concepts/agents.mdx index e53b12ed2..f3c98961b 100644 --- a/docs/public/core-concepts/agents.mdx +++ b/docs/public/core-concepts/agents.mdx @@ -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