dsh-crew
Enables OpenAI's Codex to dispatch tasks to DeepSeek Harness (DSH) agents as native subagents, with live progress, tier policy, and session management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@dsh-crewDispatch a pro worker to trace the memory leak in src/cache.ts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 webOr, for local development straight from the source tree:
dsh plugin --profile web add link:/path/to/dsh-crew
dsh webThe 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.mjsWithin 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.
flashis fast and cheap (simple tasks),proreasons 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.shorstatusline/worker-segment.shcan be independently integrated
Long-running tasks: CC has timeout limits on MCP calls (
MCP_TOOL_TIMEOUTadjustable), long tasks can have orchestrator usedsh_spawn_worker+dsh_worker_result(wait_seconds)pollingLocal development and debugging:
claude --plugin-dir /path/to/dsh-crewto 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 |
| Show or set this session's defaults: |
| Turn dispatch for this session on or off (off is a hard switch: the tool refuses) |
| 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 codexOr 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 execmode can also directly calldsh_run_worker
Session commands
The same two prompts are installed for Codex:
Command | What it does |
| Show or set this session's defaults: |
| Live status of worker jobs: tier, progress, tokens, current tool |
MCP tools
Tool | Description |
| Synchronous task dispatch ( |
| Asynchronous task dispatch, returns job id (for parallel fan-out) |
| Query real-time progress of all jobs (turn/step/current tool/token) |
| Fetch result, can specify |
| 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 |
| Answer questions by viewing images (screenshots, designs, charts, etc.), results cached by provider + model + image + question |
| 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/completionswith inline base64 imagesImage generation uses
/images/generationsMust 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 answerImage 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 executionOrganize 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, cancelGET /_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 ofsrc/install/)
Auto-detection: CC/Codex's MCP shim auto-detects hub (
DSH_CREW_HUBenv var, defaulthttp://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
Regular subscribers β shell subagent approach (recommended)
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-crewinstalled into DSH Web profile, jobs run as first-class sessions in host, appear in Web UI session listRecommendation: 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_providerpointing directly to DeepSeek (unverified); this bridge doesn't depend on itImage generation output is flat bitmap; layer editing requires OpenPencil
Runtime dependencies: Only
@modelcontextprotocol/sdkandzod;@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 endRuntime 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
.opdesign documents inside a conversation
License
MIT
This server cannot be installed
Maintenance
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
- Alicense-qualityAmaintenanceEnables spawning and managing multiple Claude Code agents in parallel with model selection, live tracking via a kanban dashboard, and consolidated answers back in the chat.MIT
- AlicenseAqualityDmaintenanceWraps Claude Code as tools for MCP clients, enabling autonomous coding tasks via a 4-tool lifecycle with session management, async polling, and permission controls.411818MIT
- Alicense-qualityDmaintenanceEnables turning AI code agents like Anthropic Claude and OpenAI Codex into background agents accessible via MCP protocol for code generation, branch creation, and PR automation.46MIT
- AlicenseBqualityDmaintenanceEnables persistent agent identity, memory, and tools for Claude Code, including messaging, timers, and browser automation.59101MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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