★ Reading this for free? Get 20 structured AI courses + per-chapter AI tutor — the first chapter of every course free, no card.Start free in 30 seconds
AI Agents

DeepSeek Harness on a Local Model: Does It Work?

August 30, 2026
12 min read
LocalAimaster Research Team

Want to go deeper than this article?

Free account unlocks the first chapter of all 25 courses — RAG, agents, MCP, voice AI, MLOps, real GitHub repos.

📚AI Learning Path

Go from reading about AI to building with AI 20 structured courses. Hands-on projects. Runs on your machine. Start free.

Start free
Or own it for life — Lifetime $149, pay once

Short answer: yes, and there are two routes. Ollama 0.32.11 (14 August 2026) added ollama launch dsh, and dsh separately supports any OpenAI-compatible endpoint through its "Add a custom provider" form — which is exactly what Ollama serves on http://127.0.0.1:11434/v1. The harness itself needs no GPU; it is a Node app. All the hardware cost is the driver model, and 24GB VRAM running qwen3.8:27b (an 18GB download at Q4_K_M) is the comfortable target.

The catch is worth stating up front: the DeepSeek Harness README does not document local endpoints. It tells you to get a DeepSeek API key. The local path exists in the provider guide and in Ollama's release notes, not in the front door. That gap is the reason this page exists.


What We Verified, and How

This is a repository that was five days old when we checked it on 18 August 2026, so it is worth being explicit about where every claim below comes from rather than sounding more certain than we are.

Verified directly from the source:

  • Repository deepseek-ai/deepseek-harness was created 13 August 2026, is MIT licensed, and its default branch is master. It was climbing through ~156,000 stars when we checked on 18 August 2026 — a number that was visibly moving while we read it, so treat it as an order of magnitude, not a measurement.
  • The latest release is dsh-v0.1.0-rc.7, published 17 August 2026. Every config shape on this page is read from that tree.
  • package.json declares "version": "0.1.0-rc.7" and engines.node of ^22.19.0 || >=24.0.0.
  • The README's own words: "DeepSeek Harness is currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES."
  • Ollama's v0.32.11 release notes, published 14 August 2026, state: "ollama launch dsh now supports DeepSeek Harness, DeepSeek's open-source agent harness."
  • The custom-provider schema, field names and error codes below come from the repository's own docs/user/guide/providers.md and the dsh-llm-pi-ai package README.

What we have not done: we have not yet completed a long unattended agent run against a local model and measured tool-call failure rates over time. When a project is this young and this explicitly unstable, quoting a reliability figure we cannot reproduce next week would be worse than saying nothing. The VRAM tiers below are derived from published model sizes and from what we already know about tool-calling behaviour at each size — see best Ollama models for tool calling for that groundwork.

Recheck date: this page is written against rc.7. Given the project's own breaking-change warning, verify the provider guide before following the config verbatim.


Reading articles is good. Building is better.

Free account = 20+ free chapters across 25 courses, with a per-chapter AI tutor. No card. Cancel anytime if you ever upgrade.

What dsh Actually Is

DeepSeek Harness is DeepSeek's own open-source agent harness, built on an architecture where — its words — "everything is a plugin." It runs a Web UI locally at http://127.0.0.1:3080 and drives an agent that can read and edit workspace files, run commands, delegate work to subagents, and maintain a plan.

The plugin claim is not marketing. The repository's packages/ directory contains roughly fifty first-party plugin packages: shell, fs, mcp, sandbox, subagent, lsp, terminal, schedule, workflow, credentials, guard, e2b, skill, todo and more. The LLM layer is itself a plugin — dsh-llm-pi-ai — which is precisely why a local model is configuration rather than a code change.

It is powered by Cordis, a framework whose design is described in a paper the README links, "A Programming Paradigm for Spatiotemporal Composability." You do not need to read it to use dsh, but it explains why the config surface looks the way it does: routes, seams and profiles rather than a flat list of settings.

On the growth numbers: roughly 156,000 stars five days after creation is extraordinary, and an ecosystem has already formed around it — anywhere-labs/deepseek-harness-desktop was created the same day and was near 12,800 stars on 18 August 2026. Both figures were still climbing daily; check them yourself rather than trusting a number on a page. And take them as a signal of attention, not of maturity. A five-day-old repository has had five days of bug reports.


Install and Requirements

One command, no GPU, no build step. The only real gate is your Node version.

npx @deepseek-ai/dsh web

That starts the Web UI at http://127.0.0.1:3080 by default. From a checkout instead:

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

