Skip to main content
Glama

Why DSH Crew

DSH Crew is a plugin for DeepSeek Harness (DSH) β€” an open-source agent harness. It makes DSH agents dispatchable from Claude Code and Codex: the orchestrator keeps its own model, the work runs on a real DSH agent with that harness's tools, sandbox, presets and session history, and the host still shows it as a native subagent with live progress.

What runs the work is a DSH agent, not a bare model call. Tiers (flash / pro) select how much capability that agent gets from the harness's configured roster β€” DeepSeek V4 Flash and V4 Pro today β€” so a change of model in DSH needs no change here.

🧡 Native Progress UI

Workers appear as regular subagents in Claude Code / Codex β€” dispatch count, running step, tool calls and token usage all show up in the host's own task panel, plus a claude-hud statusline segment: βš™dsh 1β–Άpro 2m14s 21.7k/606 βœ“3.

🎚️ Tier Policy and Escalation

flash for mechanical work, pro for reasoning, effort from off to max. tier_policy can clamp every dispatch to one tier at the tool layer, and escalate_on_failure retries a failed flash run once on pro β€” based on evidence, not on guessing difficulty up front.

πŸ›οΈ In-Host DSH Sessions

With the bundle installed in a DSH profile, each worker is a first-class DSH session: visible in the Web UI, grouped by working directory, mounted with the Agent preset you choose per tier. Without DSH running, dispatch falls back to a standalone DSH runtime, so CI and headless environments still work.

πŸ‘οΈ Vision and Image Generation

DSH's models are text-only. describe_image and generate_image borrow the eyes and brush of the CLIs you already have β€” Claude, Codex, Grok, Antigravity β€” or of any OpenAI-compatible API you configure. Pasted images stay visible in the conversation and reach the model as text.

πŸ”Œ Custom Providers

Bring your own endpoint (Base URL + API key + models) or a local command template. Each provider has a connectivity test that checks reachability and auth, then makes one real vision call so you find out now, not mid-task.

πŸ“¦ One-Click Install

The settings page installs and updates the Claude Code plugin and the Codex role files for you β€” marketplace registration, permission allowlist, HUD wiring, absolute paths rendered for this machine β€” and restores them just as easily. Every settings file is backed up first.

Related MCP server: claude-code-mcp

How it works

