Jonathan Mellette Contact

All work · since March 2026

Everything I’ve built, grouped by what it proves

Seventeen applications, 11 of them live, released or in regular use, plus the infrastructure they run on and a lab of short builds. The three I’d start with are on the home page.

Measured · how

At a glance

applications since March 2026 · 11 live, released or in regular use
17
public open-source repos (AGPL-3.0)
4
builds set live on Steam through a gated pipeline (FIRST LIGHT)
130
consecutive Sundays OpenOrder has built the projected deck
29
projects run under the agent governance framework
35
lines of first-party source · 207,367 non-blank · comments included
224,947

By what it proves

Sorted by the three things I do, plus a lab of short builds. Each card shows its status and the number that best proves it.

OpenEar, OpenOrder, OpenSign and OpenVoice are free AGPL-3.0 tools in the HonedEdge project, a nonprofit I’m standing up; their source is public on GitHub. All other source is private.

01 · Applied AI

Local AI on hardware you own

Models held to measurement, run where the data lives

What this proves: model selection on evidence (benchmarks, blind LLM-judge panels with hidden controls, blind listening tests, ablations) and AI systems built inside real cost, privacy, hardware and licence limits.

OpenEar listener view on a phone showing a passage in English
The same passage translated into Korean on the listener view
The same passage translated into Spanish on the listener view
Fig. 1The same passage in English, Korean and Spanish, produced from synthetic speech fed through the real pipeline on a machine on the local network.
Released · v0.12.0

OpenEar

AGPL-3.0 · public repo

Live captions from a soundboard feed to every phone on the local Wi-Fi, served by one ordinary Windows PC. Translation is an opt-in add-on with an NVIDIA card, on a model that covers about 200 languages.

languages the translation model covers, opt-in
~200
of benchmark audio
124.8 min
blind judgments, 0 judge chunks rejected
960
scorer self-test controls pass
21/21
Live

Q&AI

A live Star Trek guessing game whose hand-built Bayesian engine picks every question by expected information gain.

In simulation, the current engine identifies 368 of 368 gate-cohort characters in 15.6 questions on average (the live site still runs the June build); its ship script refuses to deploy below 98%.

  • TypeScript
  • React
  • Bayesian inference
Released · v1.1.0

OpenVoice

A self-hosted voice studio: speech from text, a voice designed from a written description, a clone from about 15 seconds, or a LoRA adapter fine-tuned from about 30 minutes of speech.

Two open-weight engines in separately locked environments behind one API. A working but little-used third engine was removed before release, because its weights licence reaches the audio it makes.

  • Python
  • PyTorch
  • LoRA
Working build · v0.8.0

OpenSong Self-hosted music generation

Songs with vocals and covers from a 3.6-billion-parameter open-weight model on your own GPU, plus printable scores from a separate transcription model.

Peak GPU memory on a 4:35 song cut from 21,337 to 8,804 MiB without forking upstream, on an RTX 3090. recorded 21 Sep 2026

  • Python
  • PyTorch
  • int8
Operations

Infrastructure

The machines the AI runs on: local models behind a fail-closed allowlist, an edge LLM on NVIDIA Jetson, and a backup that has left a success or failure record every night since July.

Outages on two always-on Macs traced to a 32-bit TCP clock in Apple’s own kernel source that stops advancing 49 days 17 hours after boot.

  • Ollama
  • Jetson
  • launchd

02 · Solutions architecture

Products and systems, shipped and in use

Nine codebases, end to end

What this proves: delivery from requirements gathered from real users, through architecture, to release engineering, and what changed after launch.

FIRST LIGHT, Memory 44: a maple leaf built from red, orange and gold bricks
Fig. 2Memory 44, “Fall Dance,” from the press kit: a maple-leaf board at the start of the round.
Demo live · launches Nov 10

FIRST LIGHT

Proprietary · Ephphatha Games

A commercial, story-driven brick-breaker for Steam, architected end to end and shipped through a gated release pipeline.

builds set live
130
boards machine-checked winnable
132/132
tests passing
327

Shipping and in use

In weekly use · v1.17.1

OpenOrder

One form in; a print-ready bulletin and a complete worship slide deck out, in each congregation’s own template, with scripture that works offline.

Built the projected deck for 29 consecutive Sundays: 31 decks across two congregations, 47–85 slides, median 59.

  • React
  • FastAPI
  • python-pptx
In use · v1.6.0 beta

OpenSign

Local-first signage for small congregations and nonprofits: one always-on box keeps every screen in a building in lockstep.

Screens flip together off one server clock, with no push channel. Verse text is generated from source because an AI-recalled first cut was wrong in 9 of 30.

  • FastAPI
  • React
In use · v1.8.0

Encounter