Node requirement, read from package.json: ^22.19.0 || >=24.0.0. Node 20 will not run it. Check with node -v first — this is the single most common install failure for any 2026-vintage TypeScript agent tool.

One behaviour that trips people: the dsh process uses its invoking directory as the default filesystem location, but a fresh Web UI has no selected workspace until you add one. The session composer stays unavailable until you click Choose workspace and select a directory. If the UI looks broken on first run, that is usually why.


Route A: ollama launch dsh

The shortest path. One command, added in Ollama 0.32.11 on 14 August 2026.

ollama launch dsh

Ollama's launch mechanism starts a supported app already pointed at your local model. The same release added ollama launch muse for Meta's Muse Code CLI. Four days earlier, 0.32.8 (10 August 2026) had added ollama launch openclaw and ollama launch hermes, and there the pattern took a --model flag, as in ollama launch openclaw --model muse-glimmer. The 0.32.11 notes show dsh without one. If you want a specific driver model rather than whatever is current, try the same flag here and fall back to Route B if it is not wired up for dsh yet.

This route is the right one if you just want to see the thing work. It is the wrong one if you need to control context window, timeouts or which subset of models the harness offers — for that, configure it properly.


Reading articles is good. Building is better.

Free account = 20+ free chapters across 25 courses, with a per-chapter AI tutor. No card. Cancel anytime if you ever upgrade.

Route B: Custom Provider (the one you will actually keep)

dsh treats any OpenAI-compatible endpoint as configuration. Ollama serves one. That is the whole trick.

Through the UI

Open Settings → Models and choose Add a custom provider. The form asks for a lowercase Provider ID, a base URL, an API protocol, a credential, and at least one model. Point the base URL at http://127.0.0.1:11434/v1.

Under Model catalog, Fetch available models queries the base URL and credential currently in the form. Ollama serves the OpenAI-compatible GET /models, so your pulled models should populate. If they do not, enter them by hand — the guide explicitly supports that for endpoints without discovery.

The Provider ID is permanent. Requests, saved sessions, model defaults and credential references all key off it. Renaming means adding a new provider and deleting the old one. Pick something you can live with — ollama, not test2.

Through settings.yaml

The equivalent hand-written form, using the schema documented in the dsh-llm-pi-ai package. Settings live in $DSH_HOME/settings.yaml:

llm-pi-ai:
  providers:
    ollama:
      displayName: Local Ollama
      apiKeyEnv: OLLAMA_API_KEY
      api: openai-completions
      baseURL: http://127.0.0.1:11434/v1
      streamIdleTimeoutMs: 600000
      models:
        - id: qwen3.8:27b
          name: Qwen 3.8 27B
          contextWindow: 262144
          maxTokens: 32768

Five things about that block that the docs are unusually precise about, and that will bite you otherwise:

  1. A hand-declared route needs all three of api, baseURL, and a non-empty models list. dsh ships no catalog for a provider it has never heard of, so nothing can be inferred. An unserviceable profile is refused where it is writtensettings.mutate answers settings-rejected naming the offending route and model, rather than being stored and quietly disabling the namespace.
  2. A models list replaces the route's catalog rather than extending it. Every model you want to keep using must appear in it. An entry of nothing but id is enough.
  3. apiKeyEnv is a reference, not a secret. No key enters the file. It resolves per request from the environment. Ollama does not check it, but if you name a variable that resolves to nothing, the request fails with MISSING_CREDENTIAL on purpose — the docs explain that falling through would otherwise authenticate with whatever unrelated key the environment happens to hold. Either omit apiKeyEnv entirely or export something.
  4. Sizes default generously. A model the route does not size takes defaultContextWindow of 262,144 and defaultMaxTokens of 32,768. Those are the docs' own admitted guesses. For a local 27B where you have not raised Ollama's context, they are far too optimistic — set contextWindow to what you actually serve.
  5. streamIdleTimeoutMs defaults to five minutes and covers an outstanding provider read. A large local model cold-starting from disk can exceed that. Raising it is cheap insurance.

Vision models need one extra line

A model you enter by hand is treated as text-only until it says otherwise, because nothing can interrogate an endpoint about which modalities it accepts. Attaching an image to such a model is refused before it is sent. If your local model takes images, add input:

llm-pi-ai:
  providers:
    ollama:
      apiKeyEnv: OLLAMA_API_KEY
      api: openai-completions
      baseURL: http://127.0.0.1:11434/v1
      models:
        - id: qwen3.8:27b
          input: [text, image]

Or set defaultInput: [text, image] once on the route if every model you declare accepts them. The docs are careful here: both fields state a claim about your endpoint rather than checking it. Over-claiming is worse than under-claiming, because the image stays in the session log and the same doomed request repeats until you start a new session.

