What Is oh-dsh? A DSH Runtime for Desktop, Web and TUI

GuidePublished 2026-09-02Author: DeepSeek Plugin Market
oh-dshDeepSeek HarnessDSH PluginDesktop Web TUIdev workbench
oh-dsh is an interface plugin for DeepSeek Harness (DSH) that packages the DSH runtime into Desktop, Web, and TUI distributions launched by one ohdsh command.

oh-dsh (Oh-DSH) is a DSH runtime interface plugin that packages DeepSeek Harness, Node.js, and built-in plugins into three installable distributions — Desktop, Web, and TUI — all launched by a single ohdsh command, so you no longer have to re-adapt to a new UI or install Node.js separately in every environment. This article covers what oh-dsh is, its core features, complete install/update/uninstall commands, and typical usage, so you can bring AI agents, workspaces, local tools, and the plugin ecosystem into the interface you already prefer.

What Is oh-dsh?

oh-dsh solves the problem of inconsistent DSH interfaces and tedious environment setup across machines: it packs the DSH runtime together with Node.js into a desktop app, a web service, and a terminal program that are ready to use and share one consistent experience. The following positioning and facts come from the official README and usage docs (source):

oh-dsh (GitHub repository hust-open-atom-club/oh-dsh) is maintained by hust-open-atom-club and open-sourced under the MIT license; it is an interface plugin in the DSH Plugin ecosystem. It packages the upstream DeepSeek Harness runtime, local development tools, and built-in plugins, while model services can still run on the cloud as needed; the Workspace, terminal, Git Review, browser, files, and session state are organized by a local workbench. The three surfaces share the data root ~/.ohdsh but keep independent profiles, and share one Agent preset roster. Each distribution bundles a fixed DSH and Node runtime, so you never install a runtime environment separately. It keeps the upstream implementation and attribution while adding a unified launcher, cross-surface skins, and release packaging, so installing oh-dsh does not change how DeepSeek Harness itself loads sessions and plugins.

What Are the Core Features of oh-dsh?

Its core capabilities revolve around three consistent surfaces, a local workbench, Git Review, plugin marketplace, cross-surface skins, and split distributions: one ohdsh command switches between forms and gathers everyday dev tools into a single workbench. These features come from the official README and usage docs (source):

  • Three interaction surfaces: one ohdsh command launches Desktop, Web, or TUI; all three share sessions, credentials, skins, and plugin cache while keeping independent profiles.
  • Local dev workbench: built-in Workspace, PTY terminal, browser, file browser, side chat, and Trajectory, with panels that can collapse, pin, split, or expand full-screen.
  • Git Review: inspect working-tree changes and commit diffs, add review comments on code lines, and finish branching, committing, and pushing in the same sidebar.
  • Built-in plugin marketplace: Desktop, Web, and TUI can all search, preview, and install plugins with a shared transaction and recovery state, and clearly mark the surface where each plugin actually takes effect (some plugins only work on Web or Desktop, not TUI).
  • Cross-surface skins: @oh-dsh/skins provides a unified theme for all three surfaces, adapted separately to each layout and readability.
  • Split distributions: install the full, Web-only, or TUI-only edition on demand; every distribution bundles a fixed DSH and Node runtime, and web and tui can be installed in parallel without affecting each other.

How to Install and Enable oh-dsh?

Installing oh-dsh has two paths: add it as a DSH Plugin into the web profile, or run the official installer as a standalone app; the standalone installer defaults to TUI only, so Desktop and Web need an explicit --surface flag. Commands come from the official README and plugin metadata (source):

1. Install as a DSH Plugin (optional) — run the install command in the DSH host to add oh-dsh to the web profile, then manage it under Settings → Plugins:

bash
dsh plugin --profile web add github:hust-open-atom-club/oh-dsh

2. Install from the official installer (macOS / Linux, defaults to TUI) — the install.sh at the repo root needs no clone; it installs TUI by default and registers ohdsh under ~/.local/bin:

bash
curl -fsSL https://raw.githubusercontent.com/hust-open-atom-club/oh-dsh/main/install.sh | bash

3. Choose Web or Desktop explicitly — use --surface web or --surface desktop; the desktop form creates an app entry:

