DeepSeek Harness plugin

dsh-terminal-mattisme

A responsive, tabbed Ghostty terminal for the DeepSeek Harness Web UI

Jump to install

Source facts

Repository
mattismegevand/dsh-terminal
Latest update
Aug 16, 2026
Category
Development & Runtime
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/mattismegevand/dsh-terminal
Plugin: dsh-terminal-mattisme
Author: mattismegevand

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-terminal

English | 中文

> A VS Code-style terminal panel for DeepSeek Harness Web. It renders with ghostty-web, serves Ghostty's versioned WASM as an immutable asset, and connects to a local PTY through node-pty. Placement and resizing come from dsh-dock.

![MIT License](LICENSE) ![dsh-plugin](https://github.com/topics/dsh-plugin)

!terminal panel docked at the bottom of a Harness session

What it does

  • Multiple terminals per Harness session with a responsive tab tray.
  • Left, right, bottom, and floating placement through dsh-dock.
  • Live detachment and rejoining of terminal panes without restarting PTYs.
  • Resize propagation, truecolor, Unicode, selection, paste, scrollback, and full-screen programs.
  • Live light/dark palette synchronization with the active Harness theme.
  • Shell titles that follow the workspace, foreground process, and app-provided terminal title.
  • PTYs remain alive when a panel hides or moves, and stop when their tab, plugin, browser page, or Harness process closes.
  • Optional confinement by the session's current Harness sandbox policy.
  • Same-origin WebSocket fencing, bounded input, per-session caps, scrubbed environments, and output backpressure.

Install

Requires dsh-dock, the dsh CLI (Node.js 22.19+ or 24), and pnpm 10+.

From npm

dsh plugin --profile web add @mattismegevand/dsh-terminal

From GitHub

dsh plugin --profile web add github:mattismegevand/dsh-terminal

Git installs fetch sources, so pnpm runs the package's prepare build on first add. pnpm ≥10 refuses that until you allow it: copy the exact package key pnpm printed into the profile's pnpm-workspace.yaml allowBuilds entry, then re-run the same add.

Develop locally

git clone https://github.com/mattismegevand/dsh-terminal.git
cd dsh-terminal
corepack pnpm install
corepack pnpm check:all
dsh plugin --profile web add .

node-pty is native. If pnpm adds an allowBuilds.node-pty placeholder to the Web profile workspace, set it to true and rerun the same plugin-add command.

Usage

Open a session and select Terminal. Use + or Ctrl+Shift+\` for another shell. Drag a tray row to detach it; docking terminal panes on the same edge rejoins their live terminals. The panel × hides a pane, while the tray trash action ends its shell.

Configuration

- id: terminal
  name: '@mattismegevand/dsh-terminal'
  config:
    shellPath: /bin/zsh
    shellArgs: ['-l']
    maxTerminalsPerSession: 12
    maxCols: 400
    maxRows: 200
    disposeGraceMs: 2000
    respectSandbox: false
    outputHighWaterBytes: 2097152
    outputLowWaterBytes: 524288
    processTitlePollMs: 500
    initialCols: 100
    initialRows: 30
    fontSize: 13
    scrollback: 10000

With respectSandbox: true, the terminal uses the session's sandbox mode. In workspace-write, shells may warn that they cannot update history or other files outside the workspace; that is expected.

Related plugins

  • dsh-dock — the docking system that hosts this panel.
  • dsh-open — Codex-style workspace Open menu in the session header.
  • dsh-git — session-scoped working-tree Review panel.

Model experience

Human-operated terminal UI

#### What the model sees

Nothing. Terminal input and output travel between the human-operated browser terminal and its PTY; the plugin registers no model prompt, tool, or conversation message.

#### Token effect

Zero tokens are added to model requests or responses. Terminal output is not copied into model context.

#### KV Cache effect

None. PTY activity does not alter the main model request prefix.

Known limitations

  • The terminal is local-host only. Remote providers require a resize-capable Harness PTY contract.
  • PTYs intentionally do not survive a browser refresh, plugin reload, Harness shutdown, or explicit tab close.
  • respectSandbox follows the current local sandbox provider; changing mode requires closing active terminals first.
  • The Ghostty WASM asset path is versioned with the pinned ghostty-web dependency and must change when that asset is upgraded.

License

MIT