SC0321
harnessbay
HarnessBay — a desktop home for DeepSeek Harness (macOS/Windows). Fork of DeepWharf.
- Stars
- 1
- Language
- TypeScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
HarnessBay
中文 | English
A desktop home for DeepSeek Harness (
dsh). Double-click an installer and get the full Harness agent experience as a native desktop app — no Node.js, no npm, no terminal required.
HarnessBay is a thin, upstream-friendly Electron wrapper. It does not fork or modify DeepSeek
Harness; it embeds an isolated Node.js runtime plus a vendored copy of dsh, launches dsh web,
waits for the local server, and presents the official Web UI in a native window.
HarnessBay (Electron)
└─ spawn embedded node (node.exe on Windows)
└─ dsh web --port <auto>
└─ BrowserWindow (webview) → http://127.0.0.1:<port>
Features
- Zero-dependency install — bundled Node.js runtime + vendored Harness; works offline.
- Native desktop shell — single merged title bar (logo + Plugin Store + Settings), themable (follows system light/dark), localized (简体中文 / English).
- Plugin Store — browse the
dsh-pluginecosystem (npm registry) and install via the officialdsh pluginmechanism (bundled pnpm). - Desktop integration — closing the window minimizes to the system tray (Harness sessions keep
running), a global
Ctrl+Alt+Dhotkey shows the window, and launch-at-startup is optional. All three can be toggled in Settings. - Notifications & onboarding — system toasts for approvals, questions, finished tasks, and agent errors; first run detects missing API keys and walks you through the official credential store (effective immediately).
- Session history — a dedicated window to browse all sessions, full-text search them, and export any one as a ZIP (with subagent logs and media attachments).
- Shell Settings — language, theme, auto-update toggles, version info, logs.
- Harness auto-update — checks the registry and swaps
resources/harnessatomically. - Clean lifecycle — single instance, port auto-pick, HTTP ready-probe, process-tree cleanup on exit.
- Safe —
contextIsolation+ sandbox; user data lives in the OS user-data dir (never in the install dir).
Platform support
- Windows — NSIS installer (
HarnessBay-Setup-<ver>-x64.exe) + portable build (HarnessBay-Portable-<ver>-x64.exe), x64. - macOS — DMG + ZIP, both x64 and arm64 (Apple Silicon). Code signing + notarization are enabled automatically when Apple credentials are present (see CODE_SIGNING.md); unsigned builds work but Gatekeeper will warn on first open.
Download / Install
Grab the installer for your platform from Releases:
- Windows:
HarnessBay-Setup-<ver>-x64.exe(NSIS) orHarnessBay-Portable-<ver>-x64.exe. - macOS:
HarnessBay-<ver>-<arch>.dmg(or.zip).
The Windows installer wizard defaults to a per-user install (no admin needed) and lets you pick the install directory (elevation is only requested for protected locations); overwrites preserve your data.
Build from source
Requires Node.js ≥ 22 on the build machine only.
npm install
npm run prepare:node # download embedded node + npm + pnpm -> resources/runtime
npm run prepare:harness # vendor @deepseek-ai/dsh + prune -> resources/harness
npm run icon # regenerate build/icon.ico + build/icon.png from build/brand-icon.png
npm run dist # build the current platform's artifacts -> release/
npm run dist:win # Windows only (NSIS + Portable)
npm run dist:mac # macOS only (DMG + ZIP, x64 + arm64)
The brand artwork lives in build/brand-icon.png (square PNG with
transparency). To swap it: npm run icon path/to/new-art.png — the script
copies the file into build/, regenerates the Windows .ico and the 1024px
.png (from which electron-builder derives the macOS .icns), the shell logo,
and a macOS tray icon; later rebuilds keep using the committed source.
Notes
- Install speed: the Harness payload is pruned (sources/maps/docs stripped) and the NSIS package
uses
compression: storefor fast on-disk extraction. - Code signing: pluggable hook
scripts/sign.js(HARNESSBAY_SIGN_MODE=test|pfx|sigpath|none). Release artifacts are built by GitHub Actions CI. Windows builds can be signed via the SignPath Foundation (Free code signing provided by SignPath.io, certificate by SignPath Foundation); macOS builds use Developer ID + notarization when Apple credentials are configured. See CODE_SIGNING.md. - Shell self-update feed: checks GitHub Releases by default (override the repo with
SHELL_UPDATE_REPO, or pointSHELL_UPDATE_URLat a custom{ "version": "x.y.z" }JSON).
License
MIT — HarnessBay is an independent wrapper (forked from DeepWharf, MIT); DeepSeek Harness remains under its own license.