Goose’s architecture is designed for extensibility, allowing organizations to create custom distributions (sometimes called “white labeling”) tailored to specific needs—whether that’s preconfigured models, custom tools, branded interfaces, or entirely new user experiences.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/block/goose/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Custom distributions enable you to:- Preconfigure AI providers: Ship with a specific model (local or cloud) and API credentials
- Bundle custom tools: Include proprietary MCP extensions for internal data sources
- Customize the experience: Modify branding, UI, and default behaviors
- Target specific audiences: Create specialized versions for developers, legal teams, designers, etc.
Architecture
Goose separates concerns into distinct layers:- User Interfaces: CLI (
goose-cli), Desktop (Electron), or your custom UI - Server Layer:
goose-server(binary:goosed) provides REST API - Core Logic:
goosecrate handles agents, providers, and extensions - Customization Points: Providers, extensions, recipes, and configuration
Key Customization Points
| What You Want | Where to Look | Complexity |
|---|---|---|
| Preconfigure a model/provider | config.yaml, environment variables | Low |
| Add custom AI providers | crates/goose/src/providers/ | Low-Medium |
| Bundle custom MCP extensions | config.yaml, ui/desktop/src/built-in-extensions.json | Medium |
| Modify system prompts | crates/goose/src/prompts/ | Low |
| Customize desktop branding | ui/desktop/ (icons, names, colors) | Medium |
| Build a new UI (web, mobile) | Integrate with goose-server REST API or ACP | High |
| Create guided workflows | Recipes (YAML-based task definitions) | Low |
Getting Started
1. Fork and Clone
2. Choose Your Strategy
Configuration-only: Modify config files and environment variables (no code changes)3. Build and Distribute
See the main repository documentation:- Linux:
BUILDING_LINUX.md - Docker:
BUILDING_DOCKER.md - Desktop:
ui/desktop/README.md
Common Distribution Scenarios
Local Model Distribution
Ship Goose preconfigured to use a local Ollama model:Corporate Distribution with Managed Keys
Distribute internally with pre-provisioned API keys:Secrets are stored in system keyring by default, with file-based fallback available via
GOOSE_DISABLE_KEYRING=1.Custom Branding
Rebrand the desktop application: 1. Replace visual assets inui/desktop/src/images/:
icon.png,icon.ico,icon.icns
ui/desktop/forge.config.ts:
crates/goose/src/prompts/system.md:
Adding Custom Tools
Create MCP extensions for internal systems:ui/desktop/src/built-in-extensions.json:
Audience-Specific Distributions
Create specialized versions using recipes:Important Considerations
Licensing
Goose is licensed under Apache License 2.0 (ASL v2). Custom distributions must:- Include the original license and copyright notices
- Clearly indicate any modifications made
- Not use “Goose” trademarks in ways that imply official endorsement
Contributing Back
While you’re free to maintain private forks, contributing improvements upstream benefits everyone—including your distribution. Private forks that diverge significantly:- Become expensive to maintain
- Miss out on security updates and new features
- Require manual merging of upstream changes
Telemetry
Goose includes optional telemetry. For custom distributions:crates/goose/src/posthog.rs to point to your own PostHog instance.
Staying Current
To benefit from upstream improvements:- Regularly sync your fork with the main repository
- Keep customizations isolated in config files or separate extension repos
- Use recipes for workflow customization rather than code changes
- Subscribe to release announcements for breaking changes
Configuration Precedence
Goose loads configuration in this order (later sources override earlier ones):- Built-in defaults
init-config.yaml(first run only)~/.config/goose/config.yaml- Environment variables (highest priority)
File Locations
| File | Location | Purpose |
|---|---|---|
| Config | ~/.config/goose/config.yaml | User settings |
| Secrets | System keyring or ~/.config/goose/secrets.yaml | API keys |
| Sessions | ~/.local/share/goose/sessions/ | Conversation history |
| Custom providers | ~/.config/goose/custom_providers/ | Declarative providers |
Resources
- Full guide:
CUSTOM_DISTROS.mdin source repository - Build instructions:
BUILDING_LINUX.md,BUILDING_DOCKER.md - Desktop UI:
ui/desktop/README.md - Provider implementation:
crates/goose/src/providers/base.rs - Extension config:
crates/goose/src/agents/extension.rs