Back to home@papachong

deepseek-harness-tui

This is a standalone terminal for deepseek-harness (designed based on a plug-in approach), updated in sync with the official deepseek-harness repository, and inherits the capabilities of the official product.

Stars
1
Language
TypeScript
Created
Aug 21, 2026
Updated
Aug 26, 2026

Introduction

DSH TUI

English | 中文

A terminal UI for DeepSeek Harness, the plugin-based agent harness where everything is a plugin. DSH TUI runs the agent loop in-process and renders it with an OpenTUI (SolidJS) interface: streaming markdown, per-tool cards, themes, and work modes.

DSH TUI home

Features:

  • Home and chat pages with streaming markdown replies
  • Tool-call cards: terminal, diff, read, search, web
  • Slash commands with an autocomplete menu: /model, /mode, /theme, /lang, /sessions, /clear, /compact, /goal, /plan
  • @path file mentions and @[session] cross-session mentions
  • Sidebar session list with resume, approval prompts, 33 themes
  • Tab-cyclable work modes (standard / code / minimal / cordis) backed by agent presets
  • Runtime UI locale switching (en / zh), detected from the system env and overridable via /lang
  • JSONL session persistence under ./.sessions (override with DSH_SESSION_ROOT)

Install

DSH TUI is a dsh bundle distributed through the npm ecosystem (no standalone binary). The package is published as @ruhooai/dsh-tui with a prebuilt lib/.

Via dsh (recommended)

Install the bundle into a profile, then launch through the profile:

dsh plugin --profile default add @ruhooai/dsh-tui

Add dsh-tui to the profile's dsh.profile.bundles (the add command appends it), then run the profile's bin. Set DEEPSEEK_API_KEY for live model turns; see the dsh publish guide for the bundle/package.json "dsh" metadata.

Via npm directly

bunx --bun @ruhooai/dsh-tui cordis.yml

Requires @deepseek-ai/dsh-* peer packages to be resolvable (the dsh profile install path satisfies this; a bare bunx needs the peers present in the surrounding node_modules).

From source (for development)

Requires Node.js ^22.19 or >=24 (build tooling) and Bun 1.3+ (compiles the Solid view and runs the result — the OpenTUI renderer draws through bun:ffi, which Node.js does not provide).

git clone https://github.com/papachong/deepseek-harness-tui.git
cd deepseek-harness-tui
pnpm install          # needs Node.js ^22.19 or >=24, and Bun for the view build
pnpm run build        # tsc + tsdown bundles; Bun.build compiles the Solid view
cd packages/bundle/tui
echo 'DEEPSEEK_API_KEY=sk-...' > .env
bun lib/bin.js cordis.yml

To hack on the interface, the view layer lives in packages/bundle/tui/src/view/ (SolidJS components, store, themes) and the REPL runner in src/runner.ts. Rebuild the view with pnpm --filter @ruhooai/dsh-tui run build:view and relaunch bun lib/bin.js.

To compose your own agent instead of editing the UI, write your own cordis.yml — mount different plugins, presets, or models — and point the bin at it. The TUI renders whatever the composition produces.

The bin takes the composition config from the first non-empty channel: $DSH_CORDIS_CONFIG, then the positional argument. Useful flags and variables:

  • --resume <sessionId> — rebuild the agent on a persisted session
  • DSH_SESSION_ROOT — session storage root (default ./.sessions)
  • DSH_CWD — working directory for bash and filesystem tools

Planned

  • Single-file binary: a download-and-run executable per platform (Windows/macOS/Linux) is explored as a future channel via bun build --compile, but the npm bundle path above is the official distribution.

Contributing

Issues and pull requests are welcome at github.com/papachong/deepseek-harness-tui. Before pushing, run the relevant checks (pnpm run typecheck, pnpm run lint, focused pnpm run test); see AGENTS.md for repository conventions.

License

MIT