01
Agent Harness · 2026

Dulo AI Agent

Local-first AI agent runtime with a live control panel.

View CodeIn development
Dulo AI Agent screenshot
A five-step agent run traced live — each tool call with its arguments, latency and raw output, ending in the final answer
Tool registry showing 18 of 19 tools armed for the next run, each with its category and JSON schema
Model settings — primary model, a five-model fallback chain, temperature and the step ceiling

Overview

An AI agent harness built from scratch in TypeScript — a ReAct runtime with no agent framework and no vendor SDK, a risk classifier that judges every tool call from its arguments, and a gate that refuses to let the model declare its own work finished without evidence.

My role

Solo builder — agent runtime, tool sandbox, permission system, web panel, Go TUI

Highlights

  • 01

    127 tests at 88.7% line coverage over a 7,200-line runtime with six dependencies — no agent framework, no web framework, no LLM SDK

  • 02

    Tool calls are risk-classified from their arguments, not their names, so a build and a deploy are never treated the same — and an adversarial review of those rules found 8 real holes

  • 03

    The model cannot mark its own work done: a done-claim is schema-validated for quoted evidence, then re-checked by a separate read-only reviewer agent

Key features

  • Hand-written streaming LLM client with a 7-value failure taxonomy, dual stall/total watchdogs and jittered Retry-After backoff
  • Conversations as a branching message tree persisted to JSON Lines, with a seq-numbered event log a dropped client resumes without gaps
  • MCP client over stdio and Streamable HTTP, every MCP tool gated by default because it sits outside the sandbox
  • Agent roles and skills are Markdown files — deny-by-default tool maps, and skill bodies loaded on demand for a ~96% smaller prompt
  • Go terminal client on Bubbletea with more test code than production code, including four smoke tests driving a real program