davidtan2008/deepseek-harness-desktop

deepseek-harness-desktop

deepseek-harness-desktop

Uncategorizeddeepseekdeepseek-harnessdeepseek-harness-desktop

DeepSeek Harness Desktop

The local-first, plugin-friendly, Cursor-style AI coding workbench for DeepSeek Harness users.

Unofficial community project · source preview · not the official DeepSeek Desktop application and not endorsed by DeepSeek.

中文 · Market research · Roadmap · Architecture · AI agent guide

Why this project exists

DeepSeek Harness is a composable agent runtime: the model supplies reasoning, while Harness supplies tools, skills, sessions, permissions, sandboxing, and a real workspace. DHD does not reimplement that runtime. It provides a daily developer workbench around it:

open a repository → attach context → run an agent → review changes → run tests → commit or revert

The long-term product direction is a Harness-native agent IDE control plane, not a browser wrapper:

  • preserve Harness Sessions, Trajectory, Skills, MCP, approvals, and tools;
  • bring editor, terminal, Git, search, and Agent work into one local window;
  • make provider/transport capabilities explicit and replaceable;
  • make every process, watcher, search, PTY, and Host generation recoverable;
  • keep project data and credentials local by default.

Current status

This repository is a 0.1.0 source preview, not a signed production distribution.

StatusCapability
Implemented and manually checkedHost lifecycle, file tree/editor, search with fallback, PTY with fallback, basic Git, workspace sync, coordinated shutdown
Implemented without outer automated regressionMonaco tabs, command palette, MCP/Rules entry points, inline edit, layout persistence
Upstream capabilityHarness presets, Trajectory, tool cards, Skills, MCP, Sessions, subagents/fork/workflow/experimental Agent Teams inside the iframe
Early native vertical sliceMain-owned Session runtime, structured context/prompts, and tool/approval/change events after workspace sync; real provider/model review is not complete
PlannedPer-turn before/after diff, provider/agent roster, worktree isolation, bundled runtime, signed release/update channel

Important current limits:

  • The full default Agent surface remains a tokenized Harness Web UI iframe; after workspace sync DHD attempts to attach native controls to the same Host/Session, but this is not a completed native dsh-client embedding.
  • Selection handoff uses structured Session context when the native channel is available; iframe/clipboard handoff remains an explicit fallback.
  • The Changes panel is still repository-level Git diff; native change-projection currently exposes changed paths only.
  • Desktop defaultModel, defaultPreset, and sandboxMode are not automatically Host-effective settings.
  • The repository now has a target-specific Harness/Node/pnpm/rg closure staging entry point and a macOS arm64 post-pack resource check, but installed startup, formal signing/notarization and cross-platform release evidence are still pending. A packaged Host fails closed when the runtime manifest is incomplete instead of silently falling back to system Node/npx.
  • The outer repository has no complete unit/E2E suite; pnpm test:contract covers capability, IPC/preload, Host IPC/Session fixtures, and the static upstream Desktop compatibility gate; typecheck/build are not real provider/model tests.

See the version-bound support matrix before making product claims.

Run from source

Requirements: Node ^22.19.0 or >=24, pnpm 10.14.0, Git submodules, and a built Harness checkout.

git clone --recursive git@github.com:davidtan2008/deepseek-harness-desktop.git
cd deepseek-harness-desktop
pnpm install
cd harness && pnpm install && pnpm run build && cd ..
pnpm doctor:env
pnpm dev

For parallel coding agents or worktrees, isolate the runtime:

DSH_HOME="$(mktemp -d)" \
DHD_USER_DATA="$(mktemp -d)" \
DHD_WORKBENCH_PORT=5183 \
DHD_ALLOW_MULTIPLE=1 \
pnpm dev

Architecture

flowchart LR
  User[User] --> Main[Electron Main]
  Main -->|spawn / adopt| Host[DeepSeek Harness Host]
  Main -->|typed preload IPC| UI[React Workbench]
  UI --> Editor[Monaco / Explorer / Search]
  UI --> Terminal[xterm / PTY]
  UI --> Git[Git panel]
  UI --> Agent[Agent iframe\nHarness Web UI]
  Host --> Runtime[Session / Tools / Skills / MCP / Sandbox]
  Main --> AgentRuntime[Native Session transport]
  AgentRuntime --> Host
  Main --> Platform[FS / watcher / credentials / updater]

The Host is an external Node process. Main supervises it but does not execute Agent tools or directly write Session logs; the native runtime sends prompts and reads events through the Host Remote API. The Renderer has no Node integration and uses only the typed preload API. The exact lifecycle and private Host compatibility seams are documented in docs/architecture.md.

Environment variables

VariablePurpose
DHD_HARNESS_ROOTSelect the Harness source checkout.
DHD_HARNESS_URLAdopt a loopback dsh web URL; an adopted Host is not terminated by the desktop.
DHD_NODESelect the Node executable used to launch an owned Host.
DSH_HOMESelect the Harness profile/session/credential home.
DHD_USER_DATAIsolate Electron userData for development instances.
DHD_WORKBENCH_PORTSelect an isolated Vite renderer port.
DHD_ALLOW_MULTIPLE=1Development-only bypass of the single-instance lock.
DHD_ALLOW_REMOTE_HOST=1Explicit unsafe override for non-loopback Host URLs; avoid normal use.
DHD_ALLOW_UNBUNDLED_RUNTIME=1Local diagnostic override for a packaged app without bundled Harness/Node; never use for releases.
RIPGREP_PATHSelect the ripgrep executable.

Documentation map

Checks

pnpm docs:check
pnpm upstream:check
pnpm typecheck
pnpm smoke:native-turn
pnpm test:contract
pnpm build
git diff --check

Run runtime staging, closure smoke, and the fail-closed release gate separately (signing, notarization, and cross-platform installation evidence are still pending):

pnpm runtime:prepare
pnpm smoke:runtime-closure
pnpm smoke:packaged-host
pnpm release:check

Run real Host, PTY, search, shutdown, and packaging flows for changes that affect them. Report the exact commands run and any unverified platform; do not describe build success as runtime coverage.

Upstream relationship

DHD is an independent community project. The pinned Harness checkout already contains an upstream Desktop implementation; DHD does not replace or represent it. It uses the upstream project as a pinned runtime and keeps desktop-specific behavior in this repository.

License

MIT for this repository. Upstream and third-party components retain their own licenses; release work must produce complete notices and a runtime manifest.