Preface¶
DSH (DeepSeek Harness, dsh) places extensibility in the profile and plugin layers. For agent developers, if open-mcp-apps is already running locally, a dsh web entry point is typically needed: to see apps in the sidebar, maintain a dedicated workspace and sessions for each app, and embed the app interface in chat context when the model invokes MCP tools.
@2nd1st/dsh-plugin-open-app is an MIT-licensed npm package provided by 2nd1st that integrates open-mcp-apps apps into dsh. It runs on the dsh web profile without modifying the dsh source code. Below, we cover its positioning, installation, and configuration options.
What It Is¶
@2nd1st/dsh-plugin-open-app is a dsh plugin, hosted at 2nd1st/dsh-plugin-open-app. It turns applications from the open-mcp-apps engine into accessible entries within dsh, including an Apps section in the sidebar, dedicated containers, workspaces, and sessions for each app, as well as inline app rendering in model chat.
Before enabling it, you typically need:
- A
dshweb profile - Node 22+
pnpmavailable inPATH- A running
open-mcp-appsengine, version v0.5.1+
dsh is currently a 0.1.0-rc preview. The plugin follows this version, so breaking changes may occur between versions.
Core Features¶
- Adds an Apps section to the
dshsidebar - Provides dedicated containers, workspaces, and sessions for each
open-mcp-appsapp - Displays an agent status bar or presence indicator below the app
- Supports inline app rendering when the model opens an app in chat
- Runs on the
dsh webplatform - Injects
open-appandmcp-omalines viadsh bundle - Configurable local
open-mcp-appsengine address,serverName, app root directory, and more - Pins and containers are stored in browser
localStorage - Workspace registration is a persistent binding
Installation and Enablement¶
First, verify the environment: dsh has a web profile, Node 22+ is available, pnpm is in PATH, and the open-mcp-apps engine is running with version v0.5.1+.
The installation command is:
dsh plugin --profile web add @2nd1st/dsh-plugin-open-app
After installation, the profile’s dependencies and bundle configuration change. The plugin’s patch injects open-app and mcp-oma lines into the profile tree, so subsequent configuration should modify the existing lines rather than insert new ones.
Start or restart dsh web after installation:
dsh web
Typical Usage¶
Preparing the open-mcp-apps Engine¶
Ensure the HTTP interface of the open-mcp-apps engine is available; the default port is 8787. The plugin requires engine version v0.5.1+; older engines still work but with degraded behavior.
To publish the open_<app> tools for each app, set the following when starting the engine:
OMA_DYNAMIC_TOOLS=1
The generic open_app tool is always available.
Configuring the Plugin¶
Configuration is written in the profile’s cordis.patch.yml using id: open-app for id-targeted overrides. Id-targeted overrides replace the corresponding key rather than merge, so you should write the complete config.
Do not insert duplicate open-app lines. Duplicate id values will prevent dsh from starting.
Example configuration:
- id: open-app
config:
engineBase: 'http://127.0.0.1:8787'
serverName: 'oma'
appsRoot: '~/.dsh/storages/open-app/apps'
containerPrompt: |
You live in the {app} app — this conversation is its container.
{card}
Answer in one sentence; that line is what the user reads on the status bar under it.
installMessage: 'What is in the app right now?'
Configuration options:
engineBase: HTTP address of theopen-mcp-appsengineserverName:serverNameof the engine’s MCP client, affecting themcp__<serverName>__prefix used by the inline tool viewappsRoot: Root directory for each app’s workspace; default is$DSH_HOME/storages/open-app/appscontainerPrompt: Rules attached to every request made by the container agent; an empty string disables these rulesinstallMessage: Initial message when a new container opens; an empty string keeps the container silent
Upgrading from Manual Installation¶
If you previously installed manually and the old package name is not scoped, remove the old package first, then install the scoped package:
dsh plugin --profile web remove dsh-plugin-open-app
dsh plugin --profile web add @2nd1st/dsh-plugin-open-app
If your old cordis.patch.yml still contains manually inserted open-app or mcp-oma lines, delete these duplicate lines first, then use id-targeted overrides to preserve your configuration.
Use Cases and Considerations¶
Best suited for developers using open-mcp-apps apps within dsh web. It fits scenarios that require dedicated workspaces and sessions per app, as well as those where the model should render the app interface inline in chat.
Before use, note:
- The plugin runs in the
dshweb process and accesses the profile directory and configured engine address under the currentdshprocess permissions - Review the source code and MIT license before installation
dshis a0.1.0-rcpreview; the plugin may undergo breaking changes; lock the version if you need stability- Configuration should be done via
id: open-appoverrides; do not insert duplicate lines - The
open-mcp-appsengine is an independently installed local process; the plugin only configures where it listens and does not modify the engine itself - Pins and containers are stored in browser
localStorage; workspace registration is a persistent binding—clearing the container map will re-adopt the same workspace on the next visit
Links¶
Repository: https://github.com/2nd1st/dsh-plugin-open-app
npm package name: @2nd1st/dsh-plugin-open-app