ChatGPT Multitab is a local Electron app for using the official ChatGPT web UI with workspace tab support.
2026-05-08: Changed from a Chrome plugin into an Electron app.
It keeps multiple ChatGPT pages in one desktop window. Each ChatGPT tab runs as a real Electron web contents view.
- Opens ChatGPT in a dedicated desktop window.
- Keeps multiple ChatGPT conversations available as workspace tabs.
- Runs each ChatGPT page in an Electron web contents view.
- Persists open and recently closed tabs in Electron user data.
- Supports
Ctrl+TorCmd+Tfor a new tab,Ctrl+WorCmd+Wto close the active tab, andCtrl+Tab/Ctrl+Shift+TaborCmd+Tab/Cmd+Shift+Tabfor tab switching.
You sign in to ChatGPT inside the Electron app. Electron keeps its own browser session, separate from Chrome or Edge.
- Node.js
- npm
Install dependencies:
npm installStart the app:
npm startThe Electron shell renders the tab strip. The ChatGPT pages themselves are attached by the main process as WebContentsView children beneath that strip.
Builds are written to dist/.
Windows:
npm run dist:winWindows shows Unknown publisher when the .exe or installer is not signed with a trusted code-signing certificate. This cannot be fixed with Electron code or package.json metadata alone.
To show a real publisher name, sign the Windows build with a trusted Windows code-signing identity. The lowest-friction current option is Microsoft Azure Artifact Signing / Trusted Signing. A traditional OV or EV code-signing certificate can also work, but a brand-new signed app may still show a SmartScreen warning until the file or publisher identity builds reputation.
For a local .pfx certificate, set signing credentials outside the repo before building:
$env:CSC_LINK = "C:\path\to\certificate.pfx"
$env:CSC_KEY_PASSWORD = "certificate-password"
npm run dist:winFor Windows-specific signing credentials, use WIN_CSC_LINK and WIN_CSC_KEY_PASSWORD instead.
After building, verify the signature:
Get-AuthenticodeSignature .\dist\*.exeThe status should be Valid, and Windows should show the certificate publisher instead of Unknown publisher.
macOS:
npx electron-builder --mac dmg zipLinux:
npx electron-builder --linux AppImage debBuild Windows packages on Windows, macOS packages on macOS, and Linux packages on Linux for the least friction. Cross-platform builds can require extra system tools such as Wine, code-signing certificates, or platform-specific packaging dependencies.
Run tests:
npm testRun syntax checks:
npm run checkelectron/main.js: Electron main process, window setup,WebContentsViewcreation, IPC handlerselectron/preload.js: safe renderer API exposed throughcontextBridgeelectron/renderer.html: tab-strip shellelectron/renderer.js: tab UI rendering and keyboard handlingelectron/renderer.css: desktop shell stylingsrc/electron-tabs.js: testable tab and view controllersrc/session-state.js: shared tab-session normalization helpers
