Skip to content
ASVLCIIPublic

About

GPT PC² — access your existing ChatGPT window from another Windows PC over Tailscale.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

GPT PC²

GPT PC² logo

A Windows companion app for viewing and controlling your existing ChatGPT window from another PC. Black-and-white interface with the supplied GPT PC² logo. Independent software; not an official OpenAI application.

Download the Windows x64 preview · Validation and known limits

This is a v0.1.0 preview. Local capture, pairing, streaming and input checks passed; a real two-PC internet test is still required.

Start here

  1. Extract the whole Windows ZIP into a folder on each PC. Run GPTPC2.exe. No .NET installation is needed for the packaged build.
  2. Install Tailscale for Windows on both PCs and sign in to the same private network. Complete its account and device approval steps yourself.
  3. On the host, open ChatGPT and GPT PC². Select Host this PC, choose the ChatGPT window, select the Tailscale address, and click Enable hosting.
  4. On the controller, select Connect to a PC. Enter the host's Tailscale IP (100.x.x.x) and its pairing code. Choose Pair and connect.
  5. Approve the named device on the host. Codes expire in five minutes, are single-use, and are consumed even when the request is declined. Generate a new code to retry.
  6. In the viewer, choose Focus host window, then click the remote message box. Continue the existing chat using the real app. Reconnect later by selecting the host in Saved PCs.

Both PCs must remain on Tailscale. The host app must remain running, signed in and unlocked, with the shared window restored. Hosting does not resume automatically after closing GPT PC² or rebooting; start it again locally. Trusted device credentials remain saved.

Controls

  • Click and type in the streamed window. Scrolling and text selection work there.
  • Actual size shows the received image without scaling; otherwise it fits the viewer. The stream is capped at 1920 pixels wide.
  • For a long prompt, click the remote composer, paste into the local text box beneath the viewer, then choose Type on host. This inserts text without submitting. Verify the insertion, then press Enter in the remote composer to send.
  • Direct Ctrl+C/Ctrl+V operate on the host clipboard. Clipboards are not synchronized. The local text box is the route for inserting text from the controller.
  • Ctrl+Alt+Q releases remote input. Mouse/keyboard focus changes also release held keys and buttons.
  • Focus host window asks Windows to activate the selected window. Windows may refuse foreground activation; in that case bring ChatGPT forward on the host locally.
  • Disconnect ends the active connection. Forget selected device on the host revokes its credential and disconnects it immediately. Removing a saved PC on the controller only removes that controller's saved entry.

What is included

Window capture, up to 15 JPEG frames per second, two authenticated WebSocket connections, device pairing, persistent trusted PCs, Unicode input, saved hosts, window resize checks, and disconnect/revocation controls. Original chats stay inside ChatGPT: this does not read its internal database, recreate conversations, or require an OpenAI API key.

The logo PNG is supplied by the user. Build-Icon.ps1 resizes it into Windows icon sizes and rounds only the outer tile corners using transparency; the original artwork is preserved in Assets/logo.png.

Limits

  • Windows x64, Windows 10 version 2004 or later / Windows 11, with Windows Graphics Capture support. Tested locally on the available Windows desktop; other Windows versions and hardware are not certified.
  • A single active controller per host. Local use of the host mouse/keyboard can interrupt the remote user.
  • The shared window must be unminimized and the host unlocked. For input it must also be in front. Locking, switching focus, or losing frames pauses input.
  • Voice, audio, file transfer, external browser windows, file pickers in separate windows, elevated applications, UAC and the Windows login screen are outside v1.
  • Window capture may omit separate popups and dialogs. Use inline approvals where visible; other dialogs need local interaction.
  • Frames are not recorded. Network status messages contain no chat contents. Device names and credentials are stored locally under %LOCALAPPDATA%\GPTPC2\devices.dat, protected with Windows DPAPI for the current Windows user.
  • Network encryption is provided by Tailscale, not by an additional TLS layer. The native service binds only to a detected Tailscale interface, accepts only Tailscale source addresses, rejects browser-origin requests, and requires authentication on both channels. Do not port-forward it or publish it using Tailscale Funnel.
  • This build is unsigned. No signing certificate or app-store publication is included.

Troubleshooting

No Tailscale address: install/start Tailscale, sign in, then press Refresh next to the address selector.

Cannot connect: ensure hosting is enabled, the host is awake, both PCs are connected to Tailscale, and this controller is still trusted. The service uses TCP 47832 on the Tailscale interface. Any firewall or tailnet policy must allow that traffic between your two devices; this app does not create firewall rules.

Black/paused view: restore the host window, unlock the host, and check that the selected window still exists. If ChatGPT restarted, stop hosting, refresh the window list, and choose the new window.

Input does nothing: choose Focus host window, click its composer and retry. Run both applications normally, not as administrator. Remote control uses the host's foreground desktop; it cannot bypass Windows input restrictions.

Text did not appear: the host may have lost focus. Keep the text in the local box until you verify it was inserted. Do not repeatedly retry without checking for duplicates.

Remove

Stop hosting and close GPT PC², then delete its extracted folder. To remove all saved pairings, delete %LOCALAPPDATA%\GPTPC2 after closing the app. If no longer needed, uninstall Tailscale separately using Windows Installed apps and remove the PC from your Tailscale device list. The keep-awake request lasts only while GPT PC² is hosting; it does not rewrite your power plan. No startup task or background Windows service is installed by GPT PC².

Build and test from source

Install the .NET 10 SDK on Windows. From this source directory:

dotnet build PCLink.csproj -c Release
dotnet publish PCLink.csproj -c Release -r win-x64 --self-contained true -o publish
./publish/GPTPC2.exe --self-test ./self-test.txt

The self-test briefly opens its own test window. It uses an isolated device store beside the report and loopback only, never your Tailscale host or ChatGPT conversations. The test-only loopback binding is inaccessible through the regular hosting UI. It writes a text report and fixture JPEG. This is a functional test and does not replace a real two-PC acceptance test.

For regular use copy this README and VALIDATION.md next to the published executable. Ship the entire publish directory, including runtime DLLs.

Protocol

POST /v1/pair accepts version, pairing code and device name; host approval issues a random device token. /v1/control authenticates via bearer token and issues a session ID. /v1/video requires the same device token plus X-Session. Control messages are bounded, versioned JSON; binary video frames carry version, sequence, width and height followed by JPEG bytes. Input refers to an observed frame and is rejected for stale or changed window geometry. Network loss cancels both channels and releases injected keys/buttons.

About

GPT PC² — access your existing ChatGPT window from another Windows PC over Tailscale.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages