dsh-tui

The DeepSeek Harness in your terminal

A terminal chat for the DeepSeek Harness: the conversation is the screen, the agent's tools fold into single lines, and what it asks to do you approve with a click.

Install on Linux or macOS — copy and paste into your terminal:
curl -fsSL https://auth-com-br.github.io/dsh-tui/install.sh | sh

Then type dsh — no --profile — and choose a model with /models. No sudo: everything goes into your home folder.

 ✓ bash ls src • 0.1s
   composer.js  index.js  terminal.js  ui.js

 • Found the files. Updating the other project's README.

   ⠸ Running edit {"path":"/home/you/site/README.md"…
 ─ ⠏ Working 12s · ~40 tok/s ─────────────────── esc interrupt ─
 ▲ approval needed · edit
   {"path":"/home/you/site/README.md","old":"…","new":"…"}
   escalate sandbox: the file is outside the workspace
   › 1. Allow once  (y)
     2. Reject  (n)
   ↑↓ · enter or click · y allow · n/esc reject
   deepseek-v4-flash · ~/project        ctrl+t thought   ctrl + c quit

What it does

The conversation is the screen

No boxes, no chrome: the transcript is anchored at the bottom, always in view, with the model and folder in a quiet footer.

Tools folded into lines

Each command the agent runs is one line: ⠋ Running while it runs, ✓ or ✗ when done, its output summed up below.

Approvals as a menu

When the agent wants to reach outside its workspace, the answers are listed: pick one with the arrows, Enter, a click, y or n.

Thinking that folds

The model's reasoning stays folded; a click or ctrl+t opens and closes it. esc interrupts an answer at any time.

Multi-line messages

ctrl+j breaks the line, as in Claude Code and OpenCode; Enter sends.

Copy, paste and images

A drag selects the conversation alone and copies it on release; ctrl+v attaches the clipboard's image; /copy copies the last answer.

Any model

/models sets up providers: an API key, or a server of your own, local or remote.

Your terminal's theme

Colors are derived from your terminal's background, light or dark, rather than fixed values.

Keys

entersend the message
ctrl + jnew line in the message (alt + enter too)
ctrl + ↑ / ↓messages sent before
wheel, ↑ / ↓, page up/downscroll the conversation
dragselect in the conversation, copied on release
ctrl + vattach the image on the clipboard
ctrl + topen or fold the thinking
escinterrupt the answer; back to the latest
/helpevery key and command
ctrl + cquit

What the installer does

  1. Uses the Node.js 20+ you already have; if there is none, downloads the official build into ~/.local/share/dsh-tui/node, checked against its SHA-256 sum.
  2. Installs the DeepSeek Harness with it, at the version dsh-tui is tested on (the harness's 0.2 series changed its API and does not run it yet), into ~/.local/share/dsh-tui/harness.
  3. Downloads dsh-tui from this repository and wires the harness's tui profile to it.
  4. Puts in ~/.local/bin a dsh command that opens dsh-tui with no --profile (the harness's own commands, such as dsh web and dsh plugin, still work), and dsh-tui, which always opens it. A dsh of your own already there is left alone.

To update, run the same command again. Your settings, sessions and keys in ~/.dsh are left alone. The installer's code is docs/install.sh — read it before you run it, if you like.

To remove it: rm -rf ~/.local/share/dsh-tui ~/.local/bin/dsh ~/.local/bin/dsh-tui. Your sessions and settings stay in ~/.dsh.