What's the smallest agent harness that is still architecturally complete? MiniDSH is a local-first coding-agent harness released as an independent educational and engineering project, built as roughly 20,000 lines of TypeScript in a single package with one runtime dependency, four layers, seventeen service contracts in core plus one in the application, and twenty-seven durable event kinds. The project studies DeepSeek's open-source DeepSeek Harness as a reference and is not a fork, product, or affiliated with or endorsed by DeepSeek. It requires Node 24 or newer, ships DeepSeek and Anthropic providers with mid-session model switching, and runs via `npm install -g minidsh` from a terminal, browser, or script. Minimal surface. Complete architecture. MiniDSH is a small, local-first coding-agent harness: the runtime around a model that gives it tools, sessions and permissions. Install it, point it at a repository, and use it from a terminal, a browser or a script. It is also a reference architecture small enough to read in a sitting, and an experiment in growing an AI-assisted system architecture-first rather than feature by feature. It studies DeepSeek Harness https://github.com/deepseek-ai/deepseek-harness DSH — DeepSeek's open-source, plugin-composed and unusually well documented coding agent — as a textbook, and asks how small a system can be while keeping the same architectural properties. It is an independent educational and engineering project: not a fork, not a product, and not affiliated with or endorsed by DeepSeek. Contents: What it is what-minidsh-is · Quick start quick-start · What you get what-you-get · Status and limitations status-and-limitations · The question it investigates the-question-it-investigates · Architecture architecture · What it learned from DeepSeek Harness what-minidsh-learned-from-deepseek-harness · The architecture-first experiment the-architecture-first-experiment · Verification verification · Documents and help documents-and-help · License license-and-attribution Three things: 1. Useful software. A coding agent that edits files and runs commands under an authority you set — which files it may write, and which actions need your approval — and can audit afterwards; that survives its process being killed and can be resumed or forked from its log; that manages its own context; that can hand a bounded task to a child or, with a vision plugin inserted, a visual check to a model that can see. Two providers ship DeepSeek and Anthropic , and a session can switch models mid-conversation. 2. A reference architecture. About twenty thousand lines of TypeScript in one package with one runtime dependency: four layers with a dependency rule enforced by a script in pnpm check , seventeen service contracts in core plus one in the application, each with stated ownership, twenty-seven durable event kinds, and one document — ARCHITECTURE.md /earthwalker17/MiniDSH/blob/main/docs/ARCHITECTURE.md — that says where every new thing goes. 3. A systems-engineering experiment. Whether a project built almost entirely by coding-agent sessions can keep a global architecture intact across months, by making it explicit, inspectable and continuously falsified rather than letting sessions gradually invent it. The thesis is fewer concepts and stronger invariants , not fewer lines or more features. Requirements: - Node 24 or newer. - Windows: PowerShell 7 pwsh . The shell tool runs pwsh only and refuses loudly, naming the remedy, when it is missing; it never falls back to PowerShell 5.1. Windows has no shell-confinement backend, so every shell command there costs one approval see below . - Linux: bubblewrap apt install bubblewrap if you want shell commands confined by the operating system instead of approved one by one. macOS needs nothing extra. - A provider key: DEEPSEEK API KEY for the default provider, ANTHROPIC API KEY for Anthropic — in the environment, or in ~/.minidsh/credentials.json as {"DEEPSEEK API KEY": "…"} . Only a key's name is ever logged; a run without one stops and names the key it expected. npm install -g minidsh or run it without installing: npx minidsh … minidsh chat --cwd path/to/repo interactive terminal --cwd defaults to the current directory minidsh web --cwd path/to/repo the same runtime in a browser; open the one URL it prints minidsh run "fix the failing test in src/slug.test.mjs" --approve --approve answers every approval yes; without it a headless run refuses anything that needs one — on Windows, that is every shell command minidsh run "review this module for unchecked inputs" --provider anthropic --model claude-sonnet-5 minidsh run "summarize this repository" --json one JSON line per session event on stdout minidsh sessions list what is stored, by name minidsh sessions show