dsh-plugin-graphgpt
Run validated GraphGPT workflows as native DeepSeek Harness tools
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 22, 2026
- Updated
- Aug 22, 2026
Introduction
dsh-plugin-graphgpt
Expose validated GraphGPT YAML workflows as a native model-facing tool in DeepSeek Harness.
The plugin registers one narrowly scoped tool, graphgpt_workflow, with three actions:
validatechecks a workflow and returns GraphGPT's JSON diagnostics.inspectreturns its normalized graph structure.runexecutes it with JSON state input.
Why this integration
DeepSeek Harness supplies the agent runtime and tool protocol. GraphGPT supplies declarative, versionable LangGraph generation and execution. Together, a Harness agent can invoke reusable graph workflows without receiving arbitrary shell access.
Requirements
- Node.js
^22.19.0or>=24 - DeepSeek Harness / Cordis
- Python 3.11+
graphgpt-builder==0.8.0
Install
Install GraphGPT and this plugin in the environment that runs DeepSeek Harness:
python -m pip install graphgpt-builder==0.8.0
pnpm add dsh-plugin-graphgpt
Until the npm package is published, install directly from GitHub:
pnpm add github:BrucePayton/dsh-plugin-graphgpt#v0.1.0
Add the plugin to your Cordis patch/configuration:
- id: graphgpt-workflow
name: dsh-plugin-graphgpt
config:
root: /absolute/path/to/graphgpt/workflows
command: [graphgpt]
timeoutMs: 120000
maxOutputChars: 50000
The command is an argument array, not a shell string. For an isolated runner it can also be configured as, for example, [uvx, --from, graphgpt-builder==0.8.0, graphgpt].
Copy examples/workflow.yaml and examples/nodes.py into the configured root for a minimal end-to-end example. A Harness agent can then call:
{
"action": "run",
"workflow": "workflow.yaml",
"input": { "message": "DeepSeek Harness" }
}
The structured result contains ok, action, workflow, exitCode, stdout, stderr, and truncated.
Security model
The tool intentionally does not accept commands or CLI flags from the model. Deployment owners configure the executable, root, timeout, and combined output limit. Each requested workflow must:
- be a relative path beneath the configured root;
- resolve beneath that root after symlink resolution;
- be a regular
.yamlor.ymlfile.
The child process uses shell: false, propagates Harness cancellation, and enforces time/output bounds. GraphGPT's own module allowlist remains the execution-policy boundary for Python nodes. Only deploy reviewed workflows and dependencies. See SECURITY.md.
Development
pnpm install
pnpm run check
pnpm test
GRAPHGPT_E2E=1 pnpm test
pnpm run pack:check
The regular suite uses a fake executable to verify exact argv and working-directory behavior. The opt-in end-to-end test runs the included workflow with the real public GraphGPT package.
Compatibility
| Component | Tested version |
|---|---|
| DeepSeek Harness tool API | @deepseek-ai/dsh-tools@0.1.1-rc.2 |
| Cordis | @deepseek-ai/cordis@4.0.1 |
| GraphGPT | graphgpt-builder==0.8.0 |
| Node.js | 22.19.0 |
Contributing
Issues and pull requests are welcome. Please read CONTRIBUTING.md. This independent community plugin is not an official DeepSeek product.
License
MIT