Skip to content

docs: add guide for connecting goose Desktop to a remote goosed server#9275

Merged
DOsinga merged 3 commits into
aaif-goose:mainfrom
jamescrosswell:docs/remote-goose-server
May 18, 2026
Merged

docs: add guide for connecting goose Desktop to a remote goosed server#9275
DOsinga merged 3 commits into
aaif-goose:mainfrom
jamescrosswell:docs/remote-goose-server

Conversation

@jamescrosswell
Copy link
Copy Markdown
Contributor

@jamescrosswell jamescrosswell commented May 16, 2026

Summary

  • Adds a new guide (documentation/docs/guides/remote-goose-server.md) covering how to start goosed on a remote machine, verify it's reachable, locate the TLS certificate fingerprint, and configure goose Desktop to connect to it
  • Covers running goosed as a macOS LaunchAgent for background/auto-restart behaviour
  • Includes a troubleshooting section for the most common failure modes (host binding, TLS not enabled, secret key mismatch, fingerprint mismatch)
  • Adds a "goose Server" section to environment-variables.md documenting GOOSE_HOST, GOOSE_PORT, GOOSE_TLS, and GOOSE_SERVER__SECRET_KEY, which were previously undocumented

This setup was non-trivial to figure out from the existing docs — TLS being required for Desktop connections and the certificate fingerprint workflow in particular aren't mentioned anywhere currently.

Notes

  • LaunchAgent example is macOS-specific; equivalents for Linux (systemd) and/or Windows could be added in follow-up PRs

🤖 Generated with Claude Code

Signed-off-by: James Crosswell <james.crosswell@gmail.com>
@jamescrosswell jamescrosswell marked this pull request as ready for review May 16, 2026 06:22
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 793a5aa65f

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +569 to +571
| `GOOSE_PORT` | TCP port the server listens on | Port number | Server-assigned |
| `GOOSE_TLS` | Enable TLS with a self-signed certificate. Required when connecting goose Desktop to a remote `goosed`. | `true`, `false` | `false` |
| `GOOSE_SERVER__SECRET_KEY` | Shared secret required in the `X-Secret-Key` header on all client requests | Secret string | None |
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Fix incorrect defaults in goose Server env var table

The new goose Server table lists defaults that do not match runtime behavior: GOOSE_PORT is shown as “Server-assigned”, GOOSE_TLS as false, and GOOSE_SERVER__SECRET_KEY as None, but goosed actually defaults to port 3000 and TLS true (crates/goose-server/src/configuration.rs), and generates a random secret when the env var is unset (crates/goose-server/src/commands/agent.rs). This mismatch can lead users to expect HTTP/ephemeral-port behavior and then misdiagnose connection failures when following this guide.

Useful? React with 👍 / 👎.

Douwe Osinga added 2 commits May 18, 2026 10:30
The env var table listed GOOSE_PORT default as 'Server-assigned', GOOSE_TLS
as 'false', and GOOSE_SERVER__SECRET_KEY as 'None'. The actual defaults in
configuration.rs are port 3000, tls true, and a random auto-generated secret.

Also updated the TLS warning in the remote server guide to reflect that TLS
is enabled by default.

Signed-off-by: Douwe Osinga <douwe@squareup.com>
Copy link
Copy Markdown
Collaborator

@DOsinga DOsinga left a comment

Choose a reason for hiding this comment

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

Useful docs addition — fills a real gap for remote goosed setup.

I pushed a fix for the env var defaults that codex flagged: GOOSE_PORT defaults to 3000 (not server-assigned), GOOSE_TLS defaults to true (not false), and GOOSE_SERVER__SECRET_KEY auto-generates a random value (not None). Also updated the TLS warning to reflect that TLS is on by default.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4e14ae4726

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