Claude Code / Codex (orchestrator, keeps its own model)
  └─ ds-flash / ds-pro  ← native subagent shell (progress shows in the host's task UI)
       └─ MCP: dsh_run_worker(tier, effort, cwd)
            β”œβ”€ hub reachable β†’ session inside DSH (visible in the Web UI, grouped by cwd)
            └─ otherwise     β†’ dsh-jsonrpc-agent runtime (worker.cordis.yml)
                 └─ DeepSeek V4 Flash / Pro (DSH SDK, event stream β†’ progress and token stats)

One run, two views

Dispatch fans out. Below, eighteen workers translate this README in parallel: the host counts them as its own subagents, while the harness runs them as real sessions.

Install

Install into a DSH profile from npm:

dsh plugin --profile web add @zseven-w/dsh-crew@latest
dsh web

Or, for local development straight from the source tree:

dsh plugin --profile web add link:/path/to/dsh-crew
dsh web

The link: protocol symlinks the profile dependency to this repository, so rebuilds are visible immediately.

Configure DeepSeek credentials

Obtain an API key from platform.deepseek.com and write it to ~/.config/dsh-crew/.env:

DEEPSEEK_API_KEY=sk-...

The worker runtime keeps its own credentials, independent of the DSH web app.

Verify

node scripts/smoke.mjs

Within about ten seconds you should see smoke test passed β€” configuration OK. On failure the reason is printed; usually the key is missing or invalid.

Then open Settings β†’ DSH Crew and install the Claude Code / Codex integrations with one click.

Background and terminology

  • DSH (DeepSeek Harness): DeepSeek's open-source agent harness, a code agent in Web UI form, similar to Claude Code but driving DeepSeek models.

  • MCP (Model Context Protocol): Anthropic's AI tool integration protocol, enables LLMs to safely call external tools and data sources.

  • Cordis bundle: DSH's plugin format; this project can run standalone as an MCP service or install into DSH Web as hub mode.

  • tier: capability tier β€” which slot of DSH's configured model roster a worker gets. flash is fast and cheap (simple tasks), pro reasons harder (complex problems). Today they map to DeepSeek V4 Flash and V4 Pro; swap models in DSH and nothing changes here.

  • worker: the DSH agent doing the work β€” a full session with its own tools, sandbox and preset, not a bare model call.

  • effort: reasoning strength, off = no reasoning, high = high reasoning investment, max = maximum reasoning investment.

Claude Code

Installation

One-click installation (choose one):

  • DSH settings page (when hub mode is installed): Settings β†’ DSH Crew β†’ "Install to Claude Code"

  • Command line: node src/install/cli.mjs all

Both do the same thing: register local marketplace (parent directory dsh-plugins/ as marketplace root) + claude plugin install + MCP tool permission allowlist + claude-hud worker status segment config (auto-backup settings.json before changes, idempotent). Restart the session after installation for changes to take effect.

Usage

  • Directly in conversation, say "dispatch X to ds-flash" or "dispatch X to ds-pro", and subagent executes the task

  • Dispatch count and real-time progress shown in Claude Code task UI

  • HUD status line segment: βš™dsh 1β–Άpro 2m14s 21.7k/606 βœ“3 (current tier / elapsed time / token usage / completion count)

    • For local development, statusline/statusline.sh or statusline/worker-segment.sh can be independently integrated

  • Long-running tasks: CC has timeout limits on MCP calls (MCP_TOOL_TIMEOUT adjustable), long tasks can have orchestrator use dsh_spawn_worker + dsh_worker_result(wait_seconds) polling

  • Local development and debugging: claude --plugin-dir /path/to/dsh-crew to temporarily load

Session commands

These override the global defaults for the current session only, and are enforced at the tool layer rather than by prompting:

Command

What it does

/dsh-crew:config

Show or set this session's defaults: tier=flash|pro, effort=off|high|max, mode=auto|hub|standalone, timeout=<seconds>, policy=auto|flash-only|pro-only, escalate=true|false, reset

/dsh-crew:on Β· /dsh-crew:off

Turn dispatch for this session on or off (off is a hard switch: the tool refuses)

/dsh-crew:status

Live status of worker jobs: tier, progress, tokens, current tool

Codex

Installation

Recommended to use the installer (auto-renders paths for this machine, copies /dsh-config, /dsh-status commands):

node src/install/cli.mjs codex

Or manually copy (requires manual path modification after copying):

cp codex/agents/*.toml ~/.codex/agents/    # global or project-level .codex/agents/

Role files come pre-configured with:

  • MCP server mounting configuration

  • default_tools_approval_mode = "approve" (required, otherwise tool calls are auto-cancelled in exec mode)

  • tool_timeout_sec = 3600

Note: When manually copying, absolute paths in the args field must be updated to match actual installation location; the installer handles this automatically.

Usage

  • In interactive TUI, select "spawn ds-pro to ..." to dispatch tasks; Active/Done panels show progress

  • codex exec mode can also directly call dsh_run_worker

Session commands

The same two prompts are installed for Codex:

Command

What it does

/dsh-config

Show or set this session's defaults: tier=flash|pro, effort=off|high|max, mode=auto|hub|standalone, timeout=<seconds>, policy=auto|flash-only|pro-only, escalate=true|false, reset

/dsh-status

Live status of worker jobs: tier, progress, tokens, current tool

MCP tools

Tool

Description

dsh_run_worker

Synchronous task dispatch (tier: flash/pro, effort: off/high/max, cwd), waits for result

dsh_spawn_worker

Asynchronous task dispatch, returns job id (for parallel fan-out)

dsh_worker_status

Query real-time progress of all jobs (turn/step/current tool/token)

dsh_worker_result

Fetch result, can specify wait_seconds to wait

dsh_worker_cancel

Cancel specified job, terminate its runtime process

Progress is simultaneously mirrored to ~/.config/dsh-crew/status.d/ (one shard file per writer, can be read by statusline / external monitoring).

Multimodal: vision and image generation

DeepSeek is a text-only model and does not support image input or generation. This plugin sources these capabilities externally through MCP tools:

Tool

Description

describe_image

Answer questions by viewing images (screenshots, designs, charts, etc.), results cached by provider + model + image + question

generate_image

Generate image from text description, save to specified absolute path; output is flat bitmap (requires OpenPencil for layer editing)

Session image pasting: In DSH, switch model to DeepSeek (vision) β—‰ to directly paste images. Images remain in session and display normally; the plugin appends transcribed text after them and strips images before sendingβ€”you see the image, the model reads the text.

Configuration

In DSH settings page β†’ DSH Crew β†’ Multimodal (or directly edit ~/.config/dsh-crew/config.json):

Vision provider (image viewing):

  • claude-code (default, uses haiku, inexpensive)

  • codex (uses GPT, can specify specific model)

  • grok (uses Grok)

  • agy (Antigravity)

  • custom (OpenAI-compatible API or local command)

  • off (disabled)

Image generation provider (image generation):

  • codex ($imagegen, gpt-image-2)

  • agy (Nano Banana)

  • grok (Imagine)

  • custom (OpenAI-compatible API or local command)

  • off (disabled)

Custom provider

Two integration methods:

API: Any OpenAI-compatible endpoint

  • Fill Base URL, API Key, model list

  • Vision uses /chat/completions with inline base64 images

  • Image generation uses /images/generations

  • Must specify "image generation model" to have generation capability, otherwise provider only appears in vision selection

CLI: Local command template, placeholders substituted with safe references

  • Vision: {image} {question} {model} β†’ stdout as answer

  • Image generation: {prompt} {output} {size} β†’ command must write file to {output}

  • Fill at least one command; whichever is filled determines capability

Connectivity test: Each custom provider has a test button

  • API: Check endpoint reachability, auth, send real vision request to verify

  • CLI: Check executable file, run real command to verify

  • Image generation: Validate config only, no actual image output

Borrowed subscription CLIs (claude / codex / grok / agy) require you to be logged in locally; the plugin won't bypass their permissions for you.

Hub mode

This package is also a valid DSH bundle (dsh.bundle + cordis.patch.yml). After installing into DSH Web profile with dsh plugin add dsh-crew:

  • Worker sessions become first-class citizens: run as first-class sessions in DSH host (agents.create + per-session model/effort waterfall + default preset), appear in Web UI session list, can be opened anytime to view complete execution

  • Organize by working directory: manage worker sessions by cwd in Web UI

  • Loopback API:

    • POST/GET /_dsh/dsh-crew/jobs: spawn tasks, list, long-poll results, cancel

    • GET /_dsh/dsh-crew/ping: health check (MCP shim uses this to detect if hub is running)

    • POST /_dsh/dsh-crew/install: one-click install Claude Code / Codex integration (backend of src/install/)

  • Auto-detection: CC/Codex's MCP shim auto-detects hub (DSH_CREW_HUB env var, default http://127.0.0.1:3080)

    • DSH Web running β†’ jobs enter hub mode (mode: "hub")

    • Not running β†’ fall back to standalone runtime

Solution selection and limitations

  • Current state: Claude Code subagent shell uses haiku as intermediary; each dispatch adds hundreds to thousands of tokens

  • Trade-off: Use small amount of Anthropic token in exchange for native task UI, real-time progress display, no extra configuration

  • Recommendation: If you already subscribe to Claude Pro or use Claude Code, use this approachβ€”convenient and transparent

Pay-as-you-go / CI environments β†’ direct router approach

  • Current state: Claude Code subagent frontmatter doesn't support direct third-party model connection; this repo's router experiment in scratchpad requires API-key credentials for Claude Code, but subscription OAuth is blocked upstream by Anthropic with 403

  • Recommendation:

    • If using API-key credentials (not OAuth) and want to save Anthropic tokens, can run local router for direct DeepSeek connection

    • CI environments typically also use API keys; this approach is more economical (all DeepSeek tokens)

    • Requires self-testing of router integration (not officially supported)

Running DSH Web β†’ hub mode auto-enabled

  • Current state: If dsh plugin add dsh-crew installed into DSH Web profile, jobs run as first-class sessions in host, appear in Web UI session list

  • Recommendation: During local development iteration, recommend enabling hub mode; worker progress can be fully observed in Web UI; for cross-machine collaboration or environments without Web UI, use Claude Code / Codex shell approach

Known items

  • Codex role can theoretically try model_provider pointing directly to DeepSeek (unverified); this bridge doesn't depend on it

  • Image generation output is flat bitmap; layer editing requires OpenPencil

  • Runtime dependencies: Only @modelcontextprotocol/sdk and zod; @deepseek-ai/* are peerDependencies (provided by DSH host)

  • Codex must configure: default_tools_approval_mode = "approve", otherwise tool calls are auto-cancelled

Develop

pnpm install
node_modules/.bin/tsdown src/client/index.tsx --format cjs --platform browser \
  --target es2022 --tsconfig tsconfig.client.json --out-dir .client-build --clean
node scripts/build-client.mjs   # wraps the bundle for the DSH module loader
node scripts/smoke.mjs          # dispatches one real flash task end to end

Runtime dependencies are only @modelcontextprotocol/sdk and zod; every @deepseek-ai/* package is a peer dependency provided by the DSH host, which keeps the plugin inside the host's single module realm.

Ecosystem

  • DSH Noema β€” long-term memory for DSH

  • DSH OpenPencil β€” inspect and edit .op design documents inside a conversation

License

MIT

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Wraps Claude Code as tools for MCP clients, enabling autonomous coding tasks via a 4-tool lifecycle with session management, async polling, and permission controls.
    4
    118
    18
    MIT

View all related MCP servers

Related MCP Connectors

  • Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.

  • A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage

  • Live SEO workflow tools for Claude Code, Codex, and AI agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZSeven-W/dsh-crew'

If you have feedback or need assistance with the MCP directory API, please join our Discord server