Skip to content

feat: external goosed server#5978

Merged
michaelneale merged 7 commits intomainfrom
micn/external-goosed-server
Dec 15, 2025
Merged

feat: external goosed server#5978
michaelneale merged 7 commits intomainfrom
micn/external-goosed-server

Conversation

@michaelneale
Copy link
Collaborator

@michaelneale michaelneale commented Dec 4, 2025

fixes: #4115 which has been requested a few times. Let the goose app connect to any goose server.

example motivation:

I work on highly regulated genomics data that sits in a protected environment. Being able to run a desktop on a local computer that is connected via ssh to some sort of 'goose server" running in the protected environment would be helpful. For example, I could loop at data visualizations in the desktop app, which would be impossible via the goose CLI in a terminal.
image image

If you accidentally start it and it can't connect:

Image

you can then run a goose server with:

./target/release/goosed agent

and use the defaults in the form (127.0.0.1, port 3000, secret is 'test')

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for connecting the desktop application to an external goosed server instead of always launching a local bundled instance. Users can configure an external server URL and secret key through a new settings UI, enabling scenarios like connecting to a remote development server or a shared team instance.

Key Changes:

  • Adds external backend configuration interface with URL and secret key settings
  • Refactors startGoosed function to return a structured result object with baseUrl instead of just a port
  • Implements graceful error handling that offers to disable external backend and retry if connection fails

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
ui/desktop/src/utils/settings.ts Adds ExternalGoosedConfig interface with enabled, url, and secret fields
ui/desktop/src/preload.ts Exposes saveSettings IPC method to renderer process
ui/desktop/src/main.ts Implements external backend logic, CSP updates for external URLs, secret key management, and error recovery flow
ui/desktop/src/goosed.ts Refactors startGoosed to accept options object and return structured GoosedResult with baseUrl field
ui/desktop/src/config.ts Simplifies getApiUrl to use full GOOSE_API_HOST URL instead of constructing from host + port
ui/desktop/src/components/settings/app/ExternalBackendSection.tsx New settings UI component for configuring external backend with URL validation and secret key input
ui/desktop/src/components/settings/app/AppSettingsSection.tsx Integrates external backend settings section into app settings

* main:
  fix: Make datetime info message more explicit to prevent LLM confusion about current year (#6101)
  refactor: unify subagent and subrecipe tools into single tool (#5893)
  goose repo is too big for the issue solver workflow worker (#6099)
  fix: use system not developer role in db (#6098)
  Add /goose issue solver github workflow (#6068)
  OpenAI responses streaming (#5837)
  Canonical models for Providers (#5694)
  feat: add Inception provider for Mercury models (#6029)
  fix old sessions with tool results not loading (#6094)
  Fix community page mobile responsiveness and horizontal overflow (#6082)
Copilot AI review requested due to automatic review settings December 15, 2025 02:12
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

@michaelneale michaelneale merged commit 208417e into main Dec 15, 2025
18 checks passed
@michaelneale michaelneale deleted the micn/external-goosed-server branch December 15, 2025 03:04
zanesq added a commit that referenced this pull request Dec 15, 2025
* 'main' of github.com:block/goose: (22 commits)
  Disallow subagents with no extensions (#5825)
  chore(deps): bump js-yaml in /documentation (#6093)
  feat: external goosed server (#5978)
  fix: Make datetime info message more explicit to prevent LLM confusion about current year (#6101)
  refactor: unify subagent and subrecipe tools into single tool (#5893)
  goose repo is too big for the issue solver workflow worker (#6099)
  fix: use system not developer role in db (#6098)
  Add /goose issue solver github workflow (#6068)
  OpenAI responses streaming (#5837)
  Canonical models for Providers (#5694)
  feat: add Inception provider for Mercury models (#6029)
  fix old sessions with tool results not loading (#6094)
  Fix community page mobile responsiveness and horizontal overflow (#6082)
  Tool reply meta (#6074)
  chore: avoid accidentally using native tls again (#6086)
  Update vars to be capitalised to be in line with other variables in config file (#6085)
  docs: restructure recipe reference (#5972)
  docs: configure custom providers (#6044)
  docs: Community All-Stars Spotlight November 2025, CodeTV Hackathon edition (#6070)
  fix: include file attachments in queued messages (#5961)
  ...

# Conflicts:
#	crates/goose-server/src/routes/agent.rs
#	crates/goose/src/agents/extension_manager.rs
#	ui/desktop/src/api/sdk.gen.ts
fbalicchia pushed a commit to fbalicchia/goose that referenced this pull request Dec 16, 2025
supports connecting to an external goosed in client/server mode
aharvard added a commit that referenced this pull request Dec 16, 2025
…erer

* origin/main: (26 commits)
  Don't persist ephemeral extensions when resuming sessions (#5974)
  chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /ui/desktop (#5939)
  chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /documentation (#5898)
  Add Scorecard supply-chain security workflow (#5810)
  Don't show subagent tool when we're a subagent (#6125)
  Fix keyboard shortcut conflict for Focus Goose Window (#5809)
  feat(goose-cli): add feature to disable update (#5886)
  workflow: enable docs-update-recipe-ref (#6132)
  fix: filter tools in Ollama streaming when chat mode is enabled (#6118)
  feat(mcp): platform extension for "code mode" MCP tool calling (#6030)
  workflow: auto-update recipe-reference on release (#5988)
  Document recipe slash commands feature (#6075)
  docs: add GitHub Copilot device flow authentication details (#6123)
  Disallow subagents with no extensions (#5825)
  chore(deps): bump js-yaml in /documentation (#6093)
  feat: external goosed server (#5978)
  fix: Make datetime info message more explicit to prevent LLM confusion about current year (#6101)
  refactor: unify subagent and subrecipe tools into single tool (#5893)
  goose repo is too big for the issue solver workflow worker (#6099)
  fix: use system not developer role in db (#6098)
  ...
zanesq added a commit that referenced this pull request Dec 16, 2025
…sions

* 'main' of github.com:block/goose: (22 commits)
  Disallow subagents with no extensions (#5825)
  chore(deps): bump js-yaml in /documentation (#6093)
  feat: external goosed server (#5978)
  fix: Make datetime info message more explicit to prevent LLM confusion about current year (#6101)
  refactor: unify subagent and subrecipe tools into single tool (#5893)
  goose repo is too big for the issue solver workflow worker (#6099)
  fix: use system not developer role in db (#6098)
  Add /goose issue solver github workflow (#6068)
  OpenAI responses streaming (#5837)
  Canonical models for Providers (#5694)
  feat: add Inception provider for Mercury models (#6029)
  fix old sessions with tool results not loading (#6094)
  Fix community page mobile responsiveness and horizontal overflow (#6082)
  Tool reply meta (#6074)
  chore: avoid accidentally using native tls again (#6086)
  Update vars to be capitalised to be in line with other variables in config file (#6085)
  docs: restructure recipe reference (#5972)
  docs: configure custom providers (#6044)
  docs: Community All-Stars Spotlight November 2025, CodeTV Hackathon edition (#6070)
  fix: include file attachments in queued messages (#5961)
  ...

# Conflicts:
#	crates/goose-server/src/routes/agent.rs
#	crates/goose/src/agents/extension_manager.rs
#	ui/desktop/src/api/sdk.gen.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remote agent control

3 participants