LocalHarness — AI agents on your own hardware
Agent harness and runtime built specifically for local models
install
uv tool install localharness
localharness init
localharness start Getting Started
fig. 01
~/localharness — real session · qwen3.6-27b on vLLM
the journey
- 1 model download any open-source model
- 2 server vLLM · Ollama · LM Studio · llama.cpp
- 3 three lines install · init · start
- 4 agent zero to agent
what init does
- probes for what's running checks localhost for a live server
- confirms it can act can trigger a command, not just chat
- sets the limit itself reads it straight off the server
Demo
fig. 02 — “Find the best open-weight coding model for an NVIDIA DGX Spark.”
~/localharness — the agent loop, out of the box
bus-events.jsonl — append-only 147 events
fenced off
- web search, built in hands it off to a helper walled off from the rest
- each helper is boxed in it starts clean, with only the tools its job needs
- a checker re-does the work it fetches the sources again from scratch
- the web is marked untrusted it can't run commands or change files
- safe by default if it's unsure, it blocks the action
Agents
fig. 03 — “List the subagents that ship built in…”
~/localharness — real session · fresh install
the roster
- 1 a bench of specialists the main agent calls them on its own — each with a clean slate
- 2 each fenced to its job only the tools its job needs — none can run commands or change files
- 3 yours is one YAML file name, role, tools, budget — one command creates it for you
Quality > Speed
fig. 04 — “How does Odysseus defeat the Cyclops?”
~/localharness — real session · Homer’s Odyssey
the whole Odyssey — far more text than the model can hold at once · answer checked against the book
read whole
- 1 the whole epic, one handle a context window is how much text the model can hold at once. This epic is a third again bigger.
- 2 every section actually read the harness cuts the text into sections and reads each one in a fresh window — that's the cascade.
- 3 one grounded answer each section's findings combine into one reply that quotes the text exactly.