Agent-Human IDE ⌨️
Web and Desktop versions, bundles Plugins, Skills and Interfaces
Supports core DSH for professional Engineering and Design. Standard dsh bundles. The plugins are plain JavaScript with zero npm dependencies; the launchers run on Windows, macOS and Linux (PowerShell on one side, plain POSIX shell on the other).
| Windows | macOS / Linux | |
|---|---|---|
| Native window | scripts\run-desktop.bat |
cargo build --release in app/src-tauri |
| Browser tab | scripts\run-web.bat |
./scripts/run-web.sh |
Both start the pinned harness and open the URL it prints: the native window loads it in a WebView2 / WKWebView / WebKitGTK window, the other in Chrome, falling back to your default browser. The URL is opened only when it names a loopback address, and the launch token is never written to a file - both rules are in SECURITY.md.
Every package's own README is the reference for what it does, why it is built that
way and what it touches. The exact versions are in
.dsh-version.json.
| Package | What it adds |
|---|---|
dsh-vn-master |
the browser-free master, installed last - the slot pack-wide patches and row restatements go in (it enables the Browser tab on the web profile, and removes the feedback surface) |
dsh-rightbar |
the pack's own right bar: tab strip, docking panel and the sidebarRight registry (a fork of the shipped bar) |
dsh-rightbar-files |
the Files tab type on top of that bar |
dsh-editor |
text and code tabs (vendored CodeMirror 6), with a Markdown preview and Save/Create |
dsh-gittree |
read-only History tab: the workspace's commits as a graph rail (lanes, merges, PR chips), and the files each one touched |
dsh-image |
an image viewer that fits, zooms, pans, and reads the source pixel under the pointer |
dsh-audio |
a waveform surface: WAV/AIFF/FLAC, one track per channel, dBFS, selection and playback |
dsh-media |
media the agent can work with: media_probe / media_run / media_frames over a pinned, SHA-256-verified ffmpeg copy, plus the routes the video tab streams through |
dsh-supercollider |
SuperCollider the agent can play: ten sc_* tools over one long-lived sclang session (a warm round trip is ~31 ms, and what the agent defines is still there next call) and a hand-written OSC client to scsynth, the installed .schelp reference indexed for sc_help, the .scd file workflow, and five skills that teach the language, SynthDefs and live coding — every code example in them compiled by a check. Zero npm dependencies and nothing bundled — it finds the machine's own SuperCollider — and its own UI is one small console tab, with .scd files opening in the editor |
dsh-video |
a player tab that streams and seeks any video container, with an ffprobe facts panel, chapter jumps and a one-click remux when the browser cannot decode it |
dsh-diagrams |
Mermaid, TikZ and the Diagram Design kit as tabs and seven agent tools — the kit's 204 examples and 44 documented types are vendored at a pinned commit, browsable on the index page, insertable in one call, and every write (a self-contained HTML document included) is validated before it is stored |
dsh-pdf |
PDF as a surface the agent can read and scan, plus a reader tab with thumbnails and bookmarks |
dsh-ocr |
the agent can read a picture: one ocr tool over tesseract from PATH or — on Windows, with nothing installed at all — the OCR engine Windows ships, which rasterizes a PDF page itself. Names the engine, the language and the page count, refuses a language this host has no data for with the list of what it CAN read, and says every answer is a transcription |
dsh-proto-lab |
a prototyping lab the agent fills: five lab_* tools write a run into the workspace's own <workspace>/lab/<runtime>/<slug>/ — p5.js sketches a browser opens, and openFrameworks projects that are three real C++ files (src/main.cpp, src/ofApp.h, src/ofApp.cpp) built with your own projectGenerator and make. A runtime registry makes a third language one module and one line (Processing in Rust, Cinder), a committed example library sits beside each skill and is driven by the checks, and verification is an explicit ladder — structure, parse, compile, render, measure — whose answer always names the tier that was actually reached. The lab itself is gitignored: the bundle ships the generator and the examples, never the runs |
dsh-browser |
the Browser tab, replacing the shipped iframe one: the page is rendered on the host in a disposable engine behind an https-only egress gate (screenshot, post-script text, measured styles) for the tab and for browser_render / browser_query / browser_text — built and shipped, but turned OFF: the master layer disables the row, so a profile loads no tab, no routes, no tools and no client bundle |
dsh-skills |
the Skills browser: a header button left of the zoom control opens every skill this conversation loads, with its markdown and inline editing |
dsh-cmdbar |
the command bar: the agent's own commands in a bottom dock (a read-only transcript of the conversation's log — the terminals were removed in alpha.12; the panel follows whichever conversation is on screen) |
dsh-themes |
header controls (themes incl. Nord/Monokai/Hacker/Cyber, screenshot, page zoom), the Markdown paper, VN branding, and the shipped account-menu Feedback row hidden |
dsh-ui-state |
the pack's own UI state (zoom, theme, dock, column widths) remembered host-side |
dsh-modal |
the shared dialog surface (modals) the pack's controls use |
dsh-open-in-app |
Open In… patched to open the OS file browser directly |
The pack used to ship its own Files panel (dsh-files, earlier dsh-focus); that
was retired when the harness grew a real right Sidebar, and the installer prunes
the old names so an upgrade cannot double-mount.
Some bundles carry somebody else's work inside them. Nothing is fetched at run
time — the profile installs a bundle as a live link, so an engine the plugin needs
on both sides of the app has to be on disk — and every vendored tree keeps its
upstream LICENSE beside its bytes.
| what | bundles | how it is kept honest |
|---|---|---|
Mermaid 11.17.2 (lib/vendor/mermaid.min.js) |
dsh-diagrams |
node packages/dsh-diagrams/vendor/build.mjs --check re-hashes the recorded sha256 |
Diagram Design — 204 worked examples, 44 documented visual types, 62 reference documents, MIT, cathrynlavery/diagram-design |
dsh-diagrams |
node packages/dsh-diagrams/vendor/design/build.mjs --check re-hashes the whole 277-file tree OFFLINE against a pinned commit |
pdf.js 6.3.289 (lib/vendor/pdf.min.mjs + worker, cmaps, fonts, wasm) |
dsh-pdf |
node packages/dsh-pdf/vendor/build.mjs --check, per-file hashes plus a digest per tree |
p5.js 1.11.13 (lib/vendor/p5.min.js, LGPL-2.1) |
dsh-proto-lab |
node packages/dsh-proto-lab/vendor/build.mjs --check re-hashes the recorded bytes offline. 1.x on purpose: it is the last line with a self-contained classic-script browser build, which is what a run opened straight off the filesystem needs |
CodeMirror 6 (lib/vendor/cm6.min.js) and the forked shipped client bundles |
dsh-editor, dsh-rightbar, dsh-open-in-app |
the bundle's own version marker and the forked trees' hashes, both asserted by scripts/checks/ |
A vendored tree names its pin in a SOURCE.json/VERSION.json and — where the
copy differs from upstream at all — says so in a NOTICE.md: the Diagram Design
kit is line-ending-normalized to LF so a Windows checkout cannot report phantom
drift, and that is the only change to it. A pin bump is deliberate — --update-pin,
rebuild, review the diff, run the package's own check.
- MIT - see LICENSE. Plugins are authored by vecnode.
- SECURITY.md: the threat model, the launch token, what the pack
deliberately does not do, and how
check-no-secrets.mjskeeps a credential out of a commit. Report a vulnerability privately, as described there. - ARCHITECTURE.md is the deep dive; docs/ holds install, distribute, compatibility and per-host notes.

