Skip to content

[desktop] 🤖 feat: add remote server connections - #4101

Merged
coadler merged 5 commits into
mainfrom
headless-mode-2jp4
Sep 6, 2026
Merged

[desktop] 🤖 feat: add remote server connections#4101
coadler merged 5 commits into
mainfrom
headless-mode-2jp4

Conversation

@coadler

@coadler coadler commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add a separate Remote Connection settings tab to the Electron app.
Users enter an HTTP(S) server URL and open the remote interface in an isolated window.

Background

Users can run Xum headlessly over SSH and access it through Tailscale.
They also need a desktop client without stopping their local backend or interrupting local tasks.

Behavior

  • Keep local services and renderer state alive while the remote window runs.

  • Restore the local interface when the remote window closes or the user disconnects.

  • Provide Return to Local in the native menu and through Ctrl/Cmd+Shift+L.

  • Remember the server URL and its app-proxy path without saving URL tokens. Do not connect automatically.

  • Use the remote server's browser interface and existing authentication flow.

  • Isolate remote sessions from local credentials and privileged IPC.

  • Keep terminal and desktop pop-outs inside the isolated remote session.

  • Support attachment windows, authentication popups, and user-triggered clipboard actions.

  • Reject built-in editor launches before the updated renderer records an editor-open marker.

  • Warn before HTTP connections without blocking them. Explain token exposure and secure-context limitations.

Risks

This change affects Electron window lifecycle, navigation guards, clipboard permissions, and local IPC authorization.
Remote windows use sandboxing without the local preload.
The local backend keeps its existing lifecycle.
The user chooses warning-only HTTP support for trusted encrypted tunnels.
Xum does not verify the tunnel. HTTP traffic outside a tunnel can expose authentication tokens and data.
Remote microphone permissions remain separate work.


Generated with xum • Model: openai:gpt-6-astra • Thinking: high • Cost: $83.84

Keep the local backend running while a separate window connects to a remote server.

---

_Generated with `xum` • Model: `openai:gpt-6-astra` • Thinking: `high` • Cost: `$26.87`_

<!-- mux-attribution: model=openai:gpt-6-astra thinking=high costs=26.87 -->

Co-authored-by: Mux <noreply@coder.com>
@coadler

coadler commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

This comment has been minimized.

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

Copy link
Copy Markdown

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: 45af351d59

ℹ️ 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".

Comment thread src/desktop/remoteConnectionManager.ts Outdated
Comment thread src/browser/features/Settings/Sections/RemoteConnectionSection.tsx Outdated
Comment thread src/browser/features/Settings/SettingsPage.tsx Outdated
Preserve app-proxy paths for connection identity and reconnects. Redirect unavailable remote settings routes.

---

_Generated with `xum` • Model: `openai:gpt-6-astra` • Thinking: `high` • Cost: `$49.68`_

<!-- mux-attribution: model=openai:gpt-6-astra thinking=high costs=49.68 -->

Co-authored-by: Mux <noreply@coder.com>
@coadler

coadler commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Security Review

Here are some automated security review suggestions for this pull request.

Reviewed commit: 63dc72efcd

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

Comment thread src/common/types/remoteConnection.ts

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

Copy link
Copy Markdown

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: 63dc72efcd

ℹ️ 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".

Comment thread src/desktop/remoteConnectionManager.ts
Comment thread src/desktop/remoteConnectionManager.ts
Comment thread src/desktop/remoteConnectionManager.ts Outdated
Mux added 2 commits September 6, 2026 11:17
Use unique editor frame names so remote wrappers reject unsupported launches before recording.

Keep browser launch and rollback behavior unchanged.

---

_Generated with `xum` • Model: `openai:gpt-6-astra` • Thinking: `high` • Cost: `$29.57`_

<!-- mux-attribution: model=openai:gpt-6-astra thinking=high costs=29.57 -->
Keep app pop-outs and attachments inside the remote session.
Reject editor placeholders before the renderer records an editor open.
Destroy every remote child window when the connection ends.

---

_Generated with `xum` • Model: `openai:gpt-6-astra` • Thinking: `high` • Cost: `$69.72`_

<!-- mux-attribution: model=openai:gpt-6-astra thinking=high costs=69.72 -->
@coadler

coadler commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

The three popup findings now have fixes and regression coverage.
The HTTP transport finding remains open pending the user decision.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 👍

Reviewed commit: 446c42c26b

ℹ️ 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".

@chatgpt-codex-connector

This comment has been minimized.

Keep HTTP available for trusted encrypted tunnels.
Explain token exposure and browser secure-context limits before connecting.
Leave microphone permission changes for separate work.

---

_Generated with `xum` • Model: `openai:gpt-6-astra` • Thinking: `high` • Cost: `$83.84`_

<!-- mux-attribution: model=openai:gpt-6-astra thinking=high costs=83.84 -->
@coadler

coadler commented Sep 6, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

The user chooses warning-only HTTP support to preserve encrypted-tunnel workflows.
The settings form now explains token exposure and secure-context limits before connection.
HTTP remains allowed by design. This warning does not claim to encrypt traffic or verify Tailscale.
Microphone permissions remain separate work at the user's request.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: ada83422f6

ℹ️ 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".

@chatgpt-codex-connector

This comment has been minimized.

@coadler
coadler added this pull request to the merge queue Sep 6, 2026
Merged via the queue into main with commit 0577aa6 Sep 6, 2026
35 of 38 checks passed
@coadler
coadler deleted the headless-mode-2jp4 branch September 6, 2026 17:18
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.

1 participant