If Ollama is on another machine, put a token in front of it before you point an agent at it — see our securing Ollama guide.


Driver Model by VRAM Tier

On 24GB, run qwen3.8:27b — an 18GB download at Q4_K_M. On 12-16GB, run gemma4:12b (7.6GB) and expect to babysit long tool chains. Under 12GB, use dsh as an assisted editor, not an autonomous agent.

Every size is the download size from that model's own Ollama tag listing, read directly. Peak VRAM is higher: context and KV cache sit on top, which is why the verdict column is stricter than the number.

Your hardwareDriver modelDownload sizeHonest verdict
8GB VRAMqwen3.5:9b (Q4_K_M)6.6GBRuns. Single-step edits and file reads are fine. Multi-plugin chains drift.
12GB VRAMgemma4:12b7.6GBBest of the small tier; 256K context per the tag listing.
16GB VRAMgemma4:12b with more context headroom7.6GBqwen3.8:27b is 18GB and qwen3.5:27b is 17GB — neither fits 16GB with usable context.
24GB VRAMqwen3.8:27b (Q4_K_M)18GBThe pick. Ollama's 0.32.12 notes credit it with gains on "long-horizon agentic tasks" — a vendor claim, but the right shape for a harness.
24GB VRAM (alt)muse-glimmer (30B MoE, Q4_K_M)18GBApache-2.0 per its Ollama listing, built for agent loops. Faster per turn than a dense 27B.
32GB VRAMqwen3.5:35b-a3b24GBMoE with 3B active. Or qwen3.8:27b-q8_0 at 30GB if quality matters more than context.
32GB VRAM (alt)nemotron-3.5-lightning25GB30B MoE, 3B active, 1M context on the standard tags.
Apple Silicon 32GBqwen3.8:27b-mlx18GBOllama says it optimized this variant for "repeated tasks and coding agents" on Apple Silicon.
Apple Silicon 64GB+qwen3.8:27b-mxfp832GBRoom for a long session plus everything else you have open.

The 16GB row is the one worth reading twice. There is a real gap in 2026's model sizes: the useful agentic models land at 17-25GB, and the tier below lands at 6-8GB. A 16GB card gets the small-model experience, not a scaled-down version of the big one. If you are buying hardware around this, that gap is the argument for 24GB, and our hardware hub has the current pricing picture.


What the Plugin System Can and Cannot Do Locally

The plugin architecture is model-agnostic — nothing in it requires DeepSeek's API. What changes on a local model is how reliably the agent drives it.

Things that work identically regardless of which model is behind them, because they are harness-side:

  • Filesystem, shell and terminal plugins. Reading and editing workspace files, running commands. The harness asks before operations requiring approval under the active permission policy.
  • MCP. dsh ships an mcp package, so your existing MCP servers plug in the same way. If that is new to you, our Ollama MCP integration guide covers the protocol side.
  • Subagents, plans and jobs. rc.7's release notes mention managing Codex and Claude Code subagent tasks through a Job Panel, and durable image attachments across MCP and ACP.
  • Sandbox and guard packages, plus a native landlock-run component in the tree — the harness has real isolation primitives rather than trusting the model.

Things that degrade with a smaller local model, in the order you will hit them:

  • Tool selection. Fifty first-party plugins means a large tool surface. A 9B model presented with dozens of tools picks wrong more often than one presented with five. Narrow what you expose.
  • Argument fidelity. The right plugin called with a missing or malformed field. The harness surfaces the error; a weak model frequently re-sends the same broken call.
  • Long-horizon coherence. Plans and subagents are exactly the features that assume the model remembers what it decided twenty turns ago.

There is also one hard capability difference. The provider guide notes reasoning-effort levels are per-model configuration — rc.7 added a low reasoning effort for DeepSeek models, with high still the default. On a hand-declared local route, a model has no reasoning metadata unless you declare reasoningEfforts yourself, and the docs are explicit that a hand-declared model without it "does not reason" as far as the harness is concerned. Your local model may still think; the harness simply will not offer you a control for it.

If you want that control, reasoningEfforts is a dict whose keys come from the harness's level set — off, minimal, low, medium, high, xhigh, max — and whose values are the wire spelling your endpoint expects. A level you do not declare is not offered. Declaring false instead states the model does not reason at all; an empty declaration is refused rather than guessed at.


Honest Limitations

