I wired DeepSeek Harness to my local AI
The 30-day sprint is over, so this is the new rhythm: a video when there is something worth showing you. This week there was. DeepSeek released Harness (dsh), an MIT-licensed agent harness where everything, and they mean everything, is a plugin: models, tools, skills, sessions, storage, even the UI. It blew past 175,000 GitHub stars in about a week (stars measure hype and free, not quality, but that climb is still remarkable), and the question I cared about was simple: can I wire it to the model already running on my desk and keep the whole loop local?
Short answer: yes, two different ways. This one is a setup guide, not a review. I have a single session of hands-on time, and the deep dive comes after real mileage.
What a harness is, and what DeepSeek shipped
An agent harness is the layer between a model and the world it acts in: the tools, the files, the control loop. It matters more than people think, because the same model behaves differently depending on the scaffolding around it. dsh's pitch is that every piece of that scaffolding is a swappable plugin, and a lot of it changes live: in the video I flip the UI theme by editing a YAML file and it takes effect without restarting anything. It ships four runtime modes (Standard, Code, Minimal, Creator), an append-only session log that captures every context injection, and a plain warning that this is a developer preview where things will change and break.
The install
I ran it from source: clone the repo, install, build, run, and it serves a web UI on localhost. A couple of minutes on my CachyOS machine. There is also a one-command npx route if you do not want the source. First launch asks for a DeepSeek API key; you can skip it entirely, this whole experiment runs without one.
Wire one: Ollama, the two-minute route
If you already run Ollama, dsh connects through a custom provider: base URL pointed at Ollama's port (127.0.0.1:11434/v1), OpenAI protocol, fetch models, create. Except my first session failed with "No API key for provider", and the next two attempts failed too, all on camera. The fix nobody tells you about: dsh requires an API key for every provider, even Ollama, which ignores the value completely. Type literally anything in the key field. Also: it wants model names, not model IDs, and the fetch-models button gets them right. Both errors and both fixes are in the video description for the next person who searches them.
Wire two: Unsloth, the tuned route
For benchmarking I serve Qwen 3.8-27B through Unsloth with the exact recipe I want: the Q4 variant, thinking on, reasoning effort pinned to medium (the winner from my thinking-dial test), and server-side tools disabled so the harness owns every tool call. One command starts the server, it prints an API key, and dsh connects the same custom-provider way. Now the same model is available on two wires and I can hot-swap between them from a dropdown, which is the "everything is a plugin" pitch demonstrated on my own desk.
The real job: one prompt, thirty minutes
I gave it one prompt: build a lightweight Todoist-style to-do app, HTML front end, SQLite behind it. Thirty minutes later, at 16 tokens per second on my 128GB mini PC, I had a working app on localhost: drag and drop, priorities, due dates, delete confirmations, data surviving refreshes. It built the back end, tested it end to end, found a deadlock bug in its own code, and fixed it before reporting done. Not a full Todoist clone, it says so itself in the wrap-up notes, but genuinely functional software from a local model while I browsed the plugin catalog.
The part that has me planning benchmarks is the trajectory view: every request, tool call, payload, result, and timing, downloadable as a zip. For someone who runs one-shot benchmarks on local models, that is the missing instrument.
Honest limits
This is a launch-week snapshot of a developer preview, not a verdict. The plugin ecosystem is exploding, which also means unvetted code from unknown repos running next to your local setup, the Wild West phase. Web search is not built in, you bring your own provider. And one hygiene note worth repeating: Unsloth mints a new API key every server launch and never retires the old ones. The key that appears on screen in this video was deactivated on camera, 401 and all; the command is in the video description.
My rig
Gear in this one
- GMKtec EVO-X2 AI Mini PC, Ryzen AI Max+ 395, 128GB (my exact build)
- GMKtec EVO-X3, the newer tower model with OCuLink for eGPUs
Some links on this page are affiliate links. If you buy through them I may earn a small commission at no extra cost to you. It helps support the work. As an Amazon Associate I earn from qualifying purchases.
Sources
- The repo and the preview warning: deepseek-ai/deepseek-harness on GitHub
- The announcement: DeepSeek Harness, everything is a plugin
- Why harnesses matter and the hot-swap contrast: The Register on dsh
- The four runtime modes: MarkTechPost's launch coverage
- The model file: Qwen 3.8-27B GGUF quants by Unsloth
- The series this builds on: the quant ladder · the thinking dial
I am a self-taught engineer figuring out tech: AI, Data Privacy, Linux, and everything in between. New videos ongoing.
