Desktop app
WinLayer in its own window, with the analyst one keystroke away from anywhere in the OS.
The desktop app has a purpose-built decision layout: compact navigation, ranked opportunity radar, pipeline board, market intelligence, governed approvals, and a persistent analyst rail. It still uses the exact same tenant, roles, evidence, and Layer 1–9 APIs as the web workspace, so there is no second data model to drift.
Native notifications, the tray, and the assistant window make it useful even when the main workspace is in the background.
Install
| Platform | File | Install |
|---|---|---|
macOS | .dmg | Apple Silicon and Intel. Open the disk image, drag WinLayer to Applications. |
Windows | .exe | 64-bit NSIS installer. Per-user by default; you can change the install directory. |
Linux | .AppImage | chmod +x the file and run it — no installation, no root. |
Linux | .deb | Debian and Ubuntu: sudo apt install ./WinLayer-<version>.deb |
Signed public installers have not been published yet. The desktop and CLI page shows the supported targets and links to the source-build instructions below.
First run
Launch it and sign in with the same WinLayer account you use in the browser — there is no separate desktop credential. The session is shared with the assistant window, so signing in once covers both.
Sign-in and billing redirects (your identity provider, Stripe) open inside the window so the flow completes normally. Every other link opens in your real browser — the shell deliberately refuses to become a general-purpose browser.
The assistant window
Press Ctrl+Shift+A (⌘+⇧+A on macOS) from anywhere in the OS — not just from WinLayer — and a small window appears holding just the analyst conversation. Ask it about your pipeline, read the answer, press Esc, and you are back in whatever you were doing. Pressing the shortcut again while it has focus dismisses it.
It reads your workspace — profile, scored opportunities, pipeline — and it answers; it never changes anything. It is the same component and the same endpoint as the in-app Copilot, so the two can never drift apart.
If another application already owns that shortcut, registration fails silently and the combination keeps doing whatever it did before. The tray icon and the app menu reach the same window.
What the tray gives you
- Ask WinLayer — the same assistant window, for anyone who would rather click than remember a shortcut.
- Open workspace — restore or re-open the main window.
- Quit — explicitly close the application from the tray or app menu.
Some Linux desktops have no status area at all. The app starts normally without one — the tray is a convenience, never a requirement.
Offline and reconnecting
When the app can't reach WinLayer it shows a bundled offline page with a retry button rather than a browser error. Ctrl+R from that page retries the app itself instead of reloading the error.
Security posture
- Renderer runs with
contextIsolationon,nodeIntegrationoff, andsandboxon. - The preload exposes one bounded bridge for reload, notifications, badges, safe in-app navigation, and window controls. No general Node or filesystem access reaches the page.
- Navigation is allow-listed: WinLayer and its identity and billing providers load in-window, everything else is handed to the system browser.
- A single-instance lock means launching it twice focuses the existing window instead of opening a second.
The desktop app is a client, not a new trust boundary — tenancy, roles, and audit are enforced server-side exactly as they are for the web app. See Security & tenancy.
Build it yourself
The Electron project lives in desktop/, deliberately outside the npm workspaces so API and web Docker builds never pull Electron.
cd desktop
npm install
npm start # run against the deployed app
npm run dev # same, with DevTools
npm run dist:linux # AppImage + .deb
npm run dist:win # NSIS .exe
npm run dist:mac # .dmgInstallers land in desktop/release/. Point the shell at a different host with WINLAYER_APP_URL. Cross-building is limited: a .dmg can only be built on macOS, and Windows builds on Linux need wine — real multi-OS releases want a CI matrix with one runner per OS.
Known limits
- Builds are unsigned. Windows SmartScreen and macOS Gatekeeper will warn on first launch, and locked-down corporate or government IT may block them outright. Signing needs an Apple Developer ID and a Windows code-signing certificate.
- No auto-update yet. New versions are installed the same way as the first one.
- No public release artifacts yet. The code and local build are available; publishing and signing remain release operations.