# GooseFactory Rebrand Plan > **Created:** 2026-02-06 > **Status:** Phase 1 — Foundation Rebrand > **Source:** Forked from `block/goose` (shallow clone, HEAD) --- ## Overview This document catalogs every file that needs modification to rebrand Goose → GooseFactory. The rebrand has three tiers: - **🔴 CRITICAL** — Must change for the app to function as "GooseFactory" - **🟡 IMPORTANT** — Should change for consistent branding - **🟢 NICE-TO-HAVE** — Can defer, cosmetic/internal references --- ## 1. Protocol Handler: `goose://` → `factory://` ### Files to modify: | File | What to Change | Priority | |------|---------------|----------| | `ui/desktop/src/main.ts` | `app.setAsDefaultProtocolClient('goose')` → `'factory'` (3 occurrences) | 🔴 | | `ui/desktop/src/main.ts` | All `goose://` string checks → `factory://` (~15 occurrences) | 🔴 | | `ui/desktop/forge.config.ts` | `schemes: ['goose']` → `schemes: ['factory']` | 🔴 | | `ui/desktop/src/App.tsx` | `goose://sessions/` → `factory://sessions/` | 🔴 | | `ui/desktop/src/recipe/index.ts` | `goose://recipe?config=` → `factory://recipe?config=` | 🔴 | | `ui/desktop/src/components/settings/extensions/deeplink.ts` | Protocol validation, allowed commands include `goosed` | 🟡 | | `ui/desktop/src/components/settings/extensions/utils.test.ts` | Test URLs `goose://extension/add?...` | 🟡 | | `ui/desktop/src/components/ExtensionInstallModal.test.tsx` | Test URLs | 🟡 | | `ui/desktop/src/components/schedule/ScheduleModal.tsx` | Placeholder text `goose://recipe` | 🟡 | | `ui/desktop/src/components/sessions/SessionHistoryView.tsx` | `goose://sessions/` share link | 🟡 | | `ui/desktop/src/components/recipes/ImportRecipeForm.tsx` | Validation regex `goose://recipe?config=` | 🟡 | | `ui/desktop/src/components/MCPUIResourceRenderer.tsx` | `host: 'goose'` → `host: 'goosefactory'` | 🟡 | --- ## 2. App Name & Branding ### Desktop App (Electron) | File | What to Change | Priority | |------|---------------|----------| | `ui/desktop/package.json` | `"name": "goose-app"` → `"goosefactory-app"` | 🔴 | | `ui/desktop/package.json` | `"productName": "Goose"` → `"GooseFactory"` | 🔴 | | `ui/desktop/package.json` | `"description": "Goose App"` → `"GooseFactory — Your AI Factory"` | 🔴 | | `ui/desktop/src/main.ts` | `applicationName: 'Goose'` → `'GooseFactory'` (about panel) | 🔴 | | `ui/desktop/src/main.ts` | `title: 'Goose'` (notifications) → `'GooseFactory'` | 🔴 | | `ui/desktop/src/main.ts` | `dialog.showErrorBox('Goose Error'...)` → `'GooseFactory Error'` | 🔴 | | `ui/desktop/src/main.ts` | `partition: 'persist:goose'` → `'persist:goosefactory'` | 🔴 | | `ui/desktop/src/main.ts` | Menu items: `label === 'Goose'`, `'Focus Goose Window'`, `'About Goose'` | 🔴 | | `ui/desktop/forge.config.ts` | `name: 'Goose'`, `bin: 'Goose'` in maker configs | 🔴 | | `ui/desktop/forge.config.ts` | `name: process.env.GITHUB_REPO || 'goose'` → `'goosefactory'` | 🔴 | | `ui/desktop/forge.config.ts` | `homepage` URL → GooseFactory URL | 🟡 | | `ui/desktop/src/utils/winShims.ts` | `'Goose'` string reference | 🟡 | | `ui/desktop/src/utils/autoUpdater.ts` | `repo: 'goose'` → `'goosefactory'` | 🟡 | | `ui/desktop/src/utils/autoUpdater.ts` | `trayRef.setToolTip('Goose')` → `'GooseFactory'` | 🟡 | | `ui/desktop/src/utils/githubUpdater.ts` | `this.repo = process.env.GITHUB_REPO || 'goose'` | 🟡 | | `ui/desktop/src/components/GooseSidebar/AppSidebar.tsx` | `titleBits = ['Goose']` → `['GooseFactory']` | 🟡 | | `ui/desktop/src/components/sessions/SessionViewComponents.tsx` | `'Goose'` label for assistant messages | 🟡 | | `ui/desktop/src/components/GooseLogo.tsx` | Logo component | 🟡 | | `ui/desktop/src/components/WelcomeGooseLogo.tsx` | Welcome logo | 🟡 | | `ui/desktop/src/components/FlyingBird.tsx` | Animation | 🟢 | | `ui/desktop/src/components/LoadingGoose.tsx` | Loading state | 🟢 | ### Bundle Scripts | File | What to Change | Priority | |------|---------------|----------| | `ui/desktop/package.json` scripts | `out/Goose-darwin-arm64` → `out/GooseFactory-darwin-arm64` | 🟡 | | `ui/desktop/forge.deb.desktop` | App name | 🟡 | | `ui/desktop/forge.rpm.desktop` | App name | 🟡 | --- ## 3. Config Directory: `~/.config/goose/` → `~/.config/goosefactory/` ### Rust Files | File | What to Change | Priority | |------|---------------|----------| | `crates/goose/src/config/paths.rs` | `app_name: "goose".to_string()` → `"goosefactory"` | 🔴 | | `crates/goose/src/config/base.rs` | `KEYRING_SERVICE: &str = "goose"` → `"goosefactory"` | 🔴 | | `crates/goose/src/config/base.rs` | Doc comments referencing `~/.config/goose/` | 🟢 | | `crates/goose-cli/src/commands/configure.rs` | `~/.config/goose/secrets.yaml` in user messages | 🟡 | | `crates/goose-mcp/src/memory/mod.rs` | `~/.config/goose/memory` path reference | 🟡 | ### TypeScript Files | File | What to Change | Priority | |------|---------------|----------| | `ui/desktop/src/recipe/recipe_management.ts` | `~/.config/goose/recipes` → `~/.config/goosefactory/recipes` | 🟡 | | `ui/desktop/src/components/ConfigContext.tsx` | `~/.config/goose/config.yaml` error message | 🟡 | --- ## 4. Rust Crate Names | File | What to Change | Priority | |------|---------------|----------| | `Cargo.toml` (workspace) | `repository`, `description` fields | 🟢 | | `crates/goose/Cargo.toml` | `name = "goose"` — **⚠️ DO NOT CHANGE YET** (breaks all internal deps) | 🟢 | | `crates/goose-server/Cargo.toml` | Binary name `goosed` — keep for now | 🟢 | | All `Cargo.toml` files | Can rename later; internal consistency matters more | 🟢 | > **Decision:** Keep Rust crate names as-is for Phase 1. Renaming `goose` → `goosefactory` across 7 crates + all `use` statements is high-risk/low-reward. The binary `goosed` is internal-only. --- ## 5. System Prompt (Agent Identity) | File | What to Change | Priority | |------|---------------|----------| | `crates/goose/src/prompts/system.md` | "AI agent called goose, created by Block" → "AI agent called GooseFactory, your AI Factory operator" | 🔴 | | `crates/goose/src/agents/prompt_manager.rs` | Fallback prompt: "general-purpose AI agent called goose, created by Block" | 🟡 | | `crates/goose/src/prompts/subagent_system.md` | Check for goose references | 🟡 | | `crates/goose/src/prompts/desktop_prompt.md` | Check for goose references | 🟡 | | `crates/goose/src/prompts/recipe.md` | Check for goose references | 🟡 | | `crates/goose/src/prompts/compaction.md` | Check for goose references | 🟡 | | `crates/goose/src/agents/builtin_skills/skills/goose_doc_guide.md` | Full file | 🟢 | | `crates/goose/src/prompt_template.rs` | `"Main system prompt that defines goose's personality"` (comment) | 🟢 | --- ## 6. Built-in Extensions | File | What to Change | Priority | |------|---------------|----------| | `ui/desktop/src/built-in-extensions.json` | Add Factory MCP Server as a new built-in extension | 🔴 | | `ui/desktop/src/built-in-extensions.json` | Change `"Teach goose your preferences"` description | 🟡 | | `crates/goose-mcp/src/` | Add Factory extension implementation (Phase 2) | 🟡 | --- ## 7. Telemetry & Analytics | File | What to Change | Priority | |------|---------------|----------| | `crates/goose/src/posthog.rs` | `POSTHOG_API_KEY` — Replace with our own or disable | 🔴 | | `crates/goose/src/posthog.rs` | `GOOSE_TELEMETRY_ENABLED` key name | 🟢 | | `ui/desktop/src/updates.ts` | `UPDATES_ENABLED = true` → `false` (disable Block's updater) | 🔴 | | `ui/desktop/src/utils/autoUpdater.ts` | Points to `block/goose` GitHub releases | 🔴 | | `ui/desktop/src/utils/githubUpdater.ts` | Same — points to Block's repo | 🔴 | --- ## 8. Icons & Assets | File | What to Change | Priority | |------|---------------|----------| | `ui/desktop/src/images/icon.icns` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/icon.ico` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/icon.png` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/icon.svg` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/icon@2x.png` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/icon-light.icns` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/icon-light.png` | Replace with GooseFactory icon | 🟡 | | `ui/desktop/src/images/glyph.svg` | Replace with GooseFactory glyph | 🟡 | | `ui/desktop/src/images/iconTemplate.png` | Tray icon (macOS) | 🟡 | | `ui/desktop/src/images/iconTemplate@2x.png` | Tray icon @2x | 🟡 | | `ui/desktop/src/images/iconTemplateUpdate.png` | Tray update icon | 🟡 | | `ui/desktop/src/images/iconTemplateUpdate@2x.png` | Tray update icon @2x | 🟡 | | `ui/desktop/src/images/Union@2x.svg` | UI element | 🟢 | | `ui/desktop/src/images/loading-goose/` | Loading animation frames | 🟢 | | `ui/desktop/src/assets/` | Clock icons, battle-game assets | 🟢 | --- ## 9. Environment Variables These are the key env vars referenced in the code: | Variable | Current | GooseFactory | Priority | |----------|---------|-------------|----------| | `GOOSE_PROVIDER` | LLM provider | Keep (backward compat) | 🟢 | | `GOOSE_MODEL` | LLM model | Keep | 🟢 | | `GOOSE_MODE` | Permission mode | Keep | 🟢 | | `GOOSE_PATH_ROOT` | Config root override | Keep | 🟢 | | `GOOSE_TELEMETRY_ENABLED` | Telemetry flag | Keep but disable by default | 🟡 | | `GOOSE_TELEMETRY_OFF` | Telemetry opt-out | Keep | 🟢 | | `GOOSE_ALLOWLIST` | Extension allowlist URL | Keep | 🟢 | | `GOOSE_DEFAULT_PROVIDER` | Bundled default | Keep | 🟢 | | `GOOSE_DEFAULT_MODEL` | Bundled default | Keep | 🟢 | > **Decision:** Keep `GOOSE_*` env vars for backward compatibility. Add `FACTORY_*` aliases later. --- ## 10. Miscellaneous Files | File | What to Change | Priority | |------|---------------|----------| | `README.md` | Entire file — rewrite for GooseFactory | 🟢 | | `AGENTS.md` | Update for GooseFactory development | 🟢 | | `HOWTOAI.md` | Update references | 🟢 | | `CONTRIBUTING.md` | Update for our fork | 🟢 | | `GOVERNANCE.md` | Replace with our governance | 🟢 | | `LICENSE` | Keep Apache 2.0, add copyright notice | 🔴 | | `.goosehints` (root) | Update for GooseFactory | 🟢 | | `ui/desktop/.goosehints` | Update for GooseFactory | 🟢 | | `ui/desktop/index.html` | `