Harness

An assistant that does things, on a model that never leaves your Mac.

Harness reads and writes files, runs commands and searches the web on your own laptop, with a model running on its own GPU. No account, no API key, no cloud. Nothing you type is sent to anyone.

macOS, open source2026Python · llama.cpp · Metalharness.davidcvet.com

A conversation in Harness: the question, the model's collapsed thinking, the tool it ran and what came back, then the answer

How it works

That loop is the whole difference between a chatbot and an assistant.

It reads what the model writes, notices when it asks for a tool, runs the tool and hands the result back, until the model answers.

  1. 01

    You ask

    From the browser, the terminal or a phone. Every front end drives the same loop.

  2. 02

    The model streams

    A quantised model on llama.cpp and Metal, a token at a time.

  3. 03

    It asks for a tool

    List, read, write or edit files, search the web, fetch a page, run a command.

  4. 04

    You see what it will do

    Before a write: the path, whether it exists, and what would replace it.

The result goes back to the model, and round it goes.

What the model is thinking

You can read why it did what it did.

Reasoning streams into a panel of its own, then stays in the transcript, folded to a line.

Harness with the thinking panel expanded, showing the model's reasoning

Safety

Seven tools, and the rules around them.

Approvals can be relaxed, a category at a time. The refusals are not settings.

Writing or editing a file

You see the exact change first. The preview is all that stands between the model and your file.

Asks first

Anything chained, piped or backticked

The first word of a pipeline tells you nothing about the rest of it.

Always asks

Reading keys and credentials

Tool output is kept in the session file, so a key read once is a key on disk.

Always asks

Writing to system paths, ~/.ssh or your shell config

Breaking these breaks the machine, not your work. No approval can authorise it.

Refused

Scheduled runs

Nobody is awake at 3am to approve anything, so the write tools are switched off.

Switched off

From your phone

Set the laptop working while you are out.

Harness on a phone
  1. This Mac only

    bin/harness

    No token needed.

  2. Your Wi-Fi

    bin/harness --lan

    Needs the access token.

  3. Anywhere, over Tailscale

    bin/harness --remote

    Binds only the Tailscale address: the socket does not exist on your network or the internet.

Your model, your machine, your files.

Python 3.9 or later and nothing else, to run or to test. 129 tests, most of them on the guards.