by sixtysevenlf
DSH x Blender direct realtime plugin v1.0 — let an AI model drive Blender over a direct TCP channel: viewport frames, custom-angle renders, inner-loop search, render profiling, safe decimation, headless offload, one-call GUI launch (15 tools + blender_rt_plan: 28 families / 183 ops). 配套 skill:sixtysevenlf/dsh-skill-blender-modeling
# Add to your Claude Code skills
git clone https://github.com/sixtysevenlf/dsh-blender-pluginGuides for using ai agents skills like dsh-blender-plugin.
Last scanned: 9/19/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-09-19T08:33:47.002Z",
"npmAuditRan": false,
"pipAuditRan": true,
"promptInjectionRan": true
}See how dsh-blender-plugin compares with popular alternatives.
dsh-blender-plugin is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by sixtysevenlf. DSH x Blender direct realtime plugin v1.0 — let an AI model drive Blender over a direct TCP channel: viewport frames, custom-angle renders, inner-loop search, render profiling, safe decimation, headless offload, one-call GUI launch (15 tools + blender_rt_plan: 28 families / 183 ops). 配套 skill:sixtysevenlf/dsh-skill-blender-modeling. It has 195 GitHub stars.
Yes. dsh-blender-plugin passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/sixtysevenlf/dsh-blender-plugin" and add it to your Claude Code skills directory (see the Installation section above).
dsh-blender-plugin is primarily written in Python. It is open-source under sixtysevenlf on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh dsh-blender-plugin against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
🤖 Installing with an AI agent? Don't let it guess — send it the repo URL together with this: "Read §2 Requirements, §3 Install and §9 Troubleshooting in the README, plus AGENTS.md, before doing anything. Then run
doctor— it is not installed untilkind=ok; if it fails, walk §9."Ready-to-paste prompt: docs/AI-安装提示词.md
This plugin is open source and free (BSD-3-Clause): every feature is available to everyone — no paywall, no license key, no "sponsor edition". If it saved you some time, you're welcome to buy me a coffee: it's a voluntary donation, not a purchase.
| Alipay (支付宝) | WeChat 赞赏码 |
|---|---|
| Open Alipay → Scan | Open WeChat → Scan |
A few things, so there's no misunderstanding:
docs/images/ — click one to open the full-size original (1080×1621 / 1027×1027); if GitHub image loading is unreliable from mainland China, just open the files directly from the repository.🌐 Language: English (this page) · 简体中文
🧩 Companion skill: blender-modeling — the process and the acceptance criteria for modeling / assembly (multi-agent division of labour, reference-image-driven shapes, six pitfalls, numeric assembly gates). The plugin owns the channel; the skill owns how to build and how to verify.
🏷 Version: v1.0 (package
1.0.0) — the first stable release. The model-facing surface is frozen at 15 tools, and the plan channel exposes 28 families · 183 ops.
Let an AI model actually drive Blender — no clicking, no screenshots-into-prompt, no MCP server. One direct TCP channel (addon
127.0.0.1:9876· backend127.0.0.1:9877) gives the model 15 tools: see the viewport · edit the scene · watch a time window · run an inner search loop · profile and fix render perf · decimate objects safely · offload heavy work to a headless process · batch long work as jobs · roll back · store parameter presets · call any addon command · judge / verify / export through the contract layer · operate the channel itself.Acceptance is unchanged and unforgiving:
blender_viewport(op="doctor")must returnkind=ok. If it does not, it is not installed — walk §9.
| Capability | Tool | Typical latency |
|---|---|---|
| Peek at the viewport | blender_rt_see |
50–100 ms |
| Render from any angle (no camera object, user viewport untouched) | blender_rt_see {from, look_at, ...} |
85–280 ms |
| Change one thing and verify it | blender_rt_do {see:true} |
≈105 ms |
| Did it move? Is it right? | blender_rt_watch |
≤6 frames/call |
| Inner loop search (thousands of iterations, zero model turns) | blender_rt_loop |
160 ticks/s |
| Pass through any addon command / list them | blender_rt_cmd / blender_rt_commands |
25–55 ms |
| Render performance profiling + preset | blender_rt_perf |
analyze ≈10–20 s |
| Object decimation (safe join, zero geometry loss) | blender_rt_opt |
≈1.4 ms/object |
| Headless process for heavy renders / batch geometry | blender_rt_headless |
cold start 0.9–1.2 s |
| Contract layer + planner + 28 families / 183 ops | blender_rt_plan |
AABB sweep 24 ms · BVH 0.17 ms/pair (307 objects) |
Hot headless session (reuse one blender -b, K persists) |
blender_rt_worker |
pays the 1.1–1.5 s cold start once |
| Transactions / rollback | blender_rt_txn |
snapshot 96.7 MB / 824 ms (300 objects) · mark→revert verified |
| Preset library (save / apply / export parameter sets) | blender_rt_preset |
a stored render.resolution_x really takes effect |
| Job layer for work longer than one wait window | blender_rt_job |
op=wait blocks for the structured result |
| Channel health / write lease / one-call Blender launch | blender_viewport |
health 70–100 ms |
Detailed walkthrough (Chinese): docs/操作教程.md · configuration reference (Chinese): docs/配置参考.md · deployment SOP: docs/部署SOP.md. This README covers the same ground in condensed English.
-b is only used by the headless tools).MCP for Blender (not bundled) listening on 127.0.0.1:9876. It must provide at least:
ping, get_scene_info, get_world_state_snapshot, get_object_info(name), get_viewport_screenshot(max_size, filepath, format), execute_code(code).
The harveyxiacn enhanced blender_mcp_addon is also supported (different wire protocol — the plugin adapts automatically; addonProtocol, default auto, see docs/配置参考.md §6). That implementation has none of the five asset integrations, and the corresponding commands fail loudly instead of pretending.
Enable it in Blender, then in a 3D viewport press N → MCP for Blender panel → Connect.
Compatibility probe: node runtime/_probe_tools.mjs. Protocol self-test (no Blender needed): node tests/protocol_selftest.mjs.inject: ['tools']).
Works with DSH in WSL + Blender on Windows (WSL interop is used to spawn blender.exe), with DSH and Blender on the same Windows machine (path mapping degrades gracefully), and — as of v1.0.4 — with native Linux (not WSL): host and Blender share one OS, so no cross-OS path rewriting happens (/home/… reaches Blender as-is) and blender_viewport op=doctor reports your own distro. Blender is found via which blender; set DSH_BLENDER_EXE if it lives elsewhere. Default working dir: os.tmpdir()/dsh-blender-rt (see docs/配置参考.md §5)./Applications (Blender*.app, including ~/Applications and /Volumes/*/Applications), and the working dir defaults to ~/.dsh-blender-rt. Set DSH_BLENDER_EXE / blenderExe only if you installed Blender somewhere non-standard; blender_viewport op=doctor prints what was detected.# 1) Build (needs a DSH source checkout to link cordis/schemastery/dsh-tools)
cd dsh-blender-plugin
DSH_CHECKOUT=/path/to/dsh-harness bash scripts/build.sh # produces lib/
# 2) (optional) configure — auto-detection usually just works
cp dsh-blender.config.example.json dsh-blender.config.json
# 3) Install into DSH as a profile bundle (this package declares dsh.bundle):
# a) symlink into <profile>/node_modules/@dsh-external/dsh-blender-plugin
# b) in the profile package.json add "link:<abs path>" to dependencies and
# "@dsh-external/dsh-blender-plugin" to dsh.profile.bundles
# c) dry-run: dsh --profile <profile> --dump-config then restart DSH
# 4) Start Blender and connect the addon — two routes:
# agent / unattended: blender_viewport(op="launch") # boot script + spawn + polls 9876, idempotent
# manual: start Blender → press N → "MCP for Blender" → Connect (127.0.0.1:9876)
# 5) Verify — the ONLY acceptance criterion: doctor returns kind=ok (otherwise it is NOT installed; walk §9)
curl -sS http://127.0.0.1:9877/health # backend alive + provenance (is this process the disk copy?)
curl -sS http://127.0.0.1:9877/doctor # FULL round-trip through bpy; "kind":"ok" is the goal
curl -sS http://127.0.0.1:9877/who # write lease + channel metrics + effective config
The plugin auto-starts the backend (node runtime/server.mjs, default 127.0.0.1:9877) and runs a 15-second watchdog that respawns it if it dies. blender_viewport op=stop pauses the watchdog.
blender_viewport(op="doctor") # health + effective config
blender_rt_see(max_size=560) # what the model sees right now
blender_rt_see(from="9,-9,6", look_at="0,0,1") # a different angle, user viewport untouched
npm test pins both numbers and the 15 tool names — losing a family, an op or a tool turns the build red..app auto-detection, ~/.dsh-blender-rt working dir, and a /proc-free backend kill path. blender_viewport(op="launch") cold-starts a connected GUI Blender (measured 2.5 s). npm run test:mac = 45 assertions; npm run test:gui = 11/11 on a real machine.sculpt_* (numpy displacement brushes; bpy.ops.sculpt.brush_stroke does not work from Python on Blender 5.2 — don't try it), fix_* (repair / decimate), uv_* (smart project / unwr