6. [Troubleshooting](#troubleshooting)

:::warning TLS is required
goose Desktop will refuse to connect to a remote `goosed` server over plain HTTP. TLS is enabled by default (`GOOSE_TLS=true`), so make sure you have not disabled it.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove claim that remote Desktop connections require TLS

The guide says goose Desktop will refuse plain HTTP remote servers, but current desktop code explicitly supports HTTP external backends: URL validation allows both http and https (ui/desktop/src/components/settings/app/ExternalBackendSection.tsx, ui/desktop/src/utils/urlSecurity.ts), startGoosed forwards the configured URL unchanged (ui/desktop/src/goosed.ts), and CSP logic even disables upgrade-insecure-requests for HTTP external backends (ui/desktop/src/utils/csp.ts and its tests). This mismatch can send users down the wrong path (debugging TLS/fingerprint issues) when their HTTP remote setup is actually supported.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I got a bunch of CSP errors when I tried to connect over HTTP.

@DOsinga DOsinga added this pull request to the merge queue May 18, 2026
Merged via the queue into aaif-goose:main with commit ecdf369 May 18, 2026
22 checks passed
michaelneale added a commit that referenced this pull request May 19, 2026
* origin/main: (160 commits)
  Add Linux musl CLI builds (#9240)
  feat(acp): paginate session list (#9199)
  docs: reorganize (#9310)
  Structured per-provider config block, non-destructive provider switching (#8977)
  feat(cli): add `goose review` local code review command (#9114)
  feat(tui): diff viewer (#9260)
  fix(otel): emit trace_output as span attribute instead of event (#9255)
  docs: add guide for connecting goose Desktop to a remote goosed server (#9275)
  fix(config): check file fallback when keyring has no entry (#9279)
  fix(desktop): ScheduleModal error message styling (#9278)
  fix(ui): align sidebar hamburger in macOS fullscreen (#9257)
  Add documentation for new provider SaladCloud AI Gateway (#9253)
  fix: use current_exe() instead of PATH lookup when spawning goose (#9236)
  fix(extension_manager): set TCP_USER_TIMEOUT on streamable HTTP clients (#9207)
  fix: activate custom provider after adding via configure (#9213)
  Flush OTLP traces reliably on exit with configurable timeout (#9228)
  fix: reduce excessive MISSING_TRANSLATION warnings for fallback locales (#9294)
  feat(acp): pass session cwd param to acp providers (#9229)
  fix(desktop): eliminate cross-window deep link contamination (#9273)
  fix: improve Telegram gateway error reporting and connection reliability (#9223)
  ...

Signed-off-by: Michael Neale <michael.neale@gmail.com>

# Conflicts:
#	crates/goose/src/agents/agent.rs
#	crates/goose/tests/agent.rs
lifeizhou-ap added a commit that referenced this pull request May 20, 2026
* main: (70 commits)
  Feat/summon subagent instructions (#9325)
  feat: open-plugins generalization + skills (#9112)
  feat(hooks): PreToolUse denial (#9304)
  Add support for optional api_key configuration for declarative openai-engine providers (#9202)
  fix(cli): use plain '> ' prompt instead of goose emoji (#9305)
  flag for login shell PATH (#9313)
  Remove popular chat topics from new chat screen (#9307)
  fix: stop killing goosed when a window closes (#9302)
  Remove vendored Windows binaries (#9318)
  Add Linux musl CLI builds (#9240)
  feat(acp): paginate session list (#9199)
  docs: reorganize (#9310)
  Structured per-provider config block, non-destructive provider switching (#8977)
  feat(cli): add `goose review` local code review command (#9114)
  feat(tui): diff viewer (#9260)
  fix(otel): emit trace_output as span attribute instead of event (#9255)
  docs: add guide for connecting goose Desktop to a remote goosed server (#9275)
  fix(config): check file fallback when keyring has no entry (#9279)
  fix(desktop): ScheduleModal error message styling (#9278)
  fix(ui): align sidebar hamburger in macOS fullscreen (#9257)
  ...
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.

2 participants