11 KiB
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-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→goosefactoryacross 7 crates + allusestatements is high-risk/low-reward. The binarygoosedis 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. AddFACTORY_*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
- ✅ Clone the repo
- 🔴
ui/desktop/package.json— name, productName, description - 🔴
ui/desktop/src/main.ts— protocol handler, app name, window titles - 🔴
ui/desktop/forge.config.ts— protocol scheme, maker names - 🔴
ui/desktop/src/built-in-extensions.json— add Factory extension - 🔴
crates/goose/src/config/paths.rs— config directory - 🔴
crates/goose/src/prompts/system.md— agent identity - 🔴
ui/desktop/src/updates.ts— disable Block's auto-updater - 🔴
crates/goose/src/posthog.rs— disable/replace telemetry - 🔴 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 |