This is a developer preview from a repository that is days old. That is not a caveat you can skim.

  • Declared breaking changes. The README says so in capitals. Config that works today may not survive rc.8.
  • The local path is undocumented in the README. It works via the general custom-provider mechanism, which was built for company gateways, not specifically for Ollama. Nothing about it is Ollama-aware, so nothing will warn you about an Ollama-specific mistake.
  • No published local-model guidance at all. There is no first-party recommendation of which local model to drive dsh with, no minimum context guidance, and no tool-calling compatibility list. The tiers on this page are our inference from model sizes and general agent behaviour, not a vendor spec.
  • A five-day-old plugin ecosystem is unaudited by definition. The dsh-plugin GitHub topic is a discovery convention, not a review process.
  • Ollama's /v1 endpoint is an OpenAI-compatibility shim. It is the right choice here because dsh's custom-provider path speaks openai-completions — but shims are where tool-calling edge cases live. If calls come back malformed, that layer is the first place to look, and our Ollama function calling guide covers the failure modes.

None of that means don't use it. It means don't build a workflow you depend on around it this month.


Local vs the DeepSeek API

Local wins on privacy, cost and offline capability. DeepSeek's own API wins on agent reliability and on being the configuration the project actually tests.

Better locally:

  • Your codebase stays on your machine. For a harness with filesystem and shell access to a work repository, this is often the only argument that matters.
  • No metered cost on a loop. An agent that reads twenty files to answer one question is a bad shape for per-token billing.
  • No rate limits and no deprecation. The harness is MIT; the model is yours.
  • Works on a plane, which is a genuine use case for an editor-adjacent agent.

Better on the API:

  • It is the tested path. DeepSeek's card is the one with a dedicated UI slot and first-party reasoning-effort controls. The local route is a general-purpose escape hatch.
  • Tool-call reliability at long horizons. A frontier hosted model still mangles fewer calls on turn thirty than a local 27B.
  • Reasoning controls out of the box, versus declaring reasoningEfforts by hand.
  • No cold starts. An 18GB local model loading from disk is real seconds, every time it is evicted.

Worth knowing that DeepSeek's model line is also available locally — our DeepSeek R1 setup guide, DeepSeek V3 local setup and the DeepSeek V4 overview cover the weights side. Running DeepSeek's harness on DeepSeek's own open weights, with nothing leaving the box, is a coherent setup — just be honest that the biggest of those models are not consumer-hardware models.

If you want the same question answered for the other big August harness, we did that too: OpenClaw on a local model.


Verdict

  1. Yes, dsh works without a DeepSeek API key. ollama launch dsh (Ollama 0.32.11, 14 August 2026) is the quick route; the custom OpenAI-compatible provider at http://127.0.0.1:11434/v1 is the one to keep.
  2. The harness costs you nothing in hardware. Node app, no GPU, port 3080. Node ^22.19.0 || >=24.0.0 is the only gate.
  3. 24GB and qwen3.8:27b (18GB) is the sweet spot. 16GB is a real cliff, not a gentle slope — the useful agent models start at 17GB.
  4. A hand-declared route needs api, baseURL and a full models list, and that list replaces the catalog rather than extending it.
  5. Fix the defaults. defaultContextWindow of 262,144 and a five-minute idle timeout are wrong for most local setups in opposite directions.
  6. It is rc.7 of a developer preview that warns you about breaking changes. Play with it now; don't depend on it yet.

Sources

  • github.com/deepseek-ai/deepseek-harness — README, LICENSE (MIT), package.json (v0.1.0-rc.7, Node engines), docs/user/guide/providers.md, packages/llm/llm-pi-ai/README.md, release dsh-v0.1.0-rc.7 (17 August 2026), repository creation date and star count
  • Ollama release notes — v0.32.11 (14 August 2026, ollama launch dsh) and v0.32.12 (Qwen 3.8 27B)
  • ollama.com/library — tag listings and download sizes for qwen3.8, qwen3.5, gemma4, muse-glimmer and nemotron-3.5-lightning
  • github.com/cordiverse/cordis — the framework dsh is built on

Model capability language ("substantial gains… long-horizon agentic tasks", "optimized for repeated tasks and coding agents") is quoted from Ollama's release notes and is a vendor claim, not our measurement. Download sizes are read from the tag listings. The VRAM tiers are our inference from those sizes plus general tool-calling behaviour, not a first-party specification.


FAQ

🎯
AI Learning Path

Go from reading about AI to building with AI

20 structured courses. Hands-on projects. Runs on your machine. Start free.

Or own it for life — Lifetime $149 $599, pay once

Liked this? 20 full AI courses are waiting.

From fundamentals to RAG, agents, MCP servers, voice AI, and production deployment with real GitHub repos. First chapter free, every course.

Reading now
Join the discussion

LocalAimaster Research Team

Creator of Local AI Master. I've built datasets with over 77,000 examples and trained AI models from scratch. Now I help people achieve AI independence through local AI mastery.

Build Real AI on Your Machine

RAG, agents, NLP, vision, and MLOps - chapters across 25 courses that take you from reading about AI to building AI.

Want structured AI education?

25 courses, 519+ chapters, from $9. Understand AI, don't just use it.

AI Learning Path

Comments (0)

No comments yet. Be the first to share your thoughts!

Does DeepSeek Harness work without a DeepSeek API key?

Yes, by two separate routes. Ollama 0.32.11 (14 August 2026) added "ollama launch dsh", which starts the harness pointed at a local Ollama model. Independently, dsh has a documented custom-provider path: its Web UI has an "Add a custom provider" form for a self-hosted server, taking a provider ID, base URL, API protocol, credential and a model list. Ollama exposes an OpenAI-compatible endpoint at http://127.0.0.1:11434/v1, which is exactly the shape that form wants. Note the harness README itself does not document local endpoints — the provider guide does.

What version of dsh does this cover?

DeepSeek Harness v0.1.0-rc.7, published 17 August 2026, from the repository at deepseek-ai/deepseek-harness (default branch master). The project labels itself a developer preview and states in capitals that there will be compatibility-breaking changes. Treat every config snippet here as accurate for rc.7 and verify against the current provider guide before you spend an evening on it.

What hardware does dsh need?

The harness is a Node/TypeScript application and needs no GPU at all — it runs on any laptop. The engines field requires Node ^22.19.0 or >=24.0.0. All the hardware pressure is in whatever model you point it at. For an agent harness doing long tool-calling runs, a 24GB card holding a 27B-30B model at Q4_K_M (qwen3.8:27b is an 18GB download) is the comfortable target. 12-16GB works with a 9B-12B model and lower tool-call reliability.

Where does dsh store its config and API keys?

Settings live in $DSH_HOME/settings.yaml and credentials in $DSH_HOME/.credentials.yaml. The provider guide notes keys are write-only from the UI — after saving, the page receives a redacted descriptor, never the literal secret, and settings retain only a credential reference. For a local Ollama route, apiKeyEnv points at an environment variable rather than storing anything.

What are the most common errors when wiring dsh to a local model?

The provider guide names them. MISSING_CREDENTIAL means the referenced environment variable does not resolve — a profile that names a credential and finds nothing fails the request deliberately rather than falling through to an unrelated key. UNKNOWN_MODEL means the model id is not in the route's configured list, and a hand-declared route replaces the catalog rather than extending it, so every model you want must be listed. A 401 from "Fetch available models" is a key problem; model discovery calls the OpenAI-compatible GET /models endpoint, and you can enter models manually for endpoints that do not serve it.

Can the plugin ecosystem be trusted this early?

Treat it the way you would treat any five-day-old package ecosystem: assume nothing has been audited. dsh asks plugin authors to tag repositories with the "dsh-plugin" GitHub topic for discoverability, which is a naming convention, not a review process. The harness is genuinely plugin-everything — its own packages directory contains around fifty first-party plugins covering shell, filesystem, MCP, sandbox, subagent and more — so the first-party surface is large enough to be useful before you install anything third-party. Start there.

Ready to Go Beyond Tutorials?

20 structured courses with hands-on chapters - build RAG chatbots, AI agents, and ML pipelines on your own hardware.

Bonus kit

Ollama Docker Templates

10 one-command Docker stacks for local models — get your harness talking to a model in minutes. Included with paid plans, or free after subscribing to both Local AI Master and Little AI Master on YouTube.

See Plans →

Was this helpful?

📅 Published: August 30, 2026🔄 Last Updated: August 30, 2026✓ Manually Reviewed
LM

Written by the Local AI Master Team

The team behind Local AI Master

We build Local AI Master around practical, testable local AI workflows: model selection, hardware planning, RAG systems, agents, and MLOps. The goal is to turn scattered tutorials into a structured learning path you can follow on your own hardware.

✓ Local AI Curriculum✓ Hands-On Projects✓ Open Source Contributor
📚
Free · no account required

Grab the AI Starter Kit — career roadmap, cheat sheet, setup guide

No spam. Unsubscribe with one click.

🎯
AI Learning Path

Go from reading about AI to building with AI

20 structured courses. Hands-on projects. Runs on your machine. Start free.

Or own it for life — Lifetime $149 $599, pay once
Free Tools & Calculators