@2nd1st/dsh-plugin-open-app: Integrating open-mcp-apps Applications into dsh

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 dsh web profile
  • Node 22+
  • pnpm available in PATH
  • A running open-mcp-apps engine, 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 dsh sidebar
  • Provides dedicated containers, workspaces, and sessions for each open-mcp-apps app
  • 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 web platform
  • Injects open-app and mcp-oma lines via dsh bundle
  • Configurable local open-mcp-apps engine 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 the open-mcp-apps engine
  • serverName: serverName of the engine’s MCP client, affecting the mcp__<serverName>__ prefix used by the inline tool view
  • appsRoot: Root directory for each app’s workspace; default is $DSH_HOME/storages/open-app/apps
  • containerPrompt: Rules attached to every request made by the container agent; an empty string disables these rules
  • installMessage: 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 dsh web process and accesses the profile directory and configured engine address under the current dsh process permissions
  • Review the source code and MIT license before installation
  • dsh is a 0.1.0-rc preview; the plugin may undergo breaking changes; lock the version if you need stability
  • Configuration should be done via id: open-app overrides; do not insert duplicate lines
  • The open-mcp-apps engine 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye