Foreword¶
DeepSeek Harness (dsh) presents its Web UI by default: after running it locally, open http://127.0.0.1:3080 in your browser to chat, configure tools, and view sessions. The official repository and documentation frame the core philosophy of this framework as “everything is a plugin” — models, tools, skills, sessions, sandboxes, storage, loops, scheduling, and even the interface itself can be replaced at the configuration layer without modifying the core source code.
For users accustomed to working via SSH, tmux, or a pure terminal, opening a browser is not the shortest path. As a result, several terminal UI plugins have emerged in the community. This article introduces the one with the directory page slug dsh-tui-dsh-tui: maintained by the organization dsh-tui, hosted in the repository dsh-tui/dsh-tui, and published as the npm package @dsh-tui/dsh-tui. It turns the conversational terminal interface like Claude Code / Codex into an external bundle built on top of the official @deepseek-ai/dsh-base.
There is another more common, better-starred dsh-TUI in the same community directory (with the directory page at /plugins/dsh-tui/, maintained by a different team). The two have similar names but different installation commands and functional boundaries. The content below is only verified against the directory page, GitHub README, package.json, and LICENSE of the dsh-tui/dsh-tui project.
The community plugin directory deepseek-harness-plugin.com is an independent site and has no official affiliation with DeepSeek / DeepSeek AI. It should not be treated as an official app store.
What it is¶
dsh-tui is a UI enhancement plugin maintained by the GitHub organization dsh-tui. Its positioning on the directory page is: a Claude Code-style terminal UI for DeepSeek Harness, provided as a standalone dsh plugin package.
The repository README offers more specifics: it is an interactive terminal entry point for DeepSeek Harness agents, built on @earendil-works/pi-tui and integrated with the official @deepseek-ai/dsh-base. Shell, file system tools, skills, sub-agents, workflows, and sandbox approval all follow the official plugin ecosystem from the web interface, without forking the core code.
Its origin is also noted in the repository. Both the LICENSE and README state that the TUI implementation was recovered from packages/ui/tui in the DeepSeek Harness repository history (removed upstream in commit 10bb9cbf4a), then ported to the released rc API. The LICENSE also retains the 2026 copyright notices from DeepSeek (the original @deepseek-ai/dsh-tui) and OpenGuardrails. The current version in package.json is 0.1.2, with the license field set to MIT. The directory page and GitHub SPDX show NOASSERTION, which is a mismatch between the identified result and the repository README — you should always read the LICENSE directly before installing.
As of the time of this article’s verification (2026-08-18), both the directory page and GitHub repository show 18 stars; the primary language is TypeScript; and the directory inclusion date is 2026-08-15.
Core Features¶
The capabilities listed in the repository README can be divided into three sections: interface, interaction, and sessions. The “More Introduction” on the directory page aligns with the two items: slash commands and approval dialogs.
Streaming Output and Tool Cards¶
Model responses and thought processes are rendered incrementally in Markdown format. Tool calls are presented as cards, with three rendering intent modes: terminal, diff, and generic. Press Ctrl+O to cycle between preview, expand, and hide.
Approval dialogs and ask_user_question are also implemented directly in the terminal, including plan mode reviews. This means you do not need to switch back to the Web UI when an agent needs to run commands, modify files, or ask you a question.
References, Autocompletion, and Slash Commands¶
The input box supports autocompletion for @file paths, as well as @session session reference cards. For slash commands, both the repository and directory page list:
- /model: Switch models, with optional inference strength configuration
- /resume: Resume a session
- /compact: Compress the conversation context
- /details
- /help
Commands registered by other plugins for the current profile will also appear in this interface.
Status Bar and Theme¶
The interface includes a persistent todo panel, the status bar displays token usage and context pressure, and sessions have titles. The theme is configurable; true color support is detected based on the COLORTERM environment variable.
The included cordis.patch.yml bundle configures the default agent to use the deepseek-official provider, deepseek-v4-pro model, with thinking enabled and reasoningEffort set to max. The API key and endpoint are not hardcoded in this patch, and are resolved at runtime from the llm-deepseek settings, credential storage, and the DEEPSEEK_BASE_URL environment variable.
Installation and Activation¶
Installation Command from the Directory Page¶
The community directory requires running this command inside the DeepSeek Harness terminal:
dsh plugin add github:dsh-tui/dsh-tui
For reproducible installations, pin the commit hash as specified on the directory page:
dsh plugin add github:dsh-tui/dsh-tui#commit
Replace #commit with the actual commit hash. The plugin runs with the permissions of the current dsh process, and may execute code during installation. You should inspect the source repository and license before installing.
Profile Installation Recommended by the Repository¶
The README outlines the standard workflow: first install the dsh CLI, then add the plugin to a profile named tui. The environment requires Node ^22.19 || >=24, and the CLI installation command is:
npm i -g @deepseek-ai/dsh@next
Then:
dsh plugin --profile tui add @dsh-tui/dsh-tui
dsh --profile tui
dsh --profile tui --resume <session-id>
The first command installs the npm package @dsh-tui/dsh-tui into the tui profile; the second starts a new session in the current directory; the third resumes a persisted session using the provided session ID.
If you want to track the GitHub repository instead of the npm release, the README instructs using add github:dsh-tui/dsh-tui. Git-based installation will run the prepare script to build the package, and pnpm blocks build scripts by default. If the add command fails, whitelist the package in ~/.dsh/profiles/tui/pnpm-workspace.yaml using the printed package name, then run the command again:
allowBuilds:
"@dsh-tui/dsh-tui": true
Your API key can be stored in the DEEPSEEK_API_KEY environment variable, or in a .env file in the startup directory or under $DSH_HOME.
Typical Usage¶
Start a Conversation in the Current Directory¶
After installing the CLI and plugin, and configuring your API key, navigate to the project directory you want to work with:
dsh --profile tui
Then follow the prompts for conversation, tool cards, and approval in your terminal. The repository notes that real model rounds require a reachable DeepSeek-compatible endpoint; steps that occur before sending requests — such as context compression, rendering, approval, and /resume — will work without an API key.
Connect to Local or Self-Hosted Endpoints¶
The README outlines three methods to connect without modifying the plugin code.
1. Use environment variables to point the base URL to a local OpenAI-compatible interface:
export DEEPSEEK_BASE_URL=http://localhost:8000/v1
export DEEPSEEK_API_KEY=...
- Edit
$DSH_HOME/settings.yaml, which supports hot reloading:
llm-deepseek:
baseURL: http://localhost:8000/v1
- When using an OpenAI-compatible gateway like vLLM or SGLang, declare an
llm-pi-airoute in the profile patch file$DSH_HOME/profiles/tui/cordis.patch.yml, then point the default model to it. Refer to dsh’s providers guide for specific fields; this article does not cover key names not verified in this repository.
Development Build (Optional)¶
If you want to modify this plugin itself, the repository provides these commands:
pnpm install
pnpm build
pnpm install will apply patches for pi-tui located in the patches/ directory. pi-tui is pinned at version 0.80.7, and the patch modifies the editor prompt prefix; the build output is placed in lib/, and external installers will not receive the unpatched version.
Use Cases and Notes¶
This tool is suitable for users who already use DeepSeek Harness and want to keep their interactions within the terminal: for SSH remote work, tmux splits, avoiding opening a browser, or working with local/self-hosted DeepSeek-compatible endpoints. It solves the problem of “how to draw the interface and receive input”, rather than building a separate agent runtime. Model routing, tool execution, and session persistence are still handled by dsh-base and official services.
Please note the following points, all sourced directly from the directory page or repository text, not subjective usage recommendations:
1. Permissions and Licensing. The plugin runs with the permissions of the current dsh process, and may execute code during installation. Inspect the source code and LICENSE before installing. The repository README states the license is MIT, while the directory page SPDX shows NOASSERTION — always refer to the LICENSE you actually read.
2. Depends on Pre-Release RC Versions. The README clarifies that the project is developed against the pre-release rc line of @deepseek-ai/dsh, and may become incompatible at any time before the upstream stabilizes; peer dependencies are pinned to verified rc versions (most fields in package.json are ^0.1.0-rc.6). DeepSeek Harness itself is still in developer preview, and the official README also warns of future breaking changes.
3. Test Suite Not Yet Functional. The tests/ directory in the repository is leftover from the port, and currently cannot run. Do not treat this as a release with complete regression coverage.
4. Runtime Requirements. Node.js version ^22.19 || >=24 is required. True color support depends on the COLORTERM environment variable. Without a reachable DeepSeek-compatible endpoint, you cannot send real model requests.
5. Homonymous Plugins. The dsh-TUI listed in the directory’s “Related Plugins” (at /plugins/dsh-tui/) is a separate project. Do not mix up its installation commands, maintainers, or feature list.
Summary¶
dsh-tui turns the terminal interface that was once included in packages/ui/tui by DeepSeek into an independently installable dsh bundle: built on top of @deepseek-ai/dsh-base, it uses a Claude Code-style TUI to drive the same set of tools, skills, and approval workflows. The directory installation command is dsh plugin add github:dsh-tui/dsh-tui; the more common daily workflow is dsh plugin --profile tui add @dsh-tui/dsh-tui, then launch with dsh --profile tui in the target directory.
The project is still iterating against dsh’s rc line, and its star count is not high. If your primary interface is the terminal, you can install it using the commands above, first verifying the source code and license, then deciding whether to pin the commit hash.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-tui-dsh-tui/
GitHub: https://github.com/dsh-tui/dsh-tui