A two-screen combat tracker for in-person tabletop games: the DM’s window drives a live player display.

14 releases · 0 network calls in app code · 2 runtime dependencies, all pinned.

  • React 19
  • TypeScript
Live

OpenHouse

A 3D room planner in the browser: one millimetre data model, three cameras (CAD-style plan, orbit, first-person walk).

First-person walking shipped as the third camera in a commit that added 184 lines, with no change to the data model.

  • three.js
  • React
Live

Whisper’s Shout

A songbook on the web that opens, turns and sings like a real book. Its page engine became the base of a website engine for small congregations.

About 38 KB of code over the wire, 0 package dependencies, and a deploy that can’t serve a stale page.

  • HTML
  • CSS
  • JavaScript
Live demo

Good Soil UMC Church website engine

A website engine for small congregations: a book with tabs, every page a real address, and a help desk that answers from a list the church writes. Shown on a fictional church.

80 pages, 124 help answers, 0 language models, and a deploy that refuses unless the demo still says it’s fictional.

  • HTML
  • CSS
  • JavaScript
  • Python CGI

Paused or prototype: kept for the architecture

Pre-1.0 · paused

OpenSteward

A zero-server envelope budgeter: each device appends to its own log, and a Hybrid Logical Clock makes every machine fold those logs into the same books.

11 events from 3 simulated devices folded in 500 shuffled orders to identical state.

  • TypeScript
  • Tauri
  • event sourcing
Prototype · v0.1.2

h@ck3r

A 1992 PC simulated in the browser: BIOS, DOS-rules filesystem, a hidden second OS, an AES-256-GCM vault and an 808-line BASIC interpreter.

A fresh fuzz of all 13 programs found a crash an older test missed; it was fixed the same day, with regression tests that fail against the old code.

  • TypeScript
  • Canvas
  • Web Crypto

03 · Dev tooling & process

Making agent-built software safe to ship

Gates that stop, harnesses that can fail

What this proves: process engineering for agent-built code (release gates, evaluation harnesses, and the governance the AI coding agents work under).

ALLOW  git status
ALLOW  echo "… deploy.sh …"
       ↳ mentions a deploy; is not one
ALLOW  git commit
       ↳ clean change, repo assumed public
DENY   git add X && git commit
       ↳ stages and commits in one call;
         stage first, then commit
DENY   git add X && git push
       ↳ stages and pushes in one call
DENY   git push --tags
       ↳ bulk push refused
DENY   git push origin <archive ref>
       ↳ archive refs are refused
DENY   git commit -m "… <protected term> …"
       ↳ message names a protected term
Fig. 3Synthetic hook events against throwaway scratch repositories, 12 Oct 2026: 13 events, 8 refused and 5 allowed, every verdict as designed. Eight are re-rendered here; messages abridged.
In use

Agent governance framework

Private

A file-based governance framework for the AI coding agents I direct: one gated verb, autonomy that changes with operator presence, rulings you can look up by ID, and a hook that refuses private material before it reaches a public repo or a deploy.

projects governed
35
hook verdicts as designed
13/13
rulings with stable IDs
489

Most of it is advisory. The hook and the structure are what actually stop things.

Working build · v0.2.0

Replicator

An evaluation harness for a generative system: it measures a short recording into synth steps, then checks changes against a regression set accepted by ear, and a run fails if any accepted sound gets worse.

All 6 accepted sounds within 7.4×10−7 dB of four-week-old baselines; 0.05 dB worse fails the run.

  • TypeScript
  • Web Audio
  • Playwright
In use · v0.2.0

ClaudeBar

A native macOS menu-bar gauge for how full a Claude Code session’s context window is, read from the transcript instead of tallied.

334 lines of Swift, no third-party dependencies; running 16 days under launchd without exiting.

  • Swift
  • AppKit
  • launchd

What stops a ship

