Back to home

ghbhiee

dsh-plugins

Terminal, file browser, and mobile/CLI plugins for DeepSeek Harness

Stars
0
Language
TypeScript
Created
Aug 15, 2026
Updated
Aug 16, 2026

Introduction

dsh-plugins

CI

Out-of-tree plugins for the DeepSeek Harness (dsh).

PackageWhat it adds
dsh-plugin-workbenchA file browser, file preview, an editor, and a browser terminal, all on one full-frame surface
dsh-plugin-mobile-shellNarrow-viewport drawer, swipe gestures, and a deployment-labelled tab title
dsh-plugin-cli-sessionA resume-capable CLI runner that prints conversational text or a machine-readable envelope
dsh-auth-gatewayA passkey (WebAuthn) reverse proxy that guards a dsh web app — a companion process, not a plugin (see its README for why)

Install

These are not on the npm registry, so dsh plugin add <bare-name> will not find them. Install from a release tarball (no clone, no registry) or from a local clone. Each package is its own bundle and installs on its own.

From a release tarball — download first, then add the local file. (Passing the URL straight to dsh plugin add trips a pnpm integrity check; download it.)

curl -LO https://github.com/ghbhiee/dsh-plugins/releases/download/v0.1.0/dsh-plugin-workbench-0.1.0.tgz
dsh plugin --profile web add ./dsh-plugin-workbench-0.1.0.tgz

From a clone — for local development:

dsh plugin --profile web add ./packages/workbench

Then enable what you want in the profile's cordis.patch.yml (each package's README lists its config). See each package for --profile (workbench and mobile-shell go in a web-style profile; cli-session in a headless one).

Develop

pnpm install
pnpm run check       # typecheck → test → build, in that order

Or individually: pnpm run typecheck, pnpm test (add :watch), pnpm run build.

A browser-half change needs a rebuild before dsh web picks it up — the shell serves lib/client.js, not sources.

Why the build is not just tsc

dsh loads a plugin's browser half through its own frozen module table, and the physical contract for that file — CJS wrapped in window.__ModuleLoader__.load, exactly ten external modules, CSS compiled and injected at runtime — lives in the harness repo's packages/client/tsdown.client.ts, which is not published. scripts/tsdown-preset.ts reproduces it so an out-of-tree package can ship UI at all. If a future dsh release changes that contract, this is the one file to update.