First release. The official DeepSeek Harness, wrapped as a macOS app.
Download — macOS 11+, Apple Silicon, signed and notarized.
A Tauri 2 shell over the system WKWebView, a trimmed dsh backend, and dsh's own web UI. Not one line of frontend logic is copied — the interface is upstream's ui-* plugins, and it follows upstream releases.
| Size | |
|---|---|
npm i @deepseek-ai/dsh as-is |
347 MB |
| Trimmed backend | 31 MB |
Installed .app |
98 MB |
| DMG | 36 MB |
An Electron build would be roughly 340 MB installed.
Where the 249 MB went — nothing bundled that macOS already has, and nothing kept that this app cannot reach:
- the system WKWebView draws the window, so no Chromium and no second JavaScript engine
- Bun rather than Node as the sidecar runtime, with a native-PTY adapter in place of
node-pty - OpenTelemetry export, which defaults to disabled, dropped with its 34 MiB of
@opentelemetry - the non-DeepSeek LLM providers dropped — 70 MiB for backends this app does not offer
- the native ripgrep binary swapped for the wasm build of the same tool: 4.3 MiB down to 768 KiB, byte-identical
--jsonrecords, sogrepandglobstill work - sharp's decoders swapped rather than the plugin removed — the API gateway hard-depends on it and will not start without it
- React, shiki and KaTeX dropped: 5.5 MB pulled in by browser-only packages that nothing in a headless host composes
It updates itself. Once a day, five seconds after launch, and silent unless there is something to say; Check for Updates… in the application menu asks immediately and always answers. An offer can be taken, postponed, or skipped. The update window is native rather than drawn into upstream's UI, which would couple the shell to markup upstream is free to change.
Your ~/.dsh is left alone. The app seeds its own trimmed profile under ~/Library/Application Support/com.nekocode.dsh-desktop/. From first launch that cordis.patch.yml is yours, and upgrades never overwrite it.