GlowHarness
An agent harness we built from scratch: the loop that lets an AI use tools, the reader that repairs its broken tool calls, the gate that asks before anything changes, and a trace of every step. It runs in this page, and it even works with no AI model at all.
Give it a task
What it did, step by step
Its tools, and what each may do
These are the only things it can do. Reading is allowed. Anything that saves, deletes or downloads asks you first, and you can switch any tool off.
What it remembers
The notebook is its only memory. It is saved in this browser, on this device, and nowhere else.
Nothing saved yet. Try βRemember that my locker code is β¦β.
The numbers, measured
Nothing here is an estimate. Every figure is read from the benchmark file our scripts wrote, and the button at the bottom of this page reruns the engine's checks in your own browser.
The same tasks, with and without the harness
How this was measured, and what it does not show
Where it wins, where it loses
GlowHarness is not a rival to Claude Code, Codex or OpenCode at real work. Those drive your computer with the best models there are. This one goes after what they skip: nothing to install, no account, every step visible, and useful with no model at all.
| GlowHarness | Claude CodeAnthropic | Codex CLIOpenAI | OpenCodeopen source | |
|---|---|---|---|---|
| Real work on your computer | None. It cannot touch files, run programs or browse the web. | Edits files and runs shell commands | Edits files and runs shell commands | Edits files and runs shell commands |
| The model behind it | Small free models: rationed, slow at times and often wrong | Anthropic's best models | OpenAI's best models | Whichever model you connect |
| Adding your own tools | Only by editing the code | Yes, through MCP servers | Yes, through MCP servers | Yes, through MCP servers |
| Before the first task | Open this page | Install it, then sign in with a paid Claude plan or an API key | Install it, then sign in with a ChatGPT account or an API key | Install it. Free models are included, or bring your own keys |
| Works with no AI model | Yes, for plain requests about sums, dates, units, text and notes | No | No | No |
| Where it runs | A browser tab, phones included | Terminal, code editors, desktop app and web | Terminal, code editors and desktop app | Terminal, desktop app and web |
| Before a risky action | Asks. After reading untrusted text it asks again, even for tools you set to always allow | Permission modes, and an optional sandbox for shell commands | A sandbox from the operating system, with approval policies | Allow, ask or deny rules for each tool |
| Source code | Open. Plain JavaScript, no dependencies | Proprietary | Open source | Open source |
Sources for the other columns, found through a web search on β¦: Claude Code overview, Claude Code setup, Codex CLI docs, Codex repository, OpenCode docs. We did not benchmark those tools ourselves, so no number is claimed for them.
What it can't do
- It cannot touch your files, run programs or browse the web. Its tools are the ones listed above and nothing more. For real work on a computer, use Claude Code, Codex or OpenCode.
- With no model it only understands plain English requests about sums, dates, units, text and notes. For anything else it says it cannot answer, and it is right.
- The free models are small, rationed and sometimes wrong. A long task can stall while a provider makes it wait.
- With the free model, your task and every tool result are sent to a free AI provider. With no model, nothing leaves this page.
- The gate stops actions you did not approve. It cannot make a wrong answer right, and it cannot tell that a model has been fooled. It only makes sure a fooled model cannot save or delete without your yes.
- GlowSpark is a tool here, not the brain. It writes tales and cannot follow instructions.
Built from scratch
- The loop: ask the brain for one step, read it, run a tool, show the result, repeat. It stops at a step limit, a time limit, a repeated call, or when you press Stop.
- The reader: small models write tool calls badly. The reader repairs the common ways they break. When it cannot, it tells the model exactly what was wrong and asks again.
- The gate: reading is allowed, while saving, deleting and downloading ask first. Once a run has read untrusted text, every such action asks again. With nobody there to ask, the answer is no.
- The trace: every step is recorded with its time. Replay runs the engine again on the recording and checks that it makes the same decisions.
Use it in another Glow app
The engine and the tool kit are two plain script files with no dependencies. Any Glow page can load them, give the harness a brain, some tools and a way to ask the user, and run a task.
<script src="../shared/glow-harness.js"></script>
<script src="../shared/glow-harness-kit.js"></script>
const harness = GlowHarness.createHarness({
brain: GlowHarnessKit.rulesBrain(),
tools: GlowHarnessKit.createTools({ storage: localStorage }),
confirm: async (request) => "deny",
onEvent: (event) => console.log(event.type, event),
});
const result = await harness.run("Convert 26.2 miles to km.");
console.log(result.status, result.answer, result.trace);