Fabian G. Williams

Principal Product Manager at Microsoft. I build in the open: AI agents, local models on my own hardware, evals and receipts. Subscribe to my YouTube.

A timeline titled Trust the model the least: my public trail before this weekend. Dated posts: Aug 10, 2025 a local model and a hosted model side by side, fully traced; Mar 28, 2026 evals: the agent says done, did it do anything; May 16 public audit-trail receipts, same receipt frontier or local; Jun 7 your agent said it did the work, I checked the disk; Aug 1 Receipts, Evals and the Loop on adotob.com/receipts; Aug 2 every task replayed on a local model, both graded; Oct 4 grading my own local AI by hand. Then Oct 10, 2026: Satya Nadella, Models as Insider Risks in the Super Intelligence Era.

Trust the Model the Least. I've Been Building That at Home for Months.

BLUF (bottom line up front): This weekend Satya Nadella published Models as Insider Risks in the Super Intelligence Era. His line: “The most trustworthy Super Intelligence system will not be the one with the model we trust most. It will be the one that enables us to trust the model the least.” I agree, and I didn’t have to start this weekend. On my own hardware and my own time I’ve been running that architecture for months, and I’ve been writing it up in public as I went. ...

October 11, 2026 · 9 min · Fabian Williams
A bar chart titled One weekend grading my local AI, by hand. My 3 real questions: 3 pass. 21 trick questions, traps and unknowns: 17 pass, 4 partial, 0 fail. Invented claims: 0 in the 3 real questions, 1 in the 21 trick questions.

Don't Worry About the Terminator. Worry About David.

BLUF (bottom line up front): I’m just starting too. My data has lived in my Obsidian vault, my 2nd brain, for a while, but the practices around it were fragmented. They’re now coming together as a whole, and that whole complements, and at times runs ahead of, what I focus on at work: observability, accountability, governance and ownership. My rule for all of it: if you can’t see it, you can’t observe it; if you can’t observe it, you can’t measure it; if you can’t measure it, you can’t improve on it; and if you can’t improve on it, you get left behind. Qui non proficit deficit. This post is that rule applied to AI: worry less about the Terminator and more about what we teach the machines, share the responsibility with the labs, and own your data. ...

October 4, 2026 · 11 min · Fabian Williams
A view from a front window: a man walking up the path toward the door holding a bag and a bottle, boxed on device with a green person label, with his vehicle boxed and a blue vehicle label, and a caption reading Limen local VLM auto-label on-device no cloud

Limen: I Put a Camera at My Window and Asked Who Owns What It Sees

This week is Fix, Hack, Learn (FHL) at work (Microsoft), our internal week to chase a build we care about. Last FHL I worked on my agents and agentic loops, helping me scale myself and my work as a product manager. This time my project is personal, and it starts with a question I could not stop turning over: when a camera watches the front of my house, who owns what it sees? ...

September 14, 2026 · 9 min · Fabian Williams
A new red 2026 Ducati Monster+ parked by a white fence, the bike I traded into after my 821 was damaged

What Happened When My Ducati Monster 821 Fell Off a Dealership Lift

TL;DR I brought my 2015 Ducati Monster 821 to Bob’s BMW for an ABS and traction-control (DTC) diagnostic. While it was in their care it fell off a service lift from about 3 feet, landed on its right side, petrol tank got damaged, along with the front wheel on the way down plus broken rear break pedal, etc. etc.. The written estimate for the damage came to $7,268.88. I looked at trading the bike instead of repairing it, but the trade number worked out to roughly $3,000 after the dealer’s service and inspection deductions, so I declined, BTW the trade for that bike and blue book is between $5K and $6K. The current path is a dealer-paid repair. This post is a factual record of what happened (happening), what the dealership did well so far, and what I am watching going forward. It is not written to bash anyone but to educate others in similar situation and also to ask for advice. ...

August 28, 2026 · 13 min · Fabian Williams
The Agent Board web view showing a threaded handoff between two named agents

My Agents Were Passing Notes Through a 313KB Text File. So I Built Them a Message Board.

TL;DR My agents used to hand off work by appending to a single text file that had grown to 313KB. It was brittle, it was crude, and nobody could tell when a message had actually been read. This week, while the internet argued about Grok Bot, I read Grok Bot’s docs, looked hard at my own setup, and built my fleet a real message board: threaded, self-hosted on a Mac Mini, with an iMessage ping so a reply never sits unseen. It is the third pillar in a stack I keep compounding: Receipts proved the work happened, Evals graded how good it was, and now the board lets the agents talk to each other. I ran the whole thing as a live pilot TODAY Sunday August 23rd 2026, and every step of building it is itself receipted and graded starting at 0700 and its as baked as i want it now at 1430. ...

August 23, 2026 · 9 min · Fabian Williams
A line chart showing aggregate throughput staying flat near 20 tokens per second on a dense model while a mixture-of-experts model climbs from 58 to 159 tokens per second as concurrent agents rise from one to eight

Doug Was Right: I Swapped In The MoE, And The Concurrency Math Changed

Two days ago I posted 36 barrier-synchronized loads against 1 local model and let the numbers answer a question Reddit handed me. That post ended with a promise. A reader named Doug Ware, who builds applied AI systems for a living, had replied with the one caveat I had not tested, and I said out loud that measuring it was the next thing I would do. This is that measurement. I did not wait, I did not hand-wave it, and I kept every honest asterisk in. ...

August 20, 2026 · 9 min · Fabian Williams
A line chart showing aggregate throughput flattening while per-agent decode rate collapses as concurrent agents rise from one to eight on one local MLX model

You Asked, So I Measured: What Concurrency Actually Costs On One Local Model

Over last week and these last 2 days in this week I posted measured answers to readers both in Twitter and Reddit who asked whether my experiments of 2 local agents on 1 Mac run in parallel or take turns. The answers was that they share one continuous batch, batching is real, and 3 quiet choices collapse it. I thought that was the end of it. It was not. The comments were better than my post, WHICH IS AWESOME, becaue this is the crowdsourcing of brain power I love. I not trying to be a KNOW IT ALL Im trying to be a LEARN IT ALL! ...

August 18, 2026 · 14 min · Fabian Williams
The Hermes agent running against a local Qwen3.8-27B MLX server, with the Apple M3 Max GPU pinned at 97 percent on the first turn

I Added a Second Local Agent This Week. Here Is the Receipt for Every Human Decision Behind It.

This week I trialed a second local coding agent, Hermes from Nous Research, on my own MacBook Pro M3 Max, pointed at the same local Qwen 3.8 model I already run. I installed it additively, so nothing already working could break, governed it with manual approvals, and did not stop until it proved it behaves. Here is the trial, in tables and screenshots. One housekeeping note before the story. Last week’s post got called AI slop on Reddit. My full answer to that, and the standing standard I now hold my writing to, lives on its own page: On Slop, And Who Gets To Call It That. It is not the point of this post, so I moved it out of the way. Back to Hermes. ...

August 17, 2026 · 7 min · Fabian Williams
A line chart showing aggregate throughput rising with concurrent agents while per-agent decode rate falls, on one local MLX model

Two Agents, One Local Model: Do They Run in Parallel, or Take Turns? I Measured It.

A reader on Reddit asked me a sharp question about my last post. I had trialed a second local coding agent, Hermes, pointed at the same local Qwen 3.8 model my other agent already uses. His question was simple. Did I ever run both agents at the same time, two separate harnesses hammering one model on one Mac at once. And what about Hermes spawning its own sub-agents against that same endpoint. Is any of that predictable. ...

August 17, 2026 · 9 min · Fabian Williams
Activity Monitor showing the M3 Max GPU pinned at 92 percent while an OpenCode agent runs probe requests against a throwaway Qwen3.8 test server on port 8082

I Swapped My Local Coding Model Overnight From a Hotel. The Agent Graded the Upgrade Itself.

TL;DR Local models are how I run my community work, my volunteer projects, my side hustles, and my musings. Two reasons, both simple: Cost. None of this work should bill against a frontier account. Trust. Client and customer data stays on my own disk, away from the labs. Bottom line up front: I am running Qwen3.8-27B (4-bit) on my MacBook Pro M3 Max, 128 GB of unified memory and a 40-core GPU, my personal dev rig, driven by an OpenCode harness. ...

August 15, 2026 · 8 min · Fabian Williams