A Rust/ratatui terminal client that speaks the DSH SDK JSON-RPC protocol directly and runs standalone or as a profile bundle.
Install
# from npm (prebuilt)
dsh plugin --profile web add @openma/deepseek-harness-tui
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:openma-ai/deepseek-harness-tui#path:/npm
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Native binaries are packaged for macOS arm64, macOS x64, Linux x64, and Windows x64. Requires Node.js 18+.
Recommended
npm install --global @deepseek-ai/dsh
dsh plugin --profile tui add @openma/deepseek-harness-tui@latest
dsh --profile tui
The profile command is the recommended install and upgrade path. It creates a
missing profile and installs the TUI plus its ACP dependency; no global
dsh-tui installation is required.
The profile Host mounts the ACP plugin on Base, then starts a separate TUI
Client process over standard ACP stdin/stdout. For standalone use, run
dsh-tui and use --agent <cmd> plus repeated --agent-arg <arg> for another
ACP server. The Node Client process owns a Cordis tree and starts the Rust painter. A sibling
tui-cordis-client-runner publishes TUI Client capabilities and evaluates
approved code.client packages from dsh-tool-cordis against that client tree.
ACP is a runtime dependency of this package. On a profile that already carries a different version through the standard ACP bundle, the package manager may retain both copies, but the TUI bundle replaces that surface's rows and mounts only the plugin resolved from TUI's own dependency graph. The supported profile shape never runs two ACP surfaces for one TUI.
The package carries ACP as a runtime dependency and exports its Creator Host
overlay internally. The profile bundle mounts both on the Host Base tree;
neither enters the Client tree. Creator adds TUI plugin guidance to the
existing cordis preset and does not use ACP for skill registration.
Node and Rust use inherited pipes on Unix and an authenticated loopback TCP socket on Windows. This compositor channel carries theme/render data only; agent traffic remains ACP.
Demo
dsh-tui --demo
dsh-tui --demo-skin
dsh-tui is the primary command. dsb is a compatibility alias.
Highlights
- Streamed reasoning, replies, tool activity, subagents, run state, and token/cache metrics in one terminal timeline.
- Agent-advertised models, compositions, permissions, authentication methods, and invocable skills in one searchable slash menu.
- Up to eight editable image chips per prompt, with clipboard/file staging and metadata previews on kitty-capable terminals.
- Terminal-aware Markdown for headings, lists, quotes, code, emphasis, links, and mixed CJK/Latin text.
- Durable sessions, queued follow-ups, immediate steering, readline editing, platform-native modifier bindings, mouse selection, and inline-expanded tools.
- Dark/light themes, clipboard routing for local, tmux, and SSH sessions, plus
the optional
/liangpixel companion. - A root
chrome.rightplugin rail for validated TuiNode trees, with live update/unload and Client inspect support for Creator-authored plugins. - Lifecycle-owned local commands and native slider overlays, plus transactions
over the current Session's standard ACP
configOptions. - Dynamic
code.host+code.clientPackages with inspect/run lifecycle and package-private Host/Client RPC over a negotiated_dsh/cordis/*ACP extension. Ordinary ACP agents remain usable when they do not advertise it.
Plugin surface
TUI extensions are ordinary Cordis plugins on the Node Client tree. A single
plugin may register a theme, chrome.right nodes, slash commands, overlays,
timers, Session config transactions, and Host/Client RPC; all contributions
leave together when its fiber stops or /theme replaces the selected Theme
Plugin. Plugins submit semantic data and never receive the TTY, Ratatui,
absolute coordinates, compositor fds, or private transport methods.
The versioned contract and examples live in the repository's plugin API.
The demo needs no API key or agent. Run dsh-tui --help for agent, model,
credential, session, theme, and demo options.
Supported platforms
| Node platform key | Binary |
|---|---|
darwin-arm64 |
vendor/darwin-arm64/dsh-tui |
darwin-x64 |
vendor/darwin-x64/dsh-tui |
linux-x64 |
vendor/linux-x64/dsh-tui |
linux-arm64 |
vendor/linux-arm64/dsh-tui |
win32-x64 |
vendor/win32-x64/dsh-tui.exe |
If installation succeeds but launch reports no native binary for ..., confirm
that you installed the latest version and that your platform appears above.
Uninstall
npm uninstall --global @openma/deepseek-harness-tui
Source, screenshots, development commands, and architecture notes live in the GitHub repository.
MIT.
Links
More in this category
zhu1090093659/dsh-web-ui#packages/dsh-web-ui-all★ 4430
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 2101
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 1924
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
omdsh-dev/dsh-at-file★ 362
Codex-style `@file` mentions: search workspace files in the composer and attach their contents to prompts.
omdsh-dev/dsh-genui★ 214
Interactive UI components rendered inline in replies: layout, charts, forms, quizzes, mermaid, 3D scenes, and an action event loop back to the model.
huiliyi37/dsh-tianshu-tui★ 211
A terminal UI (TUI) for DeepSeek Harness.