Release gates across nine codebases. There is no CI anywhere: every gate runs locally, in a build or ship script, a test runner, or a pre-execution hook. That is a deliberate choice for one operator, and the first thing I’d change on a team.
CodebaseWhat stops a shipHonest limit
FIRST LIGHT The Steam upload reads the defect tracker for that shipment and counts “could not tell” as blocked; the packaged macOS app must report its version at launch; two checks keep debug keys out of every build. A human can type an override; the test step would report a failing suite without stopping the build; Windows first launch is checked by hand.
Q&AI The ship script runs under set -euo pipefail: ≥98% clean wins on the 368-character cohort, then typecheck and build, an atomic asset swap, and an HTTP 200 check on the live site. It gates the curated cohort, not the full 983 (82.6% there), and uses perfect-answer simulation. A separate deploy verb skips the gate; it is meant for use right after a green run.
Agent framework A pre-execution hook refuses stage-and-commit in one call, bulk and archive pushes, and private material bound for a public repo or a deploy. It sees only the agent’s shell commands; most of the framework is advisory.
OpenOrder Build-mode typecheck and a spelling gate; a dirty tree is refused; SHA-256 is checked on every copy of the build. No automated tests.
OpenSign The build fails if the CSS minifier drops the standard backdrop-filter declaration; strict typecheck on every build. Lint runs on demand, not in the build; no tests.
Whisper’s Shout The deploy refuses unexpected files or a dirty tree, cache-stamps every asset URL (each one asserted), and checks 5 live URLs for 200. No test suite; the unpushed-commit guard never runs, because the repository has no git remote.
Pocket Puzzles The test runner refuses to trust Godot’s exit codes: typecheck first, a verdict line from every suite, no SCRIPT ERROR anywhere, and it tests its own gates first. Generated codeword grids are sampled (40 seeds), not proved for every grid.
Replicator The run fails if any ear-accepted sound gets 0.05 dB worse at any of 4 rungs, or goes missing. It runs when someone runs it; acceptance needs a human listener.
OpenSong A restart doesn’t report success until the health check answers with the version just shipped. No tests; ESLint (7 errors) isn’t part of the build.

How I build

Prove, measure, gate, control, ground, correct

Agents write code faster than anyone can review it line by line, so the method lives in six habits that make their output checkable. The headline claims on this site are checked by instruments I built for the job; the rest come from ordinary commands such as line counts, git history and HTTP checks.

01 · Prove it

Proofs, not spot checks

A reachability prover in FIRST LIGHT’s test suite checks that each of its 132 boards can be finished (132 of 132 today). CartoFancy’s FreeCell solver must agree with an exhaustive search on 240 small boards before it may tell a player they’ve lost.

FIRST LIGHT · the proverCartoFancy · the solver

02 · Measure it

Decide on the number that reaches the user

OpenEar’s speech model lost on word error rate (3.3% vs 2.9%), yet the benchmark confirmed the choice: 96% of its chunks ended a sentence against 48%, and translation waits for the end of a sentence. OpenSong’s memory bound was sized on a single-variable A/B rig, not an estimate.

OpenEar · the recogniserOpenSong · the A/B rig

03 · Gate it

Gates that stop

Q&AI’s ship script won’t deploy below 98% clean wins on its 368-character cohort (an ungated deploy verb is kept for use right after a green run); take out one 14-line fix and today’s engine fails that gate (96.7%). FIRST LIGHT’s Steam upload reads the defect tracker first and treats could-not-tell as blocked.

Q&AI · the deploy gateFIRST LIGHT · release gates

04 · Control it

Every check gets a case it must reject

OpenEar’s translation scorer passes 21 of 21 self-test controls, including a rubber-stamp judge it has to reject. The model proxy’s allowlist was verified with a real LAN host that had to get a 403. CartoFancy’s architecture test proves each layering rule against a planted violation.

OpenEar · 21/21 controlsCartoFancy · planted violationsProxy · the 403 control

05 · Ground it

Never let a model recite what it can extract

An AI-recalled first cut of OpenSign’s verses was wrong in 9 of 30, so verse text is now generated from the source and never typed. In Q&AI, AI subagents propose card data and deterministic scripts write it.

OpenSign · verses from sourceQ&AI · agents propose

06 · Correct it

Publish the correction

Re-deriving OpenEar’s benchmark found a slip in its own March write-up: 3.1% should have been 3.25%. OpenSong’s changelog put a memory bound’s cost at a few percent; the rig measured about 47% in that stage recorded 21 Sep 2026, and the next release said so.

OpenEar · the 3.25% correctionOpenSong · the 47% correction

Every claim, with its instrument and its limit →

Background

Engineer, then executive, then both

At Tivoli Systems (IBM) I was promoted to team lead, managing up to eight developers, technical writers and build engineers. At Interactive Intelligence I owned the install for every product and reported to the company president. At BroadJump, later Motive, I led test automation and was primary architect of an automated build-verification system that development and verification teams both relied on: continuous integration in substance, around 2001. At Sun Microsystems I built a test harness that cut build verification from several hours to seconds, and at BuildForge, a DevOps startup later acquired by IBM, I directed infrastructure development. I was also one of three founders of an early web company.

Then I became a pastor: twenty-one years of leading organizations, hiring and developing staff, owning operating budgets, overseeing a $500,000 capital project completed debt-free, and explaining difficult things every week to people who did not come pre-equipped. I earned a doctorate in that last part.

The thread through all of it: find the work a person is doing by hand, and make it stop being necessary. That was process automation in 2001. It’s AI-directed delivery now, with the governance that keeps it honest. The instrument changed; the job didn’t.