bash
curl -fsSL https://raw.githubusercontent.com/hust-open-atom-club/oh-dsh/main/install.sh | bash -s -- --surface web
curl -fsSL https://raw.githubusercontent.com/hust-open-atom-club/oh-dsh/main/install.sh | bash -s -- --surface desktop

4. Install on Windows — Windows uses the equivalent install.ps1, which also defaults to TUI without arguments:

powershell
irm https://raw.githubusercontent.com/hust-open-atom-club/oh-dsh/main/install.ps1 | iex

5. Launch an installed surface — ohdsh routes by subcommand to the installed surface; gui is an alias of desktop, and ohdsh only starts surfaces that are installed:

bash
ohdsh desktop
ohdsh web
ohdsh tui

6. Update the plugin — for a standalone install, re-running the same command is an in-place upgrade that atomically replaces the old payload after verification; you can also run the update command directly:

bash
ohdsh update

7. Uninstall the plugin — for a standalone install, use --uninstall to remove one surface; for a DSH Plugin install, remove it from host plugin management:

bash
sh install.sh --uninstall --surface tui
dsh plugin remove oh-dsh

Typical oh-dsh Usage

oh-dsh works right after install: start ohdsh web or ohdsh tui to enter the interface, then chat, open a terminal, and run Git Review in the local workbench; use OH_DSH_HOME or --data for isolated testing. The steps come from the official usage docs (source):

1. Start the Web surface — running ohdsh web starts the HTTP service and prints the address to open in your browser:

bash
ohdsh web

2. Pick or randomize the Web port — use --port to pick a port when the default is taken; during troubleshooting, use a random port and skip auto-opening the browser:

bash
ohdsh web --port 3080
ohdsh web --port 0 --no-open

3. Switch Agent preset in TUI — after entering the terminal surface, type a slash command in a blank session to switch preset; liangshen is the mode shipped with the distribution:

text
/preset liangshen

4. Use the local workbench and Git Review — open a Workspace directory in Desktop or Web and run commands in the built-in PTY terminal; after edits, open the Git Review sidebar to see diffs, add line comments, then branch, commit, and push. All three surfaces share one plugin marketplace; in TUI, type /plugins (or press Ctrl+M) to open the terminal market.

5. Isolate a test run with a separate data directory — set OH_DSH_HOME so one launch uses a fresh data root without polluting your daily sessions:

bash
OH_DSH_HOME=/tmp/ohdsh ohdsh web

oh-dsh Troubleshooting

The most frequent oh-dsh problems are a missing surface, an unloaded PATH, a Web port conflict, and a macOS first-launch block; fix them with an explicit --surface, a reopened terminal, a random port, and right-click Open respectively. Guidance comes from the official usage docs (source):

1. Surface not installed — symptom: running ohdsh web or ohdsh desktop reports the surface is not installed. Cause: ohdsh only starts installed surfaces, and the default install brings only TUI. Fix: re-run the installer with --surface web or --surface desktop, then reopen the terminal.

2. ohdsh command not found — symptom: a new terminal reports command not found. Cause: the installer places the launcher under ~/.local/bin (or a user PATH directory on Windows), which the current terminal has not loaded yet. Fix: reopen the terminal and run ohdsh --help to confirm the CLI source and arguments:

bash
ohdsh --help

3. Web surface fails to start or the port is taken — symptom: ohdsh web does not start or the address does not open. Cause: the default port such as 3080 is occupied, or the service arguments are wrong. Fix: verify the service itself with a random port, and use --no-open to avoid reopening the browser:

bash
ohdsh web --port 0 --no-open

4. macOS says the app cannot be opened — symptom: the first Desktop launch is blocked (unnotarized build). Cause: the test build is not notarized by Apple, so Gatekeeper blocks it by default. Fix: right-click the app in Finder and choose Open once, or clear the quarantine attribute on the downloaded DMG:

bash
xattr -d com.apple.quarantine ~/Downloads/Oh-DSH-Desktop-*.dmg

Use Cases and Notes

oh-dsh suits heavy DSH users who want one consistent experience across desktop app, browser, and pure terminal: develop locally in Desktop, serve in browser with Web-only, and use TUI-only over SSH, with the same data across all three. Use cases and limits come from the official usage docs (source):

