Introduction¶
When developing with the DeepSeek Harness (DSH) Web UI, a common workflow is to have the AI generate code in the current session’s workspace, then immediately switch to the local environment and open that folder to continue. Manually locating the directory in a file manager is inefficient.
The dsh-open-in-app plugin solves this problem. It provides a Codex-style split control in the session header, allowing users to directly invoke an installed terminal emulator or editor/IDE on the host machine from the browser interface to open the current session’s workspace folder.
Features¶
The plugin adds a control to the session header toolbar (upper-right corner of the chat window, next to the Session log button). The control includes a folder button and a dropdown arrow, with the following features:
-
One-Click Workspace Opening
Click the folder button to open the current directory using the app last selected for this workspace. If no app has been selected before, it falls back to the highest-priority default editor (such as VS Code or Cursor); if neither is installed, it uses the system default application. -
Application Selection Menu
Click the dropdown arrow. The menu is grouped by application type and includes the following entries:- Recently Used: Historical selections recorded in
localStorage. - System Default Application: Invokes the host machine’s default folder handler (for example, Finder on macOS or File Explorer on Windows).
- Whitelisted Applications: Divided into “Terminal Applications” and “Editors & IDEs”, displaying the list of installed applications.
- Recently Used: Historical selections recorded in
-
Icon Display
Menu items and buttons display the corresponding application icon (32px PNG). Icons are obtained by parsing application packages or the freedesktop icon theme.
Installation and Activation¶
The plugin is published on npm and must be installed to the Web profile using the dsh plugin command.
dsh plugin --profile web add dsh-open-in-app
If developing using local source code:
git clone https://github.com/open-dsh-plugins/dsh-open-in-app.git
cd dsh-open-in-app
dsh plugin --profile web add .
After installation, you must restart the dsh web service to load the new plugin.
Usage¶
- In the DeepSeek Harness Web UI session header, find the new “folder” icon button.
- Click the icon to open the workspace (using the app last selected).
- If you need to switch applications, click the dropdown arrow to the right of the icon.
- From the menu, select a specific tool under “Terminal Applications” or “Editors & IDEs”.
- After selection, the corresponding application on the host machine opens the current session’s workspace directory.
Whitelist and Configuration¶
The plugin includes a built-in application whitelist for automatically identifying and categorizing installed tools.
- Terminal Applications: Terminal, iTerm2, Ghostty, Warp, Alacritty, kitty, WezTerm, Hyper, Tabby, Rio, Contour, Foot, Tilix, Terminator, Konsole, GNOME Terminal, xterm, mintty, Windows Terminal, PowerShell, Cmder, ConEmu.
- Editors & IDEs: Visual Studio Code, Cursor, Windsurf, Zed, Xcode, Android Studio, IntelliJ IDEA, PyCharm, WebStorm, GoLand, CLion, PhpStorm, RubyMine, Rider, DataGrip, DataSpell, RustRover, Fleet, Aqua, Visual Studio, Eclipse, NetBeans, Sublime Text, Nova, BBEdit, TextMate, CodeRunner, MacVim, Neovide, Emacs, Lite XL, HBuilderX.
To add or remove entries, edit the WHITELIST array in lib/apps.js.
Security and Architecture Notes¶
- Runtime Boundary: Remote endpoints are not included in the privileged method list and operate within the browser trust boundary (loopback or a trusted host).
- Process Spawning: Opening a path spawns a native process on the host machine. The path comes from the session’s own
cwd, making it relatively safe. - Icon Resolution: Only standard application paths and the freedesktop icon theme are read, with a buffer limit of 256 KB.
- Error Handling: Command failures are displayed as an error line in the menu and do not throw exceptions.
Summary¶
dsh-open-in-app is a lightweight plugin. By integrating local application invocation into the Web UI, it simplifies the transition from “AI-generated code” to “local debugging”. It is suitable for developers who frequently interact with the local file system in the DSH Web UI.
Repository: github.com/open-dsh-plugins/dsh-open-in-app