11 KiB

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
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
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-arm64out/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 goosegoosefactory 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 = truefalse (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 <title> tag 🟡

Phase 1 Execution Order

  1. Clone the repo
  2. 🔴 ui/desktop/package.json — name, productName, description
  3. 🔴 ui/desktop/src/main.ts — protocol handler, app name, window titles
  4. 🔴 ui/desktop/forge.config.ts — protocol scheme, maker names
  5. 🔴 ui/desktop/src/built-in-extensions.json — add Factory extension
  6. 🔴 crates/goose/src/config/paths.rs — config directory
  7. 🔴 crates/goose/src/prompts/system.md — agent identity
  8. 🔴 ui/desktop/src/updates.ts — disable Block's auto-updater
  9. 🔴 crates/goose/src/posthog.rs — disable/replace telemetry
  10. 🔴 Protocol handler changes across all UI files

Estimated Effort

Category Files Effort
Protocol handler (goose://factory://) ~12 files 2-3 hours
App branding (name, titles, menus) ~15 files 2-3 hours
Config directory path ~5 files 1 hour
System prompt ~6 files 1 hour
Telemetry/Updates ~4 files 30 min
Icons & Assets ~12 files Deferred (need design)
Rust crate renames ~7 crates Deferred (Phase 2+)
Total Phase 1 ~42 files ~1-2 days