Portfolio

Infrastructure I built and run. Each entry is written up with enough detail that a sceptical reader can check it, and the ones that failed are written up too.

Case studies

Open any row for the short version; the name links to the full write-up.

Agent infrastructure

terse 59% fewer tokens open

A proxy in front of MCP tool servers that losslessly compresses what they return. If a payload cannot be proven to reconstruct exactly, the original is forwarded untouched — lossless is the default, not a mode. Public, MIT, with a benchmark harness in the repo so you can measure the saving on your own tools.

terse9bd5ad3 · 161 files
src/terse/            the codec, proxy and policy
scripts/bench/        the TOON comparison in this page
tests/                73 test files
corpus/               pinned benchmark payloads
BENCHMARKS.md         every figure, dated
VERIFY.md             how to check the claims

Generated from the repository, not drawn. Browse it.

RunEcho ~12 ms · 0 tokens open

Stops an agent from writing a call to a function your repo does not have — before the write lands, not after the build fails. It runs as a hook inside the agent loop, checking every edit against the symbols the code actually declares: no model, no network, no build, and a clean check costs no context at all. How often it is wrong is measured against dated git history rather than against a user clicking approve: 15.3% false positive, 33.7% premature, 51.0% a real unbacked reference.

RunEchob117ffc · 332 files
cmd/                  runecho-guard, -ir, -mcp
internal/             the guard, the IR and the oracle — 168 files
bench/                TOKEN-COST.md, FPAUDIT.md, FINDINGS.md
plugins/              the agent-side hook packaging
scripts/              enrolment and release tooling
docs/                 architecture and the scope statement

Generated from the repository, not drawn. Browse it.

testgraph journeys, not tests open

Given a diff, it answers which user journeys the change could have broken, and in what order to test them. Every comparable tool answers in tests and needs coverage from a previous run; testgraph walks a static call graph backwards from the changed lines, so it answers on a repo that has never run its suite. Recall-first on purpose: it would rather flag a journey that turned out fine than quietly drop one that broke.

testgrapha4baa9a · 68 files
testgraph/            graph traversal, integrity guard, registry, CLI
harness/              accuracy, selectivity and seeded-mutation evals
hooks/                the pre-push hook that runs it on every push
journeys/             three hand-authored journey registries
maps/                 generated symbol to journey maps
skills/               the agent skill that reads a map pre-commit

Generated from the repository, not drawn. Browse it.

harness 4 mechanical checks private

A one-man agent harness in two halves: a deterministic verdict on a code change, then the runtime that drives its own loop. The gate runs four stateless checks — the test suite, a symbol contract, staged secrets, reachable vulnerabilities — and a pass leaves the branch for a human to commit. There is no auto-commit, and the language model is never the judge.

Measurement

modelbench cost per solved task private

A personal benchmark that mines real bug-fix commits out of my own repositories and replays them against cheap models, several times each, so the gap between two models can be called noise or called real. It reports cost per solved task instead of a leaderboard score — and it publishes its own corrections: four figures it had already stated turned out to be a defective task dragging three capability tiers down at once.

Lodestone 5 of 10 at real scale open

Local retrieval over years of my own notes. Semantic search beat keyword search at 1,271 documents and lost to it at 57,500; the write-up leads with that. Includes a pre-registered kill gate, negative controls, and pooled blind judging.

Data and operations

Frostline 50,083 well records open

Spatial models over the public Michigan well record. Depth is predictable from location — Moran’s I 0.393 — and yield is not, at 0.089. A promising target was cut once it proved to be ~96% a restatement of depth.

frostline8ef8a4d · 145 files
template/scripts/     the Track B pipeline — export, backtest,
                      calibration audit, brief generation
template/src/         the estimator surface itself
plans/                the planning record, including the
                      negative results that closed a line of work
docs/                 architecture
site/                 the public build

Generated from the repository. Two directories are withheld: the lead and outreach trees are live business data, not engineering.

Origin Sentinel staged self-heal open

Origin-health detection for tunnelled services — the failure a healthy edge hides. It shipped without write access and earned remediation only once its classifications held up in the field.

Multi-provider LLM gateway spend measured open

Routes one coding agent across several model providers by task, with secrets kept out of the environment and cost tracked against a budget rather than estimated after the fact.

Live sites

ericminish.com self-hosted open

This site. Static files, no build step, no third-party requests, rsynced into a container on my own hardware and served by Caddy behind a tunnel.

nmwelldrilling.com reference build open

A contractor-facing reference build, end to end. It is labelled a sample on the page itself — a demo that pretends to be a client is a lie with a deploy pipeline.

thefrostlineco.com business surface open

The business surface for managed intake work, deliberately kept off this site. Separate identity, separate stack, separate promises.

ttrpg.ericminish.com campaign workspace open

The Campaign Table — a tabletop RPG workspace built on extracted rulebook PDFs. FastAPI and a React SPA in one container on its own LXC, deployed by CI with a canary step and a rollback path, and two staging containers behind it so changes land somewhere else first.

Also running

Systems I run

Knowledge graph 442 MB image private

Durable memory my agents write into by proposal only, every fact reviewed before it lands. Moving embeddings to a sidecar took the production image from 2.14 GB to 442 MB; trimming the tool surface cut one response from 271 KB to 26 KB.

Competitive intelligence private client private

A weekly market-intelligence pipeline. The model may never author a source — every citation is backfilled from the collector that actually fetched it, and a test fails the build if a client name is ever hard-coded into the repository.

NFLsignal auction board private

Projection and auction-price engine for fantasy football. Players with no honest baseline to compare against return null rather than a fabricated number that looks authoritative.

miwine news ingestion private

Links winery news to a known entity list. A deterministic matcher proposes candidates and the language model may only confirm or reject them — it is never allowed to invent one.

Honeyslate task scheduler private

A small scheduling app — FastAPI, a Svelte front end and Postgres — running in its own container behind a tunnel. Built to be used rather than demonstrated.

Workflow state systems private work private

Internal operations work turning messy handoffs into explicit states and next actions. Most automation failures I have cleaned up were not automation failures — they were ambiguous state with a scheduler on top.

The environment they run in

Homelab 10 nodes open

Ten machines under Proxmox carrying real routing, monitoring and backups — where a claim about how something fails is something I have watched rather than read.

Browser terminal SSO · no open ports private

A persistent multiplexed shell published through an identity-proxied tunnel. Same live session from any device, nothing listening on the public internet, and no session survives without single sign-on. It is also why the agent work on this page is routine rather than theoretical — a long job keeps running when the laptop closes, and I can look in on it from anywhere without leaving anything listening.

The terminal

My whole working environment is a browser tab. A terminal multiplexer runs on a machine at home, fronted by a small web terminal, published through an identity-proxied tunnel — no port is open to the internet and no session starts without single sign-on. Opening the same address from a phone, a laptop or a borrowed machine attaches to the same live session, so work does not have a device attached to it.

Below is a model of that console on an ordinary day — a rail of agent sessions beside the one that is open. Hover it, or give it focus, to watch it fill in.

A model of the console, not a capture of a real session. The sessions, their output and the usage figures are illustrative; no host name, address, path or session content from the actual environment appears here. The surface is worth describing, its location is not.

Email is the best way to reach me — [email protected].