dsh-console
Manifest validSlash-command console for dsh: /web start|stop|restart|status, /tunnel SSH forward management, one-shot /ask, and a console TUI launcher.
dsh-console
Console commands for DeepSeek Harness: manage the web service, the SSH tunnel, one-shot questions, and an optional console TUI — straight from the slash-command plane.
Quick start
# 1. install the bundle
dsh plugin --profile web add dsh-console
# 2. restart dsh web, then use the commands
/web status
/tunnel status
Out of the box, /web and /tunnel status work with zero config (the plugin auto-detects the running dsh entry). Configure the tunnel host and the console TUI path in the profile's cordis.patch.yml:
- id: dsh-console
config:
tunnelHost: '192.168.1.100' # your SSH server
tunnelUser: 'root'
tunnelKey: 'C:\\Users\\you\\.ssh\\id_rsa'
consoleCommand: 'python C:\\tools\\dsh-tui\\main.py'
Then dsh plugin --profile web again + restart, and /tunnel start / /console are live.
Commands
| Command | Description |
| --- | --- |
| /web status | Is the web UI up? (port + PID) |
| /web start | Background-start the web UI (node <dshBin> web --port <webPort>) |
| /web stop | Stop the web UI process |
| /web restart | Restart it |
| /tunnel status | Is the SSH tunnel up? |
| /tunnel start | Start the SSH tunnel (needs tunnelHost) |
| /tunnel stop | Stop the tunnel |
| /ask <问题> | One-shot question through the headless profile (timeout-bounded) |
| /console | Launch the console TUI (needs consoleCommand) |
Configuration
All keys carry sensible defaults; set them in the profile's cordis.patch.yml (or a --patch overlay), overriding the row this bundle adds:
- id: dsh-console
config:
webPort: 3080 # dsh web UI port
dshBin: '' # path to apps/cli/lib/bin.js; empty = auto-detect
tunnelHost: '192.168.1.100'
tunnelUser: 'root'
tunnelKey: 'C:\\Users\\you\\.ssh\\id_rsa'
tunnelLocalPort: 3081
tunnelRemotePort: 3080
askTimeout: 150
consoleCommand: 'python C:\\tools\\dsh-tui\\main.py'
| Key | Default | Meaning |
| --- | --- | --- |
| webPort | 3080 | The dsh web UI listens on 127.0.0.1:3080 by default; /web start spawns it there. |
| dshBin | auto | Absolute path to your checkout's apps/cli/lib/bin.js. Empty = detected from the running process (process.argv[1]), so a from-source dsh usually needs no config. |
| tunnelHost | '' | SSH server host. Empty disables /tunnel start. |
| tunnelUser | root | SSH user on the server. |
| tunnelKey | '' | Absolute path to your SSH private key (-i). Omit for agent/other auth. |
| tunnelLocalPort | 3081 | Local listen port of the tunnel (127.0.0.1:3081). |
| tunnelRemotePort | 3080 | Remote port the tunnel forwards to (127.0.0.1:3080 on the server). |
| askTimeout | 150 | Seconds before /ask is killed. |
| consoleCommand | '' | Shell command launching your console TUI. |
How the tunnel is wired
your machine SSH server (tunnelHost)
127.0.0.1:3081 ──ssh -L──▶ 127.0.0.1:3080
▲ ▲
│ /tunnel start binds here │ dsh web runs here (or any service)
/tunnel start runs ssh -N -L <tunnelLocalPort>:127.0.0.1:<tunnelRemotePort> <tunnelUser>@<tunnelHost> (with -i <tunnelKey> when set) as a detached process. /tunnel stop finds and kills the listener on tunnelLocalPort.
Typical setups
- Local launcher (CLI/headless profile) — manage the web UI from a terminal:
/web start→ openhttp://127.0.0.1:3080;/web stop→ stop it. - Remote web (this machine reaches another host) — point
tunnelHostat the remote, browsehttp://127.0.0.1:<tunnelLocalPort>. - In the web profile itself —
/web statusand/tunnel statusare safe;/web stop|restartkill the process serving the current UI — manage deliberately.
Security notes
/web stop//web restartkill the process serving the current UI when run from the web profile./tunnel startrunssshwith your configured key — only configure keys from sources you trust./askruns the headless profile and consumes model quota; results are rendered by the command plane and never enter model history.
Development
npm test # node test of the backend primitives (read-only)
pnpm pack # build the installable tarball
The bundle has no build step: plain ESM, ships index.js + lib/ + cordis.patch.yml.
From the same category
DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.
★ 41.7k
↓ 255/wk
MIT
Aug 24, 2026
dsh plugin --profile web add dsh-plugin-reactive-resumeby anywhere-labs
为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 26.8k
↓ 300/wk
MIT
TypeScript
Sep 15, 2026
dsh plugin --profile web add dsh-plugin-desktopby MemTensor
Self-evolving memory OS for LLM & AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.
★ 11.4k
↓ 1k/wk
Apache-2.0
TypeScript
Sep 9, 2026
dsh plugin --profile web add @memtensor/memos-local-pluginby zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 7.6k
Apache-2.0
TypeScript
Sep 15, 2026
dsh plugin --profile web add dsh-webby Devin-AXIS
Enterprise-grade, local-first Agent Workbench for people and agent teams. A unified multi-engine workspace for Codex Harness, DeepSeek Harness, and OpenCode, with unified plugins and Skills, multi-age
★ 6.1k
↓ 459/wk
NOASSERTION
TypeScript
Sep 15, 2026
dsh plugin --profile web add deepseek-idesignby crafter-station
A public gallery of animated pets for Codex, Claude Code, DeepSeek Harness, Hermes, OpenCode, Gemini CLI, and more.
★ 4.1k
MIT
TypeScript
Sep 14, 2026