Typical scenarios include: a local dev workbench — open a Workspace and chat, run a PTY terminal, browse files, and do Git Review in one window; lightweight or remote deployment — install Web-only on a server or in a browser environment without Electron; and pure-terminal use — run TUI-only over SSH for an experience close to the upstream dsh-TUI. Limits worth noting: the marketplace marks the surface where each plugin actually takes effect, so an install may succeed on all three while some plugins only work on Web or Desktop and not TUI; only one oh-dsh frontend holds the write lock on the shared data root at a time, while others start read-only; the three surfaces do not load global plugin config from ~/.dsh by default; each surface runs one update check at startup (it fails silently offline, and OH_DSH_UPDATE_CHECK=0 disables it); and the unnotarized macOS build needs a right-click Open on first run.

oh-dsh is an MIT-licensed open-source project maintained by hust-open-atom-club, evolving continuously as a DSH runtime with Desktop, Web, and TUI development experiences. For the full feature list, screenshots, and plugin details, visit the oh-dsh plugin page on this site: oh-dsh.

This page is an independent guide rewritten from the plugin's official README — for the authoritative documentation and the latest changes, defer to the source: hust-open-atom-club/oh-dsh. A plugin is third-party code that runs on your machine once installed; inclusion is not an endorsement — review the source before installing.

FAQ

How do I fix the surface-not-installed error when running ohdsh?

oh-dsh only launches surfaces that are already installed. If it reports not installed, use the official installer with an explicit surface flag such as --surface web or --surface desktop, or download the matching distribution from GitHub Releases; reopen your terminal afterwards so the new launcher is picked up in PATH.

What data do the three oh-dsh surfaces share, and how do I change the data directory?

oh-dsh's Desktop, Web, and TUI share ~/.ohdsh by default for cache, config, sessions, credentials, and plugin state while keeping independent profiles. Set the OH_DSH_HOME environment variable to relocate the data root, for example OH_DSH_HOME=/tmp/ohdsh launches an isolated instance.

What image sources does oh-dsh's view_image tool support?

oh-dsh's view_image tool performs OCR, image reading, and UI diagnosis on local images inside the Workspace, HTTP(S) images, or image data URLs. TUI has no graphical thumbnails, so you provide an image path or URL in the message to invoke the same capability.

What is special about oh-dsh's liangshen mode?

oh-dsh's liangshen mode keeps both the main agent and sub-agents on the Minimal two-tool set for the first turn, opens the full tool catalog after the first tool call, then re-anchors after compaction. Choose it in the Agent preset settings on Web or Desktop, or type /preset liangshen in TUI.

Will a failed checksum break my existing oh-dsh installation?

No. The oh-dsh installer verifies the SHA-256 digest of a release asset before touching the old installation, so a failed download, mismatched digest, or interrupted extraction leaves the existing install usable. Re-running the same command is an in-place upgrade; install.sh --uninstall removes one surface.

How do I install and update oh-dsh as a DSH plugin for DeepSeek Harness?

To install oh-dsh as a DSH Plugin, run dsh plugin --profile web add github:hust-open-atom-club/oh-dsh to add it to DeepSeek Harness's web profile; re-run the same command to update, and uninstall from host plugin management or with dsh plugin remove oh-dsh.

Related Terms

oh-dsh
oh-dsh (Oh-DSH) is a DSH runtime interface plugin maintained by hust-open-atom-club that packages DeepSeek Harness, Node.js, and built-in plugins into Desktop, Web, and TUI installable distributions.— oh-dsh README
surface
surface is oh-dsh's name for an interaction form — desktop, web, or tui — where each surface installs independently and is routed by the shared ohdsh launcher through its subcommand.— oh-dsh README
view_image
view_image is oh-dsh's built-in vision tool that performs OCR, image reading, and UI diagnosis on Workspace-local images, HTTP(S) images, or image data URLs, shared across all three surfaces.— oh-dsh README
liangshen
liangshen is an Agent preset shipped with oh-dsh that keeps the main agent and sub-agents on the Minimal two-tool set for the first turn, opens the full tool catalog after the first tool call, then re-anchors after compaction.— oh-dsh README
OH_DSH_HOME
OH_DSH_HOME is oh-dsh's data-directory environment variable; by default the three surfaces share ~/.ohdsh, and setting it relocates cache, config, sessions, credentials, and plugin state to a new root.— oh-dsh README

Sources

View all articles