Skip to content

Repository files navigation

DeepSeek Harness desktop shell

English | 中文

Wails v2 window that supervises dsh --profile web and loads the existing Web GUI in a WebView. It does not reimplement the product UI or replace the HTTP/WebSocket host.

Prerequisites

  • Go 1.22+ and the Wails v2 CLI v2.10.2+ (wails on PATH; older CLIs fail against current Go export data)
  • Repository toolchain: Node, pnpm, and a built frontend dist (pnpm run build or at least pnpm run build:web so @deepseek-ai/dsh-web-frontend/dist exists)
  • DEEPSEEK_API_KEY (or root / Harness-home .env) for real model turns; the shell still boots the GUI without a key

Develop

From the repository root, build host artifacts once (or after a clean), then start the shell:

pnpm run build
pnpm run desktop:dev

dsh --profile web needs both package lib/ outputs and apps/web/dist. Without them the child exits immediately (the shell now fails fast when apps/web/dist/index.html or packages/bundle/web-app/lib/index.js is missing).

That runs wails dev in this directory with DSH_DESKTOP_REPO_ROOT set to the repo root. The shell picks a free loopback port, starts pnpm dsh --profile web --host 127.0.0.1 --port <n>, waits for the dsh web: http://127.0.0.1:<n> line, then navigates the WebView to that URL.

Override the checkout path only when the working directory is not under the monorepo:

DSH_DESKTOP_REPO_ROOT=/path/to/deepseek-harness pnpm run desktop:dev

Build

pnpm run desktop:build

The macOS/Windows/Linux binary lands under apps/desktop/build/bin/. The packaged app still expects pnpm and this checkout (or a layout findRepoRoot can resolve) at runtime for the Node host; shipping a self-contained Node runtime is out of scope for this thin shell.

Process lifecycle

  1. Allocate 127.0.0.1:0, then pass the chosen port to dsh.
  2. Inherit the process environment (credentials, DSH_HOME, …).
  3. On window close, SIGTERM the process group, then SIGKILL after a short wait.

Known Limitations and Deferred Work

  • Product UI remains the loopback dsh web stack; there is no IPC/file:// carrier yet (GUI layering).
  • No system tray, custom native menus, or single-instance lock in this cut.
  • Native directory-picker via Wails dialogs is not wired; the Web profile keeps its existing picker backends.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages