“Can we make a wrapper?” → “offline.”

Those are the first and last questions in our own logs, 68 days apart. They are exact opposites, and the entire project is the distance between them.

It started by owning nothing

Day zero, the question was the most humble, most derivative thing you can ask: can we just wrap someone else’s model? Own nothing, rent everything, put a nice loop around a borrowed brain. That’s where almost every “AI product” begins and ends.

We didn’t set out with a manifesto. We set out with a chain of small, honest “can we?” questions — and every time the answer was yes, it earned the right to ask a harder one:

can we wrap a model → can we dogfood our own products in it → can it learn → it needs the web → can it see through my phone camera → can it play games → a design studio → memory and dreams → can it hack → MMM: vary the library not the model → can we mint our own model → mint() → AAAA → small talk → basic coding → offline.

Nobody drew that map at the start. You couldn’t have. It’s not a roadmap — it’s a project that stayed honest long enough to keep asking the next question.

The through-line was always ownership

Squint at that chain and it stops looking like a wander and starts looking like a spiral, turning one direction the whole time: inward, toward yours.

  • dogfood — own the use
  • can it learn — own the improvement
  • MMM — own the library
  • can we mint our own model — own the weights
  • offline — own the whole machine

Each step reclaimed one more piece from rented to owned. And today the spiral closed.

The honesty is load-bearing

The emblem of this whole thing sits right in the middle of the arc: AAAA.

When we first minted a from-scratch model, it babbled. Just AAAAAAAA. And instead of quietly deleting that and moving on, we put it in the log, with a date on it. Published the failure.

That single move — the willingness to write down the babble — is the same discipline that makes the finish line true instead of a pitch deck. All the way through:

  • The model abstains — “I don’t know, and I won’t guess” — instead of bluffing.
  • Generated code isn’t shown, it’s executed; you get the code and its real output, or an honest “couldn’t get it to run.”
  • The from-scratch talk model has visible wobbles (dogstabog), and we left them in, because they’re the fingerprint of a real model rather than a canned line.
  • When a from-scratch reader hit a comprehension wall and scored at chance, we didn’t bury it — we measured it against a baseline that also scored at chance, proved it was the task not the effort, and let that reshape the plan.

The wins are believable because the failures are in the same ledger.

What “owned” actually means now

Today the pipeline runs with the internet unplugged and Claude unplugged:

  • Conversation — from its own byte-level weights, trained from scratch, running on a CPU homelab.
  • Knowledge — retrieved from its own curated libraries, cited, in milliseconds.
  • Code — generated, then proven by execution in a hardened sandbox, or abstained.
  • Everything else — an honest “I don’t know.”

The precise milestone isn’t “owned and as good as the frontier.” It never was. It’s this:

Everything still rented is rented by choice — a quality upgrade you switch on when you’re online — not rented by necessity. Nothing load-bearing is borrowed anymore.

Rented-by-necessity → rented-by-choice is the entire definition of owning the machine. You can pull every external cord and it keeps working.

The pieces it took

Every green box below runs with the internet and Claude unplugged. The dashed boxes are the only rented parts left — and they swap in only when you’re online, as a quality upgrade, never as something the machine can’t run without.

flowchart TD Q([your request]) --> R{route} R -->|conversation| A["🗣️ owned talk weights
from-scratch, CPU"] R -->|known question| B["📚 owned library cards
retrieval, cited"] R -->|write code| C["⚙️ owned code patterns"] R -->|anything else| D["🔎 resolve loop"] C --> E["▶️ execute in node sandbox
owned, un-bribable grader"] D --> F["📖 extractive read + ✔ deterministic grounding
owned seams"] A --> Z B --> Z E --> Z F --> Z Z([answered — or an honest abstain
runs with net AND Claude unplugged]) subgraph UP["online only — rented by choice, never load-bearing"] direction LR G[/"comprehension read"/] H[/"grounding grader"/] I[/"novel code generation"/] end C -. novel .-> UP D -. online .-> UP classDef owned fill:#e7f0e3,stroke:#4a7c3f,color:#173a12; classDef rented fill:#f6e8d6,stroke:#b57a34,color:#5a3a12,stroke-dasharray:5 3; class Q,R,A,B,C,D,E,F,Z owned; class G,H,I rented;

Pull the two dashed boxes out entirely and the machine still answers — just dumber, and honest about it. That’s the whole milestone in one picture.

The honest catch, stated plainly

Offline, the quality drops by magnitudes. It’s solo-yolo: an extractive reader instead of deep comprehension, a deterministic grounding check instead of a frontier grader, patterns instead of open code generation. It abstains on most of the open world.

That’s not a disclaimer we’re hiding — it’s the thesis. Werbos was never trying to out-compute the giants. It’s for the person who wants a personal AI they actually own — one that runs on their hardware, holds their data, and never goes dark because a bill lapsed or a network dropped. The gap that’s left isn’t a wall. It’s coverage — how much the libraries hold — and coverage is a minting problem, not a research problem. Every library and pattern added converts one more slice of “abstain” into “answered, owned.”

68 days

From “can we wrap a model?” to “unplug everything and it still runs” — every abstain, every wall, and every dogstabog left in the public record.

That’s the whole point. Not the biggest model. A machine that’s actually yours.