ui/goose2/distro/README.md
A Goose2 distro bundle is an optional app-specific package of configuration and policy that the Tauri shell loads at startup.
A distro bundle lives under ui/goose2/distro/ in development, and is bundled into the packaged app as a Tauri resource in production.
Current supported files:
distro.json — distro manifestconfig.yaml — optional Goose config passed to goose servebin/ — optional executables or helper scripts prepended to PATH for goose serveThe Tauri app resolves the distro bundle in this order:
GOOSE_DISTRO_DIR, if setresource_dir()/distroIn development, just dev and just dev-debug automatically export GOOSE_DISTRO_DIR to ui/goose2/distro when that directory exists.
Example:
{
"appVersion": "development",
"featureToggles": {
"costTracking": false
},
"providerAllowlist": "databricks"
}
appVersion?: string
featureToggles?: Record<string, boolean>
costTracking
false hides cost UI in the token/context usage surfacesproviderAllowlist?: string
extensionAllowlist?: string
When a distro bundle is present, Goose2 does two kinds of things with it.
The frontend loads get_distro_bundle during app startup and stores the manifest in Zustand.
Today it uses that manifest to:
providerAllowlistproviderAllowlistfeatureToggles.costTracking === falseThese allowlists are UI suggestions only. They do not enforce backend access control and do not invalidate existing sessions or saved model choices.
When the Tauri shell launches the long-lived goose serve process, it applies the distro bundle like this:
distro/bin to PATH when presentdistro/config.yaml to GOOSE_ADDITIONAL_CONFIG_FILES when presentGOOSE_DISTRO_DIR to the resolved distro rootThis is shell-level behavior, so it is implemented as Tauri-side setup rather than an ACP method.
GOOSE_DISTRO_DIRdistro.json, restart just dev so startup reloads the manifestUse distro bundles for packaged-app policy and shell-level defaults.
Good fits:
goose serve startsAvoid using distro bundles as a replacement for normal app state, user settings, or ACP-backed domain data.