feat: bundle a slim goose agent (goose-acp) as a desktop sidecar#1526
feat: bundle a slim goose agent (goose-acp) as a desktop sidecar#1526michaelneale wants to merge 1 commit into
Conversation
ecfded9 to
1dc7998
Compare
|
CI note: the one red check, Desktop Smoke E2E (2) ( |
|
@michaelneale can you look at the way we do auto-installs for the ACP adapters for claude code and codex at boostrap time as part of user onboarding and refactor this to where this slim goose is a one click install on that screen? |
Adds goose-acp/, a workspace-excluded crate that builds goose's ACP stdio server from the goose library crate with default-features off (rustls-tls only): no code-mode/V8, no local-inference/llama.cpp, no keyring/AWS/telemetry, no goose CLI. Full agent loop, providers, sessions, and MCP extensions intact. ~32 MB on macOS arm64 (~9 MB added to the compressed download) vs ~240 MB for a stock goose install; drops to ~14 MB once goose's analyze/tiktoken feature gates land upstream and the rev pin is bumped. Workspace exclusion is deliberate: goose's ~700-crate graph stays out of the workspace lockfile, and rmcp stays pinned at 1.7.0 (goose does not compile against 1.8) in goose-acp's own Cargo.lock. Wiring: - buzz-acp: goose-acp identity takes no 'acp' subcommand (it is already the ACP server), with tests - desktop: goose runtime discovery also accepts goose-acp, so the bundled sidecar is found when no user-installed goose exists; orphan sweep already matches it via the goose- prefix rule - packaging: tauri externalBin entry, sidecar stubs (justfile + CI), bundle-sidecars.sh stages it when built, release workflow builds it for all targets
1dc7998 to
0f92884
Compare
|
@tlongwell-block I could - but partly defeats the purpose, this bundles the small binary in (a few MB extra) so no download opt-in needed (which means less potential security hassles) - but could do that too (ie pull down a lean agent). the idea here is to show how small a combination batteries included could be (ie only a small addition to the net size of buzz) - but it isn't clear from the description I guess. More if they choose to use it would be nothing extra. |
|
We already bundle a full agent, @michaelneale I think at some point we might want to cut over to goose, but right now for 5-10MB total the buzz-agent is working really well for us |
|
@tlongwell-block tnx, no worries |
Bundles a slim
goose acpbinary as a desktop sidecar so Buzz ships a working goose agent out of the box — no goose install required.How it's made small
goose-acp/crate (workspace-excluded, own lockfile): a 14-line main callinggoose::acp::server::run()on thegooselibrary crate withdefault-features = false, features = ["rustls-tls"]— drops code-mode (V8 JS runtime), local-inference (llama.cpp), keyring, AWS providers, telemetry, and the goose CLI/TUI entirelyCargo.lockis untouched by goose's dependency graphNet impact
+9 MB compressed (+12% on the 72 MB DMG)analyze/tiktokenfeature gates land (rev bump only)Wiring (~60 LOC outside the new crate)
goose-acpidentity takes noacpsubcommand (it is the ACP server), + testsgoose-acpas fallback — user-installedgoosestill winsexternalBinentry, sidecar stubs (justfile + CI),bundle-sidecars.shstages it when built (withchmod +x— cp onto a stub keeps the stub's mode), release workflow builds it for all targetsVerified
initializehandshake against the built binaryjust devruns