← all posts

What I've Built With AI (And What It Built Back)

The projects exposed where agent experiments become production engineering.

Six months ago I started building an agent. That work produced several harnesses, a local model stack, a private assistant service, and this blog.

The model can generate an answer. Everything around it determines whether the work produced is worthwhile.

myPAL had to become a system

myPAL started as a Python agent loop. As the work became real, long-running tasks needed progress detection and tool use needed approval policies. Memory needed scope, sessions needed a durable record, and external integrations needed a stable boundary.

myPAL now does real work. It reads my vault, keeps track of ideas, even builds out entire training modules when I am learning something new. Somewhere in there I realized I could depend on it.

The harness became the experiment

LMC records each durable stage of a task: inputs, artifacts, judgments, forks, comparisons, and verification. Shell execution runs through policy, sandboxing, snapshots, and independent judgment. Its current work is procedural memory, teaching an agent how to use tools through external, inspectable procedures.

One Tool takes the boundary further. The model sees one execution interface: shell(command, cwd, env, timeout). Programs such as rg, git, and cargo remain capabilities of the environment. Learned procedures can improve how the agent uses them, but memory cannot invent a new tool or bypass shell policy.

The model can claim that it used a capability correctly, but the claim carries no authority on its own. The harness correlates it with retrieval and execution evidence, then an operator can attest the result before the procedure becomes trusted memory.

playground routes work across smaller models with episodic and semantic memory. Its next test is whether the system can find recurring failures, propose harness changes, and validate them against held-out tasks.

Local models changed the operating model

The stack has run through llama.cpp, llama-swap, Lemonade Gateway, SearXNG, Firecrawl, and Caddy on AMD Ryzen AI Max+ hardware.

Local inference moves the cost into hardware and operations. Model loading, routing, memory pressure, observability, and recovery become part of running the system. I prefer that trade because the infrastructure remains inspectable and another engineering task does not produce another API bill.

Sovereign Systems applies the stack outside my own workstation. It deploys private assistants on customer-owned hardware. The household prototype is Paloma, the assistant my wife uses, and two machines are already running in production. They have to survive ordinary use, unclear requests, model failures, upgrades, and recovery, exposing problems that local experiments miss.

What the work built back

I now start agent work by defining authority, evidence, memory, and recovery before choosing a model. A stronger model can improve the happy path. The harness still determines what happens when it is wrong.

The blog records that change. A failure that appears across projects becomes an article; a gap exposed by the writing becomes the next experiment.

The one-line version

The useful part of an agent is the system that turns model output into bounded, inspectable, recoverable work.