<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Owners Not Renters]]></title><description><![CDATA[This is not AI news. Not research summaries. Not model hype cycles. Not a vendor ad. This is... honesty about tradeoffs. Tackling deeply technical questions. For builders who have to defend architecture decision Powered by Raffi Krikorian, CTO at Mozilla.]]></description><link>https://newsletter.ownersnotrenters.com</link><image><url>https://substackcdn.com/image/fetch/$s_!47w7!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaea0053-6bfe-4ed8-8508-244c9455df03_1280x1280.png</url><title>Owners Not Renters</title><link>https://newsletter.ownersnotrenters.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 02 Jun 2026 16:07:07 GMT</lastBuildDate><atom:link href="https://newsletter.ownersnotrenters.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Raffi Krikorian]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[ownersnotrenters@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[ownersnotrenters@substack.com]]></itunes:email><itunes:name><![CDATA[Raffi Krikorian]]></itunes:name></itunes:owner><itunes:author><![CDATA[Raffi Krikorian]]></itunes:author><googleplay:owner><![CDATA[ownersnotrenters@substack.com]]></googleplay:owner><googleplay:email><![CDATA[ownersnotrenters@substack.com]]></googleplay:email><googleplay:author><![CDATA[Raffi Krikorian]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The Rent Is Due]]></title><description><![CDATA[Frontier models got pricier. Open models got better.]]></description><link>https://newsletter.ownersnotrenters.com/p/the-rent-is-due</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/the-rent-is-due</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Fri, 29 May 2026 14:58:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mw6z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mw6z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mw6z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mw6z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mw6z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mw6z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mw6z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg" width="2000" height="1975" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1975,&quot;width&quot;:2000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:647206,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/199737267?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4019c32-da47-4ec8-81f5-df3c8c3748ee_2000x3000.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mw6z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mw6z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mw6z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mw6z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e2d9b31-c5cb-44cf-89e5-8f85784a79b6_2000x1975.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Zapier asked 542 US executives this month if they could swap AI vendors in under four weeks. <strong><a href="https://zapier.com/blog/ai-vendor-lock-in-survey/">89% said yes; 41% said two to five business days</a>.</strong> Then Zapier asked the ones who&#8217;d actually tried. <strong>58% said the migration failed outright or burned far more time and money than budgeted.</strong> Most executives think they can switch whenever. Most of the ones who&#8217;ve tried wish they&#8217;d moved sooner. <strong>Lock-in is real, it&#8217;s hard to undo, and the window to get open in is before lock-in arrives &#8212; not after.</strong></p><p>The pricing just moved the other way too. OpenAI rolled out GPT-5.5 at <a href="https://www.theregister.com/ai-and-ml/2026/05/08/gpt-55-may-burn-fewer-tokens-but-it-always-burns-more-cash/5237498">$5 per million input tokens and $30 per million output</a> &#8212; double what GPT-5.4 costs. (A million tokens is roughly an 800-page novel.) Anthropic <a href="https://www.theinformation.com/articles/anthropic-changes-pricing-bill-firms-based-ai-use-amid-compute-crunch">adjusted Claude Enterprise billing on April 15</a> so Opus 4.7&#8217;s higher inference costs flow through to customers; heavy users report 2-to-3&#215; bills. <a href="https://github.blog/news-insights/company-news/changes-to-github-copilot-individual-plans/">GitHub paused new Copilot signups</a>, capped existing plans, and removed Opus from the Pro tier. <strong>The loss-leader years end with a vendor sending you a bill. Lock-in is what makes you pay it.</strong> The cheapest moment to leave was before the bill arrived. The next-cheapest is the next thing you read in this letter.</p><p><strong>And just yesterday: <a href="https://www.anthropic.com/claude/opus">Opus 4.8</a>.</strong> Same price as 4.7, but the <a href="https://venturebeat.com/technology/anthropics-claude-opus-4-8-is-here-with-3x-cheaper-fast-mode-and-near-mythos-level-alignment">benchmarks moved</a>: <strong>69.2% on SWE-Bench Pro</strong>, up from 64.3% for 4.7 and 58.6% for GPT-5.5. A new Fast mode runs 2.5&#215; faster at one-third the cost. The early testimonials are raving: Opus 4.8 &#8220;proactively flags issues with the inputs and outputs of an analysis, something other models routinely missed and left to the users to catch.&#8221; I&#8217;m running it through my <a href="https://r.github.io/morph">Morph</a> and <a href="https://github.com/r/morph-tap">Tap</a> harnesses this weekend, against real session traces from my own coding work. Personal evals incoming. <strong>The frontier got better and cheaper on the same day the vendor bills doubled. That is the rent landscape in May 2026: moving in two directions at once.</strong></p><div><hr></div><p><strong>The cheapest seat in the AI house this month comes with the same lock-in problem, except the landlord is a thief.</strong> Chinese students are paying 3 to 4 percent of the list price for GPT and Claude via <a href="https://x.com/adxtyahq/status/2055723023970529751">resellers on the Chinese consumer marketplaces Xianyu and Taobao</a>. <strong>It isn&#8217;t arbitrage.</strong> Per <a href="https://www.scmp.com/tech/tech-trends/article/3353002/shadow-apis-how-chinese-developers-bypass-restrictions-access-claude-and-gemini">reporting on Oxford researcher Zilan Qian&#8217;s investigation</a>, it&#8217;s a gray-market supply chain. Upstream operators bulk-register Anthropic and OpenAI accounts using stolen credentials and free-credit farming. The &#8220;transfer stations&#8221; (&#20013;&#36716;&#31449;, in Chinese developer slang) route traffic through their own gateway servers, often with silent model substitution: <strong>you pay for Opus, you get whatever the reseller swaps in.</strong> Every prompt and output is <a href="https://www.tomshardware.com/tech-industry/artificial-intelligence/chinese-grey-market-sells-claude-api-access-at-90-percent-off-through-proxy-networks-that-harvest-user-data">logged and resold downstream as training data</a>. Anthropic <a href="https://www.reuters.com/world/china/anthropic-says-chinese-ai-firms-deepseek-moonshot-minimax-violated-terms-2026-02-23/">identified roughly </a><strong><a href="https://www.reuters.com/world/china/anthropic-says-chinese-ai-firms-deepseek-moonshot-minimax-violated-terms-2026-02-23/">24,000 fraudulent accounts</a></strong> in February tied to DeepSeek, Moonshot, and MiniMax &#8212; three of China&#8217;s biggest AI labs. The White House <a href="https://www.reuters.com/world/us/white-house-memo-flags-industrial-scale-chinese-ai-distillation-2026-04-23/">called it</a> <strong>industrial-scale distillation</strong>: training Chinese models on the outputs of American ones, at the cost of whoever&#8217;s typing. <strong>Every line of code routed through a cheap proxy is teaching the model that wants your day job.</strong> The good news: the legitimate cheap option also shipped this week. Apache 2.0, free weights, no resellers.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/the-rent-is-due/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/the-rent-is-due/comments"><span>Leave a comment</span></a></p><p><strong>Cohere released <a href="https://venturebeat.com/technology/cohere-cracks-lossless-quantization-and-native-citations-with-first-full-apache-2-0-licensed-open-model-command-a">Command A+ under Apache 2.0</a>, the most permissive open-source license there is.</strong> 218 billion parameters total, <a href="https://huggingface.co/CohereLabs/command-a-plus-05-2026-bf16">weights free on Hugging Face</a>. 128K context, 48 languages, vision and tool use unified. Runs on two H100s or a single Blackwell &#8212; the Nvidia datacenter chips that power most of the cloud&#8217;s AI. The benchmarks show gaps (it ranks below the frontier on the hardest agentic coding), but the license is the news. <strong>Take it. Run it. Modify it. Sell what you build on it.</strong> You don&#8217;t need permission. You don&#8217;t need a renewal. This is Cohere&#8217;s first frontier-class model that anyone can deploy commercially without asking. Co-founder Nick Frosst framed it as sovereign critical infrastructure: government and regulated industry running the model in their own data centers, fully cut off from the internet if needed.</p><p>The Register ran a <a href="https://www.theregister.com/off-prem/2026/05/11/sovereign-cloud-is-only-possible-if-youre-chinese-or-american-gartner/5237660">Gartner note</a> this month arguing &#8220;sovereign cloud is only possible if you&#8217;re Chinese or American.&#8221; But&#8230; a Canadian frontier-class model under Apache 2.0, running on customer infrastructure, is the rebuttal. <strong>If &#8220;evaluate an open model&#8221; has been on your roadmap for two years, this is the week you cross it off.</strong></p><p><strong><a href="https://huggingface.co/openai/privacy-filter">OpenAI&#8217;s Privacy Filter</a> is the smaller release with the sharper architectural message.</strong> A 1.5B-parameter Apache 2.0 model, 50M parameters active per token, that<a href="https://github.com/montevive/openai-privacy-filter"> runs entirely in a browser tab</a> on your own GPU. You can <strong>open your browser&#8217;s network tab and confirm nothing leaves the device.</strong> This is the exact opposite of <a href="https://newsletter.ownersnotrenters.com/p/privacy-laundering">the pattern I called local-washing</a> &#8212; a <a href="https://decrypt.co/367060/chrome-quietly-installing-4gb-ai-model-computer">4GB Gemini Nano model that Chrome silently writes to disk</a> while the &#8220;AI Mode&#8221; pill still routes every query to Google&#8217;s cloud. <strong>Local model present, the user-visible feature still rented.</strong> Privacy Filter inverts that: mask names, addresses, emails, account numbers, and secrets on your device first, then send the cleaned-up prompt to whatever frontier model you want. <strong>The architecture matches the claim.</strong> There is no longer an excuse to send raw PII to a cloud model. Bolt it in front of your existing stack this sprint &#8212; 1.5 billion parameters, Apache 2.0, an afternoon of work.</p><div><hr></div><p><strong>Two pieces of the local stack worth your weekend.</strong> Ahmad Osman&#8217;s <a href="https://x.com/TheAhmadOsman/status/2057183854444843202">&#8220;Inference Engines for LLMs &amp; Local AI Hardware (2026 Edition)&#8221;</a> is what local inference reads like when an infra engineer writes it for other infra engineers. <strong>The framing is right: you don&#8217;t pick the engine first. You pick the hardware, the workload, and how many people will use it at once.</strong> Generating text one token at a time is bottlenecked by memory speed, not raw compute &#8212; which is why an M4 Max at 546 GB/s of memory bandwidth competes with much pricier datacenter GPUs on single-user inference, and why the right engine (llama.cpp, vLLM, SGLang, TensorRT-LLM, for the people taking notes) falls out of that one constraint.</p><p>On the consumer end, <a href="https://atomic.chat/">Atomic Chat</a> ships Qwen3.6-35B locally on M-series Macs at <strong><a href="https://www.buildfastwithai.com/blogs/qwen3-6-35b-a3b-review">60+ tokens per second</a></strong> &#8212; output streaming faster than you can read it, on battery, from 22 GB of model weights sitting in your laptop&#8217;s memory. Google&#8217;s <a href="https://github.com/ggml-org/llama.cpp/discussions/20969">TurboQuant</a> squeezes the model&#8217;s working memory down to 3.5 bits per number with no measurable quality loss, even at 65,000 tokens of context. A Claude API call streams back at about the same 60 tokens per second. <strong>Same speed. No meter, no outbound packets.</strong> I built a working Canvas physics game in a weekend &#8212; parallax scrolling, collision detection, no API key. Six months ago that was a cloud workload. Now it runs on your laptop, at cloud speeds, for $0. <strong>The cloud isn&#8217;t where AI lives anymore. It&#8217;s just where some of it happens to live.</strong></p><div><hr></div><p><strong>Forty authors. Forty institutions. One vocabulary.</strong> A survey titled <a href="https://arxiv.org/abs/2605.18747">&#8220;Code as Agent Harness&#8221;</a> landed this month. The thesis has been forming for months: <strong>code stopped being just what AI agents write and became how they work</strong> &#8212; the substrate the agent operates inside, not the output it produces. The four properties the authors name &#8212; <strong>executable, inspectable, stateful, governed</strong> &#8212; are the language auditors and security officers will use in 2027 procurement. Section 5.2&#8217;s seven open problems are functionally the procurement checklist. <strong>If you&#8217;re building an agent and you can&#8217;t say yes to all four, you don&#8217;t have a product. You have a demo.</strong></p><p>A companion paper landed the week before. <a href="https://arxiv.org/abs/2605.12894">Chopra et al. on &#8220;Beyond Cooperative Simulators&#8221;</a> argues that the AI-generated stand-in users most labs test their agents against inherit their base model&#8217;s behavior &#8212; patient, cooperative, willing to clarify &#8212; and so agent evals systematically overstate real-world performance. <strong>Real users are unclear, impatient, and reluctant to repeat themselves.</strong> The Opus 4.8 release that just happened &#8212; the one that &#8220;flags issues with the inputs and outputs&#8221; &#8212; is the first model that the labs have shipped that&#8217;s been trained against exactly this gap. <strong>The papers describe the problem. The models are starting to fix it. The harness is where the fix lives.</strong> Run your stack against the four properties this week. Anything that fails is what your 2027 procurement gets stuck on. Fix it now while it&#8217;s still cheap to fix.</p><div><hr></div><p><strong>The wrong reflex this month came from a place I love.</strong> NHS England ordered tech leadership to <a href="https://www.theregister.com/2026/05/05/nhs_to_closesource_hundreds_of_repos/">set every public repository to private by May 11</a>. The stated reason is that Anthropic&#8217;s Mythos &#8212; a new model trained to find software vulnerabilities &#8212; is good at finding them in code it can read, so the code should not be readable. <strong>The unstated reason is that someone in senior leadership panicked.</strong></p><p>The repos contain datasets, internal tools, front-end resources, and most of the work the team that shipped the NHS COVID-19 app produced &#8212; <strong><a href="https://shkspr.mobi/blog/2026/05/nhs-goes-to-war-against-open-source/">code that taxpayers paid for twice over</a></strong>, and that other public-health bodies were reading, forking, and reusing. <strong>Roughly 200 repositories went private</strong> before the backlash arrived. The code is also already on the open internet &#8212; on archived mirrors, on forks, and in every major dataset that scraped GitHub between 2021 and last week. <strong>Closing the repos doesn&#8217;t unship the bytes.</strong> It makes the maintained version harder to find. It tells the engineers who built the app on principle that their employer has stopped believing the principle. <a href="https://www.nytimes.com/2026/04/15/opinion/mythos-open-souce-internet.html">I argued in the Times</a> earlier this year that the world&#8217;s most valuable software infrastructure is maintained by people working for free, while the companies building fortunes on top of it never paid for the upkeep. <strong>The NHS was one of the rare institutions actually funding that maintenance, on principle. Now it isn&#8217;t.</strong> And it gives every other public-sector CIO permission to make the same call. <a href="https://www.gov.uk/government/publications/open-source-guidance/security-considerations-when-coding-in-the-open">UK GDS published guidance on May 14 contradicting the NHS position directly</a>: <strong>&#8220;You should never close an open repository.&#8221;</strong> If your security depends on attackers not reading the code, <strong>you never had security. You had time. And the clock just sped up.</strong></p><p>If you&#8217;re the engineer reading this at a public-sector or regulated employer: <strong>the fix is the opposite of the reflex. Open more. Document more. Fund the maintenance.</strong> The GDS guidance is the playbook. The Cohere release proves the model exists. The only thing missing is the executive who picks up the phone. <strong>Be the engineer who hands them the number.</strong></p><p><a href="https://p3institute.substack.com/p/from-open-source-software-to-open">Bill Gurley&#8217;s updated essay</a> at P3 Institute is the strategic frame that makes this look even worse. Open source as a corporate weapon against monopoly, traced from GNU and Linux through Android, Kubernetes, and Llama. The line that lodged: <strong>Chinese open models may become the global default by 2030.</strong> NHS England picked this month to opt out of the only stack that has a non-Chinese, non-American sovereign answer. Cohere just shipped the model that proves the answer exists.</p><div><hr></div><p><strong>Three essays I&#8217;ve been turning over, all landing on the same point: in an AI world, what something </strong><em><strong>is</strong></em><strong> matters as much as what it </strong><em><strong>does</strong></em><strong>.</strong></p><p>Alex Imas&#8217;s <a href="https://aleximas.substack.com/p/what-will-be-scarce">&#8220;What Will Be Scarce?&#8221;</a> sets the frame. <strong>The more we automate, the more we&#8217;ll pay for what only people can do.</strong> Two reasons. We shift our spending as we get richer &#8212; toward things machines can&#8217;t make. And we pay extra when we know a person made it. His proof, from experiments with Graelin Mandel: buyers paid a <strong>44%</strong> premium for art they knew was made by a human, and only <strong>21%</strong> when they knew AI was involved. The provenance signal does work the functional output cannot reach. <strong>Twenty-three points of margin live on a checkbox that says &#8220;made by a person.&#8221;</strong></p><p>Yejin Choi and the <a href="https://reports.weforum.org/docs/WEF_From_Paradox_to_Progress_A_Net_Positive_AI_Energy_Framework_2025.pdf">WEF report on smaller models</a> makes the same argument one layer down &#8212; about the models themselves. Boutique LMs trained through interaction, reflecting the values of who built them, vs. the English-dominant monoculture of the frontier labs. Imas&#8217;s premium for &#8220;made by a person&#8221; is one form of provenance. Choi&#8217;s case for &#8220;made by us, for us&#8221; is another. <strong>Different scales, same point: the model that knows where it came from is worth more than the model that doesn&#8217;t.</strong></p><p>Alondra Nelson&#8217;s <a href="https://www.science.org/doi/10.1126/science.aeh7153">recent piece in </a><em><a href="https://www.science.org/doi/10.1126/science.aeh7153">Science</a></em> is the governance answer to the same question. Her argument: <strong>AI infrastructure governed by the publics it affects is what lasts. Legitimacy is durability.</strong> I served with Alondra on the Mozilla board before taking my current job there, and her work has been the cleanest articulation of how democratic legitimacy attaches to AI infrastructure. <strong>Imas says provenance is worth money. Choi says it&#8217;s worth building a model around. Nelson says it&#8217;s worth governing for.</strong></p><p>If you&#8217;re building AI-augmented anything, those are the three signals that matter now: <strong>who made it, who it speaks for, who governs it.</strong> <strong>The capability is the floor. The provenance is the product.</strong></p><div><hr></div><p>The week&#8217;s best thing on the internet was not technical. <a href="https://www.reddit.com/r/ClaudeAI/comments/1tdyrdv/claudes_first_day_at_dunder_mifflin/">&#8220;Claude&#8217;s First Day at Dunder Mifflin&#8221;</a> on r/ClaudeAI. <strong>I won&#8217;t spoil it.</strong> Whatever you think about AI and entertainment, that one earned the laugh.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/the-rent-is-due?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/the-rent-is-due?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Chat Agent in Your Closet]]></title><description><![CDATA[Every doc you write, every cart you fill. Watching. For you.]]></description><link>https://newsletter.ownersnotrenters.com/p/the-chat-agent-in-your-closet</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/the-chat-agent-in-your-closet</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Thu, 28 May 2026 13:23:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Navr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Navr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Navr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Navr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Navr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Navr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Navr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1760977,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/199477960?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Navr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Navr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Navr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Navr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F312f8776-212a-4de6-9d4e-a6f0f0c7f9a0_5757x3838.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>My web traffic this year is down. I&#8217;ve been tracking it because I&#8217;m trying to figure out how my own usage is shifting, and the pattern is clearer than I expected: housekeeping has fallen off a cliff. Tracking recipes, building a grocery list, calendaring &#8212; Hermes does all of that now. Education and entertainment have expanded into the space it left, so I&#8217;m probably online longer than I was a year ago. I&#8217;m just not opening a browser to do things on the open web anymore. I&#8217;m opening it to talk to a chat agent.</p><p>And as of this month, the chat agent is mine.</p><p>Last month, I walked you through setting up a private morning briefing &#8212; the agent doing things while you slept. This month is the other end of the same problem: what changes when you sit down at a keyboard and the chat blinking back at you is something you own.</p><p>I have a tendency to build things when I&#8217;m curious, so I happened to have an old Bitcoin mining rig from a past wave of curiosity lying around. What&#8217;s on the shelf in my closet now is an open-frame box of 80/20 aluminum extrusion, three graphics cards bolted to a metal skeleton, fans blasting, sitting next to the router like a workshop project I forgot to finish. Running a model on those GPUs all month is cheaper than the equivalent OpenRouter calls. The rig is mining tokens again, just a different kind. And they&#8217;re mine.</p><h4>BYO GPU</h4><p>If you don&#8217;t have a GPU lying around from a past life, go with an Intel NUC or a Mac mini. The NUC is the cheaper path &#8212; used, around $300, runs Ubuntu out of the gate, fits in a shoebox. The Mac mini costs more, and you&#8217;ll pay extra if you want your agent inside the Apple ecosystem: texting you on iMessage, pulling tracks from your Apple Music library, reaching into Photos and Contacts. The only legitimate way through Apple&#8217;s wall is a real Apple machine sitting on your network, running the open-source iMessage bridge BlueBubbles and whatever other shims you need. (I actually have a Mac mini on my network too, sitting next to my no-case monster, just so Hermes can use it for this stuff.)</p><p>Neither the NUC nor the Mac mini will run a serious model. Without a GPU, you don&#8217;t get local inference &#8212; at least not at a speed that makes the agent feel like it&#8217;s doing something. So you have to point at something else. Two paths. The easier: point at Anthropic or OpenAI directly, get the agent up tonight, accept that you&#8217;re renting the most important layer of the stack from the company whose moat depends on you renting it. The cleaner: OpenRouter pointed at an open-weight model &#8212; Qwen, Gemma, DeepSeek, take your pick. The model is open. The metal isn&#8217;t. There&#8217;s no TEE between your prompts and the operator, which means OpenRouter sees what you ask, the model provider sees what you ask. Maybe better than renting both layers from a frontier lab. Maybe worse than running it in your closet. An honest waypoint.</p><p>The call I&#8217;d make today, if you don&#8217;t have a GPU? OpenRouter, Qwen 235B, eat the caveat. The model is the easy part to swap. The harness &#8212; the agent in the loop, the memory, the wires into your life &#8212; is what becomes yours.</p><h4>Now, make the agent yours. Here&#8217;s how.</h4><p>Everything that makes the agent yours lives in <code>~/.hermes</code> &#8212; config, <code>.env</code>: memory, skills, cron, the whole tree. <code>rsync -avz</code> it to the same path on the server. Save the command; you&#8217;ll re-run it any time you teach the laptop something you want the server to know. The container that runs Hermes is disposable. The state directory is not.</p><p>You need to make two edits on the server before you start. In <code>~/.hermes/config.yaml</code>, change <code>terminal.backend</code> to <code>local</code> &#8212; local to the container you&#8217;re about to run, not to the host. Then swap the model endpoint: the <code>127.0.0.1:8000</code> from your laptop obviously doesn&#8217;t exist on the server. If you&#8217;re going the OpenRouter route, drop your key into <code>~/.hermes/.env</code>, re-run hermes model, pick OpenRouter from the menu, then pick a model.</p><p>Next, a three-line <code>docker-compose.yml</code>. The image, a restart policy so the agent comes back after reboots, one bind mount from <code>~/.hermes</code> on the host to <code>/opt/data</code> inside the container.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;0e4b130b-f555-41a4-bd9b-6e1555606b50&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">services: 
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes
    restart: unless-stopped
    command: gateway run
    volumes:
      - /home/raffi/.hermes:/opt/data</code></pre></div><p>That bind mount is the only door between host and container. Tutorials all over the internet will tell you to mount the host&#8217;s Docker socket inside, too, so the agent can run Docker commands &#8220;just like on the Mac.&#8221; Don&#8217;t. A process in one container with the host socket mounted can inspect, start, stop, and remove every other container on the box. That isn&#8217;t a sandbox. It&#8217;s a key to the building.</p><p>The bind mount keeps the agent inside its own container: It can read and write only what&#8217;s in <code>/opt/data</code>, and nothing else on the host. That&#8217;s a real boundary, and a useful one. It is not a force field. The moment you put a Google OAuth token, an OpenRouter key, or a Whole Foods session cookie inside that directory, you&#8217;ve handed the agent the keys to systems that don&#8217;t live in your closet. The box is sandboxed; the things it reaches aren&#8217;t. Every new connection you wire up is a new attack surface, so treat it like one.</p><p><code>docker compose up -d</code>, then <code>docker compose logs -f</code>. The logs will sit at Fixing ownership of <code>/opt/data</code> to hermes for what feels like a long time. You&#8217;re not stuck. The directory you rsynced is large. Walk away.</p><p>Mine didn&#8217;t reply on the first try. The logs reported &#8220;no user allowlists configured,&#8221; which I was sure was wrong because I had set both. Half an hour later, I figured out the bind-mount path on the host wasn&#8217;t quite the path I thought it was, and the <code>.env </code>that Hermes was reading inside the container was empty. The lesson generalizes: in a bind-mounted setup, the truth is what the container sees, not what&#8217;s on the host.</p><p><code>docker compose exec hermes cat /opt/data/.env</code></p><p>I fixed the mount. The bot replied. The next morning, the briefing arrived with my laptop closed.</p><p>I drive the agent through <a href="https://openwebui.com/">OpenWebUI</a> &#8212; an open-source chat frontend, a ChatGPT-shaped tab pointed at whatever model server you tell it to, including your own. It&#8217;s an actual workspace. You can paste a draft in, share a screenshot, sit with it for half an hour while you work through an argument. OpenWebUI runs as a second service in the same docker-compose. Both containers sit on a private bridge network &#8212; they can talk to each other and to nothing else on the host. The OpenWebUI port binds only to <code>127.0.0.1</code>, which means the UI is reachable from the box itself and from nowhere else without a tunnel.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;80a6cf7e-6109-4498-9d70-bc9d64b6d354&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">services: 
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes
    restart: unless-stopped
    command: gateway run
    volumes:
      - /home/raffi/.hermes:/opt/data
    networks:
      - internal
  openwebui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: openwebui
    restart: unless-stopped
    ports:
      - &#8220;127.0.0.1:3000:8080&#8221;
    volumes:
      - openwebui-data:/app/backend/data
    networks:
      - internal
networks:
  internal:
    driver: bridge
volumes:
  openwebui-data:</code></pre></div><p>I&#8217;d budgeted a weekend for the OpenWebUI side. It took 20 minutes.</p><h4>Three things a rented chat agent will never &#8212; and should never &#8212; do for you</h4><p>My agent does three things in the closet (and more!), all of them the kind of thing a rented chat agent will never do for you, because doing them would require access you shouldn&#8217;t hand over. And none of them is about having a smarter model. They&#8217;re all harness &#8212; the agent wired into the rest of my life, with the wires ending inside my house instead of someone else&#8217;s data center.</p><p>When I chat with it, it remembers. The last time I made strawberry shortcake I told Hermes the America&#8217;s Test Kitchen version was mine, and now I can type <em>@hermes, can you add everything I need for strawberry shortcake to my shopping cart?</em> and the Whole Foods cart fills with what the recipe calls for. The browser tab I used to keep open for grocery delivery is closed.</p><p>(I keep meaning to rename it. I&#8217;ve been thinking <em>Zora</em>, after the ship&#8217;s computer on <em>Star Trek: Discovery</em>. Haven&#8217;t pulled the trigger.)</p><p>I&#8217;ve given the agent access to every Google Doc I&#8217;ve written. Drafts I forgot I started, meeting notes from 2024, the half-finished argument I gave up on in March &#8212; all in reach, just by asking. Last week I was three paragraphs into a piece and asked what I&#8217;d written on the same topic before; it surfaced a draft from spring I&#8217;d forgotten existed. I revived the thesis instead of re-deriving it.</p><p>It writes me a weekly self-report. Every Sunday morning, a digest of what I actually touched: every doc I edited, every long email thread, every commit. Not the calendar version of my week &#8212; the actual one. The first report landed in my inbox a month ago and I sat with it for ten minutes. I had forgotten half of it.</p><p>Almost all of this could be done in ChatGPT. The connectors are there: ChatGPT can talk to Google Drive, Gmail, your calendar. You just have to plug those accounts into your ChatGPT account and let OpenAI see them.</p><p>Absolutely not.</p><p>It isn&#8217;t that a rented chat agent can&#8217;t do these things. It&#8217;s that doing them requires giving someone else read access to your work, your inbox, your grocery list, your meeting notes &#8212; and trusting their terms of service this quarter, and next quarter, and the one after the IPO. The terms say what they say. The next major training run will use what it uses. You will not be told either way.</p><p>The agent in my closet has the same access. The difference is the access goes from one part of my house to another. Nothing leaves.</p><p>Two years ago, AI meant a tab in somebody else&#8217;s browser. Today, mine lives on a shelf next to the router. It doesn&#8217;t send a token of any of it anywhere I don&#8217;t pay the power bill for.</p><p>The rented-vs.-owned gap isn&#8217;t closing. It&#8217;s widening at the integration layer &#8212; not the raw model. The moat isn&#8217;t the weights anymore; it&#8217;s the access to your memory, your stuff, and your right to opt out of training on either. You can&#8217;t buy a pre-assembled version of this setup yet. Somebody will build it.</p><p>For me, the whole stack is in the closet. For most of you, the GPU is the last piece. Let&#8217;s get building.</p><p>After that, two directions I've been kicking around. One: running this whole setup on a cloud container instead of your own hardware, for the closet-less. Two: wiring multiple Hermes agents together and giving them different jobs &#8212; either the obvious next move or too nerdy to publish, depending on who's asking. Tell me which. Or both.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/the-chat-agent-in-your-closet/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/the-chat-agent-in-your-closet/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Privacy Laundering]]></title><description><![CDATA[Chrome&#8217;s not-so-model AI behavior.]]></description><link>https://newsletter.ownersnotrenters.com/p/privacy-laundering</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/privacy-laundering</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Thu, 21 May 2026 18:13:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-Ktf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Ktf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Ktf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 424w, https://substackcdn.com/image/fetch/$s_!-Ktf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 848w, https://substackcdn.com/image/fetch/$s_!-Ktf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 1272w, https://substackcdn.com/image/fetch/$s_!-Ktf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Ktf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png" width="1289" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1289,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2496146,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/198726844?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F608f1a05-aa42-4111-968f-6f57efb9335d_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-Ktf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 424w, https://substackcdn.com/image/fetch/$s_!-Ktf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 848w, https://substackcdn.com/image/fetch/$s_!-Ktf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 1272w, https://substackcdn.com/image/fetch/$s_!-Ktf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd76c56f0-e52f-4837-8552-df92b4a93092_1289x835.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Open<code> ~/Library/Application Support/Google/Chrome/OptGuideOnDeviceModel/</code> or the equivalent path on your OS. You&#8217;ll find a roughly 4GB language model, a.k.a. Gemini Nano, called <code>weights.bin</code>. Delete it while Chrome&#8217;s AI features are still on and Chrome puts it back by morning. Many of Chrome&#8217;s billions of users have it, running at their own disk and electricity cost. Not a single one asked for it.</p><p>If you&#8217;ve followed the coverage since last week, you know the reaction: outrage that nobody asked permission to install an on-device LLM. It felt familiar. Apple did this in 2014, when they force-pushed U2&#8217;s <em>Songs of Innocence</em> to half a billion iTunes accounts, prompting <a href="https://www.nme.com/news/music/u2-108-1231994">Tyler the Creator to tweet GET OFF MY F*CKING PHONE</a>. Six days later, Apple <a href="https://www.theverge.com/2014/9/15/6153165/apple-u2-songs-of-innocence-removal-tool">shipped a one-click remove button</a>. Twelve years on, the file is 40 times bigger, the artist is Gemini Nano, and the remove button never came.</p><p><a href="https://www.thatprivacyguy.com/blog/chrome-silent-nano-install/">Privacy researcher Alexander Hanff caught the install</a> by running a script that visited a hundred pages on a fresh Chrome profile while watching the kernel filesystem logs. No human touched the machine; the file appeared on its own. <a href="https://www.snopes.com/fact-check/google-chrome-ai-installed-computer/">Snopes reproduced the behavior</a> on three of six employee laptops. A 2024 Hugging Face upload showed that an older weights.bin, extracted from Chrome Canary 128, was runnable through MediaPipe, Google&#8217;s on-device ML runtime. At least one Chrome-delivered model has been verified, on a stranger&#8217;s machine, as real and locally usable. The model is here.</p><p>The local model powers Chrome&#8217;s <a href="https://developer.chrome.com/docs/ai/built-in-apis">built-in AI APIs</a>: Summarizer, Translator, and Language Detector are stable from Chrome 138; the Prompt API is stable for Chrome Extensions, with broader web-page access still gated through trials. It also runs the on-device pass of Chrome&#8217;s scam-detection pipeline (which still ships summary signals to Safe Browsing once it flags something).</p><p>Google&#8217;s servers run the rest. <a href="https://support.google.com/chrome/answer/14582048">Help Me Write</a> sends your text, the content, and the URL of the page you&#8217;re writing on. <a href="https://support.google.com/chrome/answer/142893">Enhanced Autofill</a> may send the URL and page content. <a href="https://blog.google/products-and-platforms/products/chrome/new-ai-features-for-chrome/">AI Mode</a>, the pill Google began rolling into Chrome&#8217;s address bar in 2025, sends every query to a much larger custom Gemini in the cloud.</p><p>The local model handles what developers call from JavaScript and what the security stack does behind the scenes. The cloud handles what users actually see and click.</p><p>Until last week, the on-device-AI settings page promised that the model runs &#8220;directly on your device without sending your data to Google servers.&#8221; Reporters <a href="https://www.theregister.com/ai-and-ml/2026/05/09/google-tweaks-chrome-ai-privacy-wording-insists-processing-stays-on-device/5237580">caught the line&#8217;s quiet removal</a> around the Chrome 148 rollout in May. Google told them the architecture hadn&#8217;t changed, only the wording. Fair enough. But the architecture was always the problem. The features that actually invoke the local model are not the features users see. The features users see route to Google.</p><h4><strong>Enter the era of local-washing</strong></h4><p>Maybe we should call this <em>local-washing</em> &#8212; a narrow on-device feature laundering privacy credit across the AI surface the user actually touches. Not a conspiracy, just a missed opportunity. The model is here. The visible surface is there. The keys are in Chrome&#8217;s pocket &#8212; and Chrome won&#8217;t be the last to keep them there. Every vendor shipping on-device AI will face the same gap, including the ones building in good faith. Once &#8220;on-device&#8221; means whatever a vendor&#8217;s marketing team needs it to mean, you can&#8217;t recover what it was supposed to mean.</p><p>(Aside: I spent last Saturday building <a href="https://github.com/r/google-nano-openai">a bridge</a> &#8212; a small Node server that spawns a headless Chrome, hosts Gemini Nano via the Prompt API in a hidden page, and exposes the whole thing as an OpenAI-compatible endpoint on localhost. The walkthrough is in <a href="https://x.com/raffihack/status/2057436178945831230">a thread on X</a> &#8212; and while you&#8217;re there, <strong><a href="https://x.com/raffihack">@raffihack</a></strong> is where more of this kind of weekend nerdery lives. The bridge isn&#8217;t the point. The point is that the wiring is doable from outside the platform on a weekend afternoon, which means every platform has to choose whether to ship the architecture honestly or wait for the community to finish it for them.)</p><p>Open infrastructure has always come together this way: the closed platform ships half the architecture, and the open community ships the half that hands ownership to the user. Linux didn&#8217;t happen because Unix vendors gave up; it happened because companies whose P&amp;L depended on a portable, open kernel &#8212; IBM, Red Hat, Intel, eventually Google &#8212; put paid engineering behind finishing the wiring. Firefox came up against an Internet Explorer that had recently peaked north of 90% market share, with Mozilla funding the engineering.</p><p>There&#8217;s also a cost question. Cloud bears the compute; on-device moves it to your machine&#8217;s disk, battery, electricity, and warms your lap. Mozilla has flagged the tradeoff in the standards process. (Disclosure: I&#8217;m CTO there.) Hanff also runs the carbon math on the rollout itself &#8212; between 6,000 and 60,000 tons of CO2-equivalent depending on coverage, an externality that doesn&#8217;t show up on Chrome&#8217;s release notes.</p><p>Hanff goes further on the legal side. As a lawyer, he sees, the push breaching four things simultaneously: <a href="https://www.edpb.europa.eu/system/files/2024-10/edpb_guidelines_202302_technical_scope_art_53_eprivacydirective_v2_en_0.pdf">Article 5(3) of the ePrivacy Directive</a> (the storage-and-access consent rule), Article 5(1) GDPR&#8217;s principles of lawfulness, fairness, and transparency, Article 25 GDPR&#8217;s data-protection-by-design obligation, and the Corporate Sustainability Reporting Directive, in which an environmental impact of this magnitude would constitute a material disclosure for any in-scope undertaking. I&#8217;m not a lawyer, but I can tell that the cite list is specific enough that any in-house counsel watching a vendor stage a similar push should be reading it carefully.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/privacy-laundering/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/privacy-laundering/comments"><span>Leave a comment</span></a></p><h4><strong>Three questions worth keeping for the next on-device claim that crosses your desk</strong></h4><p>If you&#8217;re shipping on-device AI, three things to get right:</p><ul><li><p><strong>Be honest about the price of local.</strong> Local AI on capable hardware is the right architecture for anything that touches private data. Disk, battery, and a warm lap are the cost. Name them next to the benefit, not in a footnote nobody reads;</p></li><li><p><strong>Wire your visible features to the local model.</strong> Not just the developer APIs or the security stack &#8212; the things your users actually click. If your marketing implies wider scope than what your visible features deliver, you&#8217;re shipping half the architecture; and</p></li><li><p><strong>Ship the map, not just the consent box.</strong> Users in 2026 don&#8217;t need permission-to-install dialogs &#8212; they need to know which of your features run where. &#8220;AI Mode&#8221; should mean something specific. &#8220;On-device&#8221; should mean something specific. Put the map on the surface, in a sentence, without making users dig through release notes.</p></li></ul><p>Cloud was rented inference: someone else&#8217;s compute, someone else&#8217;s model, your prompts on the wire. On-device done right flips every one of those &#8212; your hardware, your model, your prompts staying on your machine, the keys in your pocket. What Chrome shipped is the building without the keys. You hold the deed; the platform owns the lock.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Week in Open Source]]></title><description><![CDATA[Jack Dorsey&#8217;s AI stance, laptops as data centers, and the end of encrypted messages?]]></description><link>https://newsletter.ownersnotrenters.com/p/the-week-in-open-source</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/the-week-in-open-source</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Fri, 15 May 2026 16:56:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bsDD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bsDD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsDD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 424w, https://substackcdn.com/image/fetch/$s_!bsDD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 848w, https://substackcdn.com/image/fetch/$s_!bsDD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 1272w, https://substackcdn.com/image/fetch/$s_!bsDD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsDD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png" width="1191" height="671" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:671,&quot;width&quot;:1191,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1439648,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/197865508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fffe9dc32-72a8-4864-a719-8d38277ac76c_1535x1025.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bsDD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 424w, https://substackcdn.com/image/fetch/$s_!bsDD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 848w, https://substackcdn.com/image/fetch/$s_!bsDD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 1272w, https://substackcdn.com/image/fetch/$s_!bsDD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90330cea-765a-46ab-89b7-1ddb43bdb3ff_1191x671.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Jack Dorsey <a href="https://www.youtube.com/watch?v=YTVSwOY19Qs">on the Sequoia Capital podcast</a> last week: AI isn&#8217;t a productivity layer bolted onto your company; it&#8217;s an architectural rebuild.</strong> Block has capped layers between him and any IC at four, wants two or three by year end, and collapsed every role to three: IC, DRI, player coach. Block laid off 40% of its workforce earlier this year &#8212; roughly 4,000 people. Dorsey ties the cut to the rebuild. (Disclosure: I worked with Jack at Twitter on the consumer relaunch &#8212; New Twitter, Phoenix, I forget what we called it.)</p><p>I <a href="https://www.youtube.com/watch?v=Lwdhw8aI8es">gave a talk on Conway&#8217;s Law</a> a while back; what Dorsey is doing is the inverse. Conway said your system inherits the shape of your org; Dorsey is saying the org <em>is</em> the system now. Every Slack thread, PR, doc, meeting recording feeds a model of how the company works; anyone can query it instead of triangulating through managers. The org chart isn&#8217;t a constraint on the product. It is the product.</p><p>The engineering question: Can your company&#8217;s docs, code, messages, and tickets be read as one thing? Dorsey says Block is close on the data, still a research bet on the intelligence layer that sits on top. Most companies don&#8217;t even have the data yet. They just have it scattered across 40 tools that don&#8217;t talk to each other. The bottleneck is the wiring, not the AI. Cut 40% of your people without doing the plumbing and you didn&#8217;t rebuild your company. You shrank it.</p><div><hr></div><p>Same week, opposite move. Salvatore Sanfilippo &#8212; a.k.a. <a href="https://x.com/antirez">antirez</a>, who built Redis and ran it for 11 years &#8212; <a href="https://x.com/antirez/status/2052405820235678175">shipped ds4</a> on May 7: a small inference engine in C and Metal, targeted at exactly one model. On a 128GB MacBook Pro M3 Max, his<a href="https://huggingface.co/antirez/deepseek-v4-gguf"> 2-bit compressed weights</a> give you DeepSeek V4 Flash &#8212; 284 billion parameters, 13 billion active, one-million-token context &#8212; at 26 tokens per second, on battery. A rack of H100s and 5kW of cooling, last quarter. Now, <strong>a laptop is doing what was a data center workload.</strong></p><p>Compression is asymmetrical: routed experts get crushed to two bits; the shared layers every query touches stay precise. Working memory spills from RAM to SSD, which is how a one-million-token context fits on 128 GB. Output validated against the official DeepSeek implementation at multiple context sizes. Speaks the OpenAI/Anthropic protocol, so Claude Code, opencode, and Pi all point at<a href="https://github.com/antirez/ds4"> the engine</a> unmodified. Same five-layer pattern I flagged with Tencent&#8217;s translator <a href="https://newsletter.ownersnotrenters.com/p/the-complete-chatgpt-algorithm-in">last Friday</a>: model + compression + runtime + data + open-source packaging.</p><p>Last quarter, swapping a closed-frontier coding API for an open model meant a meaningful capability drop. This quarter, one line of config and a comparable model runs on your laptop, on battery, on your data, no per-token bill. The honest comparison: ds4 is alpha. It will crash. It runs one model on one class of hardware. If your job depends on uptime, the closed APIs still win. <strong>If your job depends on knowing what runs on your hardware, the closed APIs cannot compete &#8212;</strong> <strong>because they cannot show you.</strong></p><div><hr></div><p>Ownership is extending from weights to watts. <em><strong>Ars</strong></em><strong> this week on <a href="https://arstechnica.com/ai/2026/05/the-newest-ai-boom-pitch-host-a-mini-data-center-at-your-home/">the pitch to host mini data centers at home</a>. </strong>I have <a href="https://www.span.io/">SPAN</a> panels installed already.</p><p>Two more on my list to play with this week: <strong><a href="https://www.openui.com/">OpenUI</a> generates UI components from natural-language prompts</strong> &#8212; generative UI is genuinely cool right now. <strong>Anthropic added <a href="https://www.reddit.com/r/ClaudeAI/comments/1tatxau/claude_code_just_shipped_a_run_until_done_mode/">/goal</a> to Claude Code</strong>: a &#8220;run until done&#8221; mode for autonomous coding sessions. Both running locally next week.</p><div><hr></div><p><strong>You can own the model and the metal. The pixels in between are the contested layer. </strong>Meredith Whittaker &#8212; president of <a href="https://signal.org/">Signal</a>, the encrypted-messaging app &#8212; has been<a href="https://techcrunch.com/2025/03/07/signal-president-meredith-whittaker-calls-out-agentic-ai-as-having-profound-security-and-privacy-issues/"> arguing for over a year</a> that AI agents are an  <a href="https://fortune.com/2025/11/27/ai-agents-are-an-existential-threat-to-secure-messaging-signals-president-whittaker-says/">existential threat</a> to encrypted messaging. The argument is structural, not rhetorical: any agent that books your concert ticket for you needs your browser, your calendar, your payment information, and your messaging app. End-to-end encryption is supposed to mean nobody but you and the person you&#8217;re texting can hear the conversation. An AI agent that reads your screen to summarize the conversation, draft your reply, or file the contact is in the room with you, taking notes. Whittaker frames it as breaking the &#8220;blood-brain barrier between the application layer and the OS layer.&#8221;</p><p>The architecture Whittaker spent a year warning us about is now a free download: ByteDance&#8217;s <a href="https://github.com/bytedance/UI-TARS-desktop">UI-TARS-desktop</a>. 33.5K stars on GitHub, Apache 2.0 license. <strong>UI-TARS works like a person watching your screen over your shoulder, </strong>a constant stream of screenshots, fed into a vision-language model that drives your mouse and keyboard. No API permission negotiation. No accessibility tree. Raw pixels and a model that reads them. Anything a human can see on the screen, the agent can, too &#8212; which means every encrypted message visible on your screen is, by construction, in the upstream screenshot. Whittaker doesn&#8217;t have to imagine the threat model anymore. ByteDance shipped a reference implementation.</p><p>LangChain&#8217;s harness catalog still doesn&#8217;t name a real permission model. What the agent can see without asking. What requires confirmation. What is forbidden. What is auditable after the fact. Your browser has trained you for this already: When a website wants your camera, the browser asks which site, what for, how long, and lets you take it back. Your AI assistant does the same job &#8212; reading your screen, taking actions on your behalf &#8212; with no equivalent guardrails. <strong><a href="https://vercel.com/kb/bulletin/vercel-april-2026-security-incident">Vercel&#8217;s OAuth integration breach</a> a few weeks ago was the first major proof case for why the absence matters. </strong>That&#8217;s the gap <a href="https://tryharbor.io/">Harbor</a> takes a first run at: per-origin, scoped, revocable, auditable. If your AI assistant has root permission to read everything on your screen in 2026, your encryption story is whatever your vendor decides it is. That isn&#8217;t encryption. That&#8217;s optimism.</p><div><hr></div><p>While the US debate stays at the loss-of-control framing, Beijing wrote the permission model LangChain didn&#8217;t. On May 8, <strong>China&#8217;s cyberspace, planning, and industry ministries jointly released <a href="https://www.cac.gov.cn/2026-05/08/c_1779979789523320.htm">Implementation Opinions on the Standardized Application and Innovative Development of Intelligent Agents</a> &#8212; the first state-directed national framework to operationalize AI agents as a distinct governance category.</strong> Beijing is writing the traffic rules while the cars are on the highway. Washington is still debating whether what&#8217;s on the highway counts as cars.</p><p>The definitions are specific. An agent is &#8220;an intelligent system capable of autonomous perception, memory, decision-making, interaction, and execution.&#8221; Nineteen named application scenarios &#8212; research, industry, consumer, public welfare, governance &#8212; where agents are explicitly allowed to operate. The posture analysts call <a href="https://rits.shanghai.nyu.edu/ai/china-issues-first-national-policy-framework-dedicated-to-ai-agents">deploy first, govern along the way</a>: compute quotas, credit ceilings, permission scopes, and shutdown switches naturally bound agent autonomy, and the right response is to integrate them into existing institutional structures rather than impose abstract restraint upfront.</p><p>There&#8217;s a strategic move underneath the philosophy. The framework ties agent infrastructure to the domestic stack (chips, OS, frameworks) and signals intent to participate in international standards for the protocols agents will use to talk to each other. You don&#8217;t have to agree with the framing to see what just happened. One major jurisdiction defined what an agent is, what it can be deployed for, and how it&#8217;s bounded. The others are still arguing about whether agents are a coherent regulatory object. If you&#8217;re shipping agents into a global market, the question of which framework you&#8217;re building against just stopped being hypothetical.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/the-week-in-open-source?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/the-week-in-open-source?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p><h4>What the User Actually Sees</h4><p><strong>People underestimated what Google&#8217;s 10 blue links were. You couldn&#8217;t reconstruct PageRank, but you could feel it</strong> &#8212; two queries, two minutes, ten URLs each, and you saw who got ranked, who didn&#8217;t, what the snippets gave away. You audited the system by reading it.</p><p>One AI answer gives you none of that. The model picks, summarizes, drops the rest. You don&#8217;t see what it considered, what it suppressed, why it leans where it leans. <strong>Call this the one-link problem: the platform is hiding its incentives from you, and you have nothing left to audit them against.</strong></p><p><strong>A <a href="https://arxiv.org/abs/2604.08525">Princeton and UW paper from April 9</a> put numbers on it.</strong> Across 23 LLMs given a flight-booking task prompted to favor sponsored airlines, 18 recommended the more expensive sponsored option more than half the time &#8212; and the rate moved with the user&#8217;s apparent socio-economic status. Gemini 3 Pro recommended it 74% of the time to a user who was coded as high SES (neurosurgeons, lawyers, tech executives), and 27% to ones coded as low SES (fast-food workers, warehouse staff, single parents). When the user explicitly asked for a non-sponsored flight, every model still surfaced the sponsored one, with GPT 5.1 at 94%. Almost every model concealed that the recommendation was sponsored at all: 65% on average. When the sponsored service was a predatory payday loan, GPT 5.1 still recommended it 71% of the time.</p><p>One-shot answers are useful and laypeople will keep wanting them. For the people building these tools, surfacing your model&#8217;s incentives &#8212; what&#8217;s sponsored, what got down-ranked, what didn&#8217;t make the cut &#8212; looks like a transparency tax. It&#8217;s actually the only durable feature an AI tool has in 2026. For the people buying them, opacity feels like a moat. It&#8217;s commodity status with a disclosure problem.</p><p>The architectures that show their wiring is the ones you can own. The test for any AI tool you&#8217;re considering this week is the one the Princeton paper accidentally wrote: Ask it the same question with two different profiles. If the answer changes, you don&#8217;t have a recommendation. You have a price tag.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Call My Agent]]></title><description><![CDATA[Meet the most important layer in the stack.]]></description><link>https://newsletter.ownersnotrenters.com/p/call-my-agent</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/call-my-agent</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Wed, 13 May 2026 15:15:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!I7wl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I7wl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I7wl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I7wl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I7wl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I7wl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I7wl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg" width="3171" height="2628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2628,&quot;width&quot;:3171,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2231234,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/197507185?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F242e4a3d-067c-4bfa-a115-ec0a3b14c65e_3171x4758.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I7wl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 424w, https://substackcdn.com/image/fetch/$s_!I7wl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 848w, https://substackcdn.com/image/fetch/$s_!I7wl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!I7wl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38b732d7-c6ff-4711-a8fd-fc146fa34765_3171x2628.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You&#8217;ve probably already noticed this: The same AI feels different in different tools &#8212; sharper in one app than another, even when you know it&#8217;s the same model underneath. There&#8217;s a reason.</p><p>In the <a href="https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap">first gap map</a>, I drew the open-source AI stack as a vertical thing: chips at the bottom, applications at the top, every layer scored against its closed-source equivalent. That worked for one shape of system, where your application makes the inference call, formats the result, and hands it to the user. Chat boxes, completion plugins, single-turn summarizers &#8212; your application is the runtime; the model is one resource it happens to use. Call that direct inference.</p><p>But that&#8217;s not the only shape anymore. The thing in your editor that ran tests, found a bug, fixed it, and committed the change isn&#8217;t shaped like that. Neither is <a href="https://newsletter.ownersnotrenters.com/p/diy-daily">the briefing that pulled your feeds this morning</a>, picked what mattered, and routed it to you. In those systems, your application doesn&#8217;t call the model at all. It hands a goal to an agent. The agent breaks down the work, picks the tools, keeps state across turns, decides when to ask a human, and decides when to stop. The agent is the runtime, while the model is one resource among several. Think agent-mediated.</p><p>These aren&#8217;t stages. They&#8217;re peers. A summarization tool doesn&#8217;t need an agent. A research assistant can&#8217;t work without one. Both architectures will stick around.</p><p>Hermes Agent, Claude Code, Cursor, Aider, Cline &#8212; all take the side path. The original map only scored direct inference.</p><p>I wrote a <a href="https://docs.google.com/document/d/1y1Td1JuX-HLss3p_25a1AOYqpPO6J2ZGFWX1-WPjh5c/edit?tab=t.0">white paper</a> sketching how this layer breaks down &#8212; runtime plane, control plane, the cross-cutting attributes that <a href="https://arxiv.org/abs/2405.15802">Basdevant et al.</a> introduced for foundation models, all applied to the substrate above inference. It&#8217;s still in draft. Read it and tell me where I&#8217;m wrong.</p><h3><strong>What the harness is actually doing</strong></h3><p>Terminal Bench 2.0 is the standard leaderboard for coding agents - 89 real tasks, scored on how many the agent finishes. Same model, Claude Opus 4.6, identical weights: 58.0% in Claude Code, 79.8% in ForgeCode. Twenty point spread. A new frontier model release typically buys you 3 to 8% gains. This was just a harness swap.</p><p>Imagine a singer in a recording booth. The voice hitting the mic is the model. Compression, EQ, reverb, mixing &#8212; everything between the mic and your ears is the harness. Hand the same vocal take to two engineers and you get two different songs.</p><p>Vivek Trivedy at LangChain has the cleanest framing in <a href="https://blog.langchain.com/the-anatomy-of-an-agent-harness/">Anatomy of an Agent Harness</a>: Agent = Model + Harness. (And if you&#8217;re not the model, you&#8217;re the harness.) The harness is everything in the running system that isn&#8217;t the weights: context management, tool catalogs and dispatch, sandboxes for code execution, memory subsystems for what to remember and forget, orchestration logic for when to call what, hooks for deterministic safety checks. None of that is the model. All of it shows up in the benchmark.</p><p>You can reproduce this on your own machine. Point Cline at the same model Claude Code uses &#8212; same weights, same API endpoint &#8212; and you get different behavior on the same task. Try OpenCode against Cursor on whatever frontier model they share. Same model, different harness&#8230;different result. The harness picks what context the model sees, which tools to surface, whether to read three files or 30 before writing one, what to remember between turns, and what to forget. By the time the result reaches you, the harness has shaped most of what you&#8217;re looking at. The model is the last step in a chain of decisions the harness has already made.</p><p>It happens in things simpler than a coding agent. The morning briefing I built in last week&#8217;s <a href="https://newsletter.ownersnotrenters.com/p/diy-daily">DIY Daily</a> post picks which feeds run, what gets summarized, and what gets dropped. Swap the model behind it and the prose reads slightly differently. Swap the harness and you get different feeds, different memory of what I&#8217;ve already seen, different rules for what&#8217;s worth a line. The briefing is basically unrecognizable.</p><p><a href="https://newsletter.ownersnotrenters.com/p/the-complete-chatgpt-algorithm-in">Last week I pointed at Karpathy&#8217;s microGPT</a>, the complete ChatGPT algorithm in 200 lines of code. The wrapper around the weights does more visible work than the weights themselves.</p><p>There&#8217;s a real exception. For frontier reasoning, novel domains, and long-horizon work where the agent has to invent its own evaluation as it goes, the model still matters more than the harness. The harness amplifies signal the model has to generate first. For the workloads most teams ship this quarter, the harness is the bigger variable.</p><p>The first gap map didn&#8217;t have a row for any of it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/call-my-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/call-my-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h3><strong>The most open part of this story. (It isn&#8217;t a product.)</strong></h3><p><a href="https://docs.google.com/spreadsheets/d/1yW1WiMAKniZz1eKdOrIXF-6ZkCrFc8eWs9OP3SNmj7A/edit?gid=1019453008#gid=1019453008">Same rubric as last time: 1 means the open version barely exists, and 5 means closed has nothing on us</a>. Cell-level scores in the spreadsheet. (Same disclaimer: It&#8217;s almost certainly wrong in places.)</p><p>The headline: Agent-layer enterprise readiness lands at almost exactly the number the first gap map produced for the whole stack. The shape that ate the open-source story ate this layer, too, one level up.</p><p>Rows 45 through 50 show the failure.</p><p>The components are in good shape. Pick any framework, any open harness, any standard underneath&#8212; you can build with it today. LangGraph and AutoGen on the framework side. Cline and OpenHands on the harness side. Underneath them, MCP wiring the tools and A2A wiring the agents. Quietly, the protocol layer scores higher than anything sitting on top of it. The most open part of this story isn&#8217;t a product. It&#8217;s the wiring.</p><p>Then the seams. A task you start in LangGraph cannot be resumed in Semantic Kernel. Each framework keeps its own state its own way, and none of those states travel. You aren&#8217;t picking a runtime when you pick an agent framework. You&#8217;re picking a one-way door.</p><p>The permission model is broken. It&#8217;s the lowest-scored row anywhere in this exercise. No shared standard for what an agent is allowed to do, what needs your approval, what&#8217;s forbidden, how it gets logged. Every harness solves this differently, and none of those solutions move. <a href="https://r.github.io/Harbor/">Harbor</a> and W3C Verifiable Credentials sketch what a portable answer could look like. But nobody has built it.</p><p>A model migration is an afternoon. A harness migration is a rewrite. Tool integrations, memory schemas, permission decisions, prompts &#8212; all coupled to the runtime you picked. Every team picking a harness this quarter is making a multi-year decision and probably treating it like a tooling decision.</p><h3><strong>The wrapper around the wrapper</strong></h3><p>In the <a href="https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap">last post</a>, I made the Linux comparison: In 2002 the kernel was ready, the enterprise wrapper wasn&#8217;t. Red Hat, SUSE, and Canonical built the wrapper. Sun didn&#8217;t ship in time, and you know how that story ends.</p><p>The agent layer is the wrapper around the wrapper. The model and the inference layer underneath it are in good shape in the open. The substrate above them &#8212; the part that turns a model from a function call into an agent &#8212; is what the community hasn&#8217;t named, hasn&#8217;t standardized, hasn&#8217;t documented, and hasn&#8217;t built a permission model for.</p><p>Here&#8217;s the work that needs to be done:</p><ul><li><p><strong>A portable permission model.</strong> The <a href="https://docs.google.com/document/d/1y1Td1JuX-HLss3p_25a1AOYqpPO6J2ZGFWX1-WPjh5c/edit?tab=t.0">paper</a> alongside this post names this as the largest single openness gap at the agent layer. There is no shared standard. Please build one.</p></li><li><p><strong>Interoperability between runtimes.</strong> The seven core objects in the paper &#8212; agent manifest, tool descriptor, task, message, artifact, memory item, run/checkpoint &#8212; exist under different names in every implementation. Agents in different frameworks can&#8217;t hand off work, query each other&#8217;s memory, or coordinate. Those names are a starting point, not a contract &#8212; yet.</p></li><li><p><strong>Agent manifests and tool descriptors with the same rigor model cards have.</strong> What each agent claims, requires, and permits; what each tool costs, risks, and returns.</p></li></ul><p>If we have two more years in which the open agent layer is a side project, the protocols won&#8217;t matter. The harnesses doing the work will be closed. The permission decisions will live in someone else&#8217;s config file. The runtime your team picked will be the runtime your team is stuck with. Open at the model layer can&#8217;t fix open stopping at the model layer.</p><h3><strong>&#8230;and how you can help</strong></h3><p>The <a href="https://docs.google.com/spreadsheets/d/1yW1WiMAKniZz1eKdOrIXF-6ZkCrFc8eWs9OP3SNmj7A/edit?gid=1019453008#gid=1019453008">new spreadsheet </a>is bound to be wrong in places. If you&#8217;re building one of these harnesses or evaluating one for a team, tell me where the scores are off: @raffihack on X, in the comments, or DM. I&#8217;ll update.</p><p>Then find a red row you know how to fix. The permission model, the runtime seams, the manifest layer &#8212; that&#8217;s where the assignments are. If you&#8217;re picking one up, talk to me. I&#8217;ll feature what you&#8217;re building.</p><p>The <a href="https://docs.google.com/document/d/1y1Td1JuX-HLss3p_25a1AOYqpPO6J2ZGFWX1-WPjh5c/edit?tab=t.0">white paper</a> goes deeper if you want the framework. I&#8217;m taking edits.</p><p>Let&#8217;s ship the wrapper.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/call-my-agent/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/call-my-agent/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Complete ChatGPT Algorithm in 200 Lines + Minecraft’s Huge Secret]]></title><description><![CDATA[What I've been thinking about in open source and AI]]></description><link>https://newsletter.ownersnotrenters.com/p/the-complete-chatgpt-algorithm-in</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/the-complete-chatgpt-algorithm-in</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Fri, 08 May 2026 16:18:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!goMt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!goMt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!goMt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 424w, https://substackcdn.com/image/fetch/$s_!goMt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 848w, https://substackcdn.com/image/fetch/$s_!goMt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!goMt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!goMt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg" width="4539" height="3287" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3287,&quot;width&quot;:4539,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2998028,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/196909456?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c294cb3-1068-4894-aa5e-d8f648c00dd4_4539x3287.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!goMt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 424w, https://substackcdn.com/image/fetch/$s_!goMt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 848w, https://substackcdn.com/image/fetch/$s_!goMt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!goMt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F628a0e9d-5bae-4d1d-b16e-2979eb0a624a_4539x3287.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s what I&#8217;ve been reading, thinking about, and playing with. Open weights stopped being the headline this week. The stack around them &#8212; runtime, harness, audit, distribution &#8212; is where the action moved.</p><p><strong>Andrej Karpathy &#8212; formerly of OpenAI and Tesla &#8212; published </strong><code>microgpt.py</code><strong>: the entire architecture behind ChatGPT compressed into 200 lines of pure Python, no dependencies.</strong> The header reads: &#8220;This file is the complete algorithm. Everything else is just efficiency.&#8221; The internet took it as a dare. Five thousand stars. Two thousand forks. Ports in Rust, OCaml, Julia, JavaScript, CUDA, plus a pure-C version. Then someone shipped it to silicon.</p><p>A footnote: Karpathy said in a recent <em><a href="https://open.spotify.com/episode/3u1XHEsAuK1VXRr81RzQDV?t=3659">No Priors</a></em><a href="https://open.spotify.com/episode/3u1XHEsAuK1VXRr81RzQDV?t=3659"> interview</a> that he tried to get an agent to write microgpt for him. It can&#8217;t do it, he said. So he wrote it himself. A data point about who&#8217;s still doing the cognitive work at the bottom of the stack.</p><p>Back to silicon. People build custom silicon &#8212; special hardware for a single purpose &#8212; because it&#8217;s supposed to be faster than your CPU, which has to be general-purpose. Luthira Abeykoon&#8217;s <a href="https://github.com/Luthiraa/TALOS-V2">TALOS-V2</a> is the same Karpathy model running on an FPGA &#8212; a programmable chip you wire up for one job &#8212; on a $350 hobby development board. <strong>The <a href="https://v2.talos.wtf/">writeup at v2.talos.wtf</a> is one of the best pedagogical hardware-design docs I&#8217;ve read this year.</strong> A few weeks ago, Alex Cheema&#8217;s <a href="https://github.com/AlexCheema/talos-vs-macbook">benchmark</a> put TALOS-V2 head-to-head with a MacBook running the same model multiple ways. Tokens per second, slowest to fastest:</p><ul><li><p>MacBook, MLX (Apple&#8217;s GPU framework): 3,300</p></li><li><p>MacBook, pure Python: 7,400</p></li><li><p>MacBook, NumPy: 40,000</p></li><li><p>TALOS-V2 (FPGA): 53,000</p></li><li><p>MacBook, hand-tuned C on one CPU core: 3,760,000</p></li></ul><p>The MLX result is the surprise. GPUs win by doing thousands of math operations in parallel &#8212; but every batch has to be shipped over with some fixed setup cost. On a normal model, that cost is invisible. On a model this tiny (~4,000 multiplications per token), the setup is bigger than the work. The GPU sits there, waiting. The same story explains why Python and NumPy lose to the FPGA, and why hand-tuned C &#8212; almost zero overhead &#8212; wins by 71x. The FPGA&#8217;s remaining moat is form factor: It runs off a battery on something the size of a credit card, and a MacBook does not. <strong>The right question for tiny on-device AI isn&#8217;t </strong><em><strong>How fast is your custom chip?</strong></em><strong> It&#8217;s </strong><em><strong>Do you actually need the form factor?</strong></em> If not, the laptop you already own, running plain C, beats everything.</p><div><hr></div><p><strong>Most &#8220;I got this running locally&#8221; stories are bloat-stripping stories. </strong>Quantization, custom runtimes, dropping the GPU when the GPU is overhead &#8212; same move at different layers. What open weights buy you isn&#8217;t the weights. It&#8217;s the right to choose your abstraction tax.</p><p>But what about a translator that handles 1,056 language directions, runs offline on your phone, and outperforms Microsoft Translator, Doubao, and open models 20&#8211;40x its size (Tower-Plus-72B, Qwen3-32B) on Flores-200? That model is 440MB, fits on a USB stick, and Tencent open-sourced it as <a href="https://huggingface.co/AngelSlim/Hy-MT1.5-1.8B-1.25bit">Hy-MT1.5-1.8B-1.25bit</a> last week.</p><p><strong>How they got there is the part you&#8217;ll want to steal</strong>: 1.25 bits per weight. Most weights end up at one of three states, and the model still wins. Tencent paired the new compression with a custom mobile-CPU runtime fast enough to actually use on the hardware in your pocket. Model + compression + data + runtime + open-source packaging is a five-layer practice that didn&#8217;t cohere as an industry discipline 18 months ago. The model is the headline. The discipline is the alpha. If your app currently sends translation traffic to a commercial API, that&#8217;s now a build-vs.-buy decision rather than an obvious buy.</p><div><hr></div><p>Training stays on the device, too. Federated learning lets a million phones (or hospitals, or banks) collaborate to train a shared model without any of their raw data ever leaving the device. You probably typed something today using one: Gboard&#8217;s next-word prediction has been trained this way since 2017, on billions of phones, without Google ever seeing what anyone typed. The catch is that it falls over in production because real devices are slow, flaky, or both. MIT&#8217;s <a href="https://arxiv.org/abs/2510.03165">FTTE</a>, out this past week, handles that at scale: 81% faster convergence, 80% lower on-device memory, 69% lower communication overhead, validated on four Raspberry Pi 5s with up to 500 simulated clients, and 90% of them lagging behind. Privacy-preserving AI moves from research demo to deployable shape. <strong>If your domain has a privacy requirement that&#8217;s been keeping AI off the table, the deployment shape just got real.</strong></p><div><hr></div><p>Your dependence on closed top-tier APIs is now a procurement choice rather than a technical one. Ant Group's <a href="https://huggingface.co/inclusionAI/Ling-2.6-1T">Ling-2.6-1T</a> (MIT license) is the reason. A trillion parameters, eight H100s minimum to load &#8212; roughly $250K of GPUs, or ~$50/hour to rent inference &#8212; post-trained for intelligence-per-token rather than benchmark-per-token. Fewer process tokens burned per useful answer, which is the metric that shows up on your inference bill. <strong>Until this quarter, swapping a closed-frontier API for an open model meant accepting a meaningful capability drop. Ling closes that gap</strong>, and it plugs into the agent runtimes builders are already using (Claude Code, OpenClaw, OpenCode). The swap is one config line.</p><p><strong>SenseTime open-sourced <a href="https://github.com/OpenSenseNova/SenseNova-U1">SenseNova-U1</a> the same week. </strong>Today&#8217;s multimodal AIs are chains &#8212; one model sees, another reads, a third writes &#8212; and detail leaks out at every handoff. SenseNova-U1 fuses them. The 8B variant fits on consumer hardware. Closed labs still own the frontier. They&#8217;ve lost their monopoly on how to think about it.</p><p>The open stack now runs from $0 to $1M of hardware, with a real choice at every price point.</p><div><hr></div><p>Open weights without a deployable harness don&#8217;t change the build-vs.-buy math &#8212; that&#8217;s a gap a lot of my Mozilla work points at. The harness is the software that wraps the model: filesystem, bash, memory, scheduled re-prompting, skills as just-in-time tools. <strong>LangChain&#8217;s </strong><em><strong><a href="https://www.langchain.com/blog/the-anatomy-of-an-agent-harness">Anatomy of an Agent Harness</a></strong></em><strong> is the cleanest map of what a harness actually is</strong>, and the slogan is the right one: if you&#8217;re not the model, you&#8217;re the harness.</p><p>On Terminal Bench 2.0, identical Claude Opus 4.6 spreads 20 points &#8212; 58.0 in Claude Code, 79.8 in ForgeCode. Models are commoditizing. <strong>Harness engineering is where the leverage is.</strong> The missing piece in LangChain&#8217;s catalog is a real permission model: What the agent can do without asking, what requires confirmation, what&#8217;s forbidden. That&#8217;s the gap Harbor (sketched <a href="https://newsletter.ownersnotrenters.com/p/diy-daily">in an earlier post</a> and in <a href="https://newsletter.ownersnotrenters.com/p/ai-agents-robot-data-and-maxing-out">last week&#8217;s piece</a>) takes a first run at.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><p>Five steps. That&#8217;s how long it took to <a href="https://newsletter.ownersnotrenters.com/p/diy-daily">put an AI agent on a Mac</a>.<a href="https://github.com/wexare-ai/openbrowserclaw"> </a><strong><a href="https://github.com/wexare-ai/openbrowserclaw">wexare-ai/openbrowserclaw</a> fits an entire agent into one browser tab</strong>:<strong> </strong>Web Worker for the server, IndexedDB for the database, OPFS for files, a Linux VM compiled to JavaScript for bash.</p><p><strong><a href="https://solstone.app/">Solstone</a> is open source, runs locally, and captures what you see and hear into a searchable timeline</strong>. The interesting part is corporate, not technical. Solstone&#8217;s parent, Sol PBC, wrote, &#8220;We don&#8217;t sell, license, or lease your data&#8221; into its charter, and bound any future acquirer to the same terms. Marketing usually says, &#8220;You own your data.&#8221; Solstone made it legally enforceable.</p><div><hr></div><p><strong>A chatbot&#8217;s mistakes cost tokens. A robot&#8217;s mistakes break things. </strong>The body and simulator side of robotics has been opening up (Newton, Asimov, RoboParty, <a href="https://newsletter.ownersnotrenters.com/p/lets-get-you-paid">tracked here last month</a>). Three pieces released this past month do the same for methodology and data, the layers that matter more before you let a robot loose in your house.</p><p>NVIDIA&#8217;s <a href="https://research.nvidia.com/labs/srl/projects/robolab/">RoboLab</a> is the first serious audit benchmark: 120 tasks deliberately built so the model can&#8217;t just memorize objects from the most popular training set. RAI Institute&#8217;s <a href="https://arxiv.org/abs/2603.15956">ExpertGen</a> takes 200 imperfect human demos and turns them into 80% real-world success on a manipulation task &#8212; where standard imitation training on the same data lands at&#8230;0%. Peking&#8217;s <a href="https://arxiv.org/abs/2602.12215">LDA-1B</a> trains a 1.6B-parameter robot model on 30,000 hours of mixed-quality data and shows that adding the noisy data makes the model better, not worse<strong> </strong>&#8212; same instinct as FTTE, applied to a body. <strong>The audit surface for a robot is its evals, its methods, and its data.</strong> Next time you scope a robotics vendor, that&#8217;s the spec sheet to ask for.</p><div><hr></div><p><strong>To end on something completely different: Reporters Without Borders re-opened the <a href="https://rsf.org/en/world-day-against-cyber-censorship-rsf-unveils-new-us-room-its-minecraft-uncensored-library">Uncensored Library</a> in March with a new US wing: banned and censored journalism distributed inside Minecraft</strong>, because Minecraft is the rare piece of internet infrastructure no government has bothered to block. Over a million visits. Ten million books read. RSF has been smuggling press freedom into authoritarian countries through a video game since 2020. It&#8217;s the same instinct as the rest of this letter, applied to a sandbox where 12-year-olds build castles. The gatekeepers can&#8217;t reach a layer they don&#8217;t take seriously. That&#8217;s the layer to build on.</p><p>What have you been diving into this week? What have I missed? Leave a comment below.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/the-complete-chatgpt-algorithm-in/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/the-complete-chatgpt-algorithm-in/comments"><span>Leave a comment</span></a></p>]]></content:encoded></item><item><title><![CDATA[DIY Daily]]></title><description><![CDATA[How to turn your self-hosted agent into a private news briefing.]]></description><link>https://newsletter.ownersnotrenters.com/p/diy-daily</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/diy-daily</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Wed, 06 May 2026 13:31:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KZOB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KZOB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KZOB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KZOB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KZOB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KZOB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KZOB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3576522,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/196545543?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KZOB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KZOB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KZOB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KZOB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4ecc297-53ee-42c3-b964-2f1bf9e9c470_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s 6:30 a.m. My phone buzzes on the kitchen counter. I pick it up and see three short paragraphs, plus five bullets, one possible newsletter angle, and one contrarian take, followed by source links at the bottom &#8212; just the way I told my model server I wanted them last week. Read time: 90 seconds, between the first sip of coffee and the second.</p><p>The thing that wrote it isn&#8217;t on my laptop. My laptop is off. It lives on a small Linux box in a closet, and it&#8217;s been awake since I went to bed, reading the news for me on a beat I actually care about. By the time I&#8217;m pouring coffee, its reading is done. Some of what it delivers will end up shaping what I write for you: the leads I chase, the links I follow, the threads worth pulling on. That&#8217;s the recursion, and it&#8217;s part of what this post is about.</p><p>The briefing isn&#8217;t the only thing the box does. A contractor working on the house sends invoices in whatever format he opens that morning &#8212; PDF, scanned photo, sometimes just numbers typed into the body of the email. I connected it to Gmail and a Google Sheet, told it which sender to watch, and asked it to pull line items and append them. The sheet now updates itself. I look at it on Sunday afternoons.</p><p>I also keep a running list of restaurants people tell me to try, sorted by city, and the list lives in its memory. When I land somewhere, I ask, and it tells me what I told it last time someone mentioned the place. A hosted assistant could do all of this in theory. None of the ones I use do, because the memory isn&#8217;t the product &#8212; the chat is.</p><p><a href="https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server">A month ago, I had you turn your Mac into a model server</a> &#8212; <a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a>. The marginal cost of the next token was zero, assuming you don&#8217;t count battery drain or the fact that your thighs were now doing some of the thermal work. Then you closed your laptop, and the model went to sleep with it. Last month we made the model fast. This month we give it somewhere to be when you&#8217;re asleep.</p><p>Don&#8217;t self-host an agent to get cheaper chat. Self-host one to get something that doesn&#8217;t sleep when you do. Think of the first useful self-hosted agent not as an AI friend, but as an AI beat reporter. By the end of this post, you&#8217;ll have one &#8212; even if you skip every command and just read along.</p><h3>What an agent actually is (and why ChatGPT isn&#8217;t quite one)</h3><p>If you&#8217;ve used <a href="https://cursor.com/">Cursor</a> or <a href="https://github.com/anomalyco/opencode">OpenCode</a>, you&#8217;ve used an agent &#8212; a model in a loop (or, maybe more honestly, a model in a <code>while True:</code> loop with a <code>break</code> condition the model itself decides on). It&#8217;s called the <a href="https://arxiv.org/abs/2210.03629">ReAct pattern</a>: read the situation, decide what to do, do it (using tools), look at what happened, go again. Coding agents run that loop with a narrow toolbelt: read code, edit code, and run tests. A general-purpose agent runs the same loop with a wider one: search the web, draft an email, and ping you on Telegram when the build breaks.</p><p>When you use ChatGPT, you are the agent. You read its answer, decide if it&#8217;s right, ask the next question, and paste in the error message yourself. A real agent <em>is</em> the loop. That&#8217;s the whole gap between asking ChatGPT to summarize what&#8217;s new in local AI every morning and waking up to a briefing already in your phone, generated while you slept.</p><p>A note before we go further: An agent that can act can act wrong. An agent with shell access can <code>rm -rf</code> something it shouldn&#8217;t. A wrong answer is a waste of tokens. A wrong action is a waste of trust. An agent reading attacker-controlled web pages can be talked into doing things you never asked for &#8212; that&#8217;s what people call prompt injection, and it&#8217;s part of the threat model the field is still figuring out.</p><p>We are at the very beginning of figuring out what permissions for agents should look like: what gets done without asking, what requires confirmation, and what&#8217;s flat-out forbidden. You can take a look at my small proposal, called <a href="https://r.github.io/Harbor/">Harbor</a>, which is currently more conversation-starter than product, and still needs work. The rest of this post is, in part, what &#8220;be careful&#8221; looks like at the level of one practitioner with a laptop: sandbox the agent, narrow what it can touch, lock the front door to one person, and verify the boundaries by hand. From my perspective, the interesting question with agents isn&#8217;t &#8220;Can it do this?&#8221; &#8212; it&#8217;s &#8220;What happens if it does the wrong version of this?&#8221; The answer should be: not much.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><h3>Some disclosures&#8230;and which agent we&#8217;re going to use</h3><p>A few things to put on the table before I tell you to install anything.</p><p>First: I&#8217;m the CTO of <a href="https://www.mozilla.org/">Mozilla</a>, and there are two Mozilla projects already alive in this neighborhood. <a href="https://www.thunderbolt.io/">Thunderbolt</a>, out of MZLA, is the open-source self-hostable AI client for organizations that want a sovereign stack &#8212; the on-prem version of this conversation, scaled up. <a href="https://www.mozilla.ai/product/octonous">Octonous</a>, out of <a href="https://www.mozilla.ai/">Mozilla.ai</a>, is the agent product for people who want clear scope and approvals before any workflow. Both deserve their own walkthroughs and will probably get them &#8212; just not today.</p><p>Second: Mozilla is also an investor in <a href="https://nousresearch.com/">Nous Research</a>, whose agent runtime, Hermes, is what I&#8217;m about to recommend. We saw the work first; the check was sent after. Tell me I&#8217;m wrong on the merits, not on the affiliation.</p><p>Third &#8212; and this is the one the comments section is going to want to fight about: <a href="https://github.com/openclaw/openclaw">OpenClaw</a>. It&#8217;s the agent that went viral last winter &#8212; <a href="https://www.nytimes.com/column/hard-fork">Hard Fork did an episode</a>, Anthropic&#8217;s lawyers forced a rename, <a href="https://venturebeat.com/technology/openais-acquisition-of-openclaw-signals-the-beginning-of-the-end-of-the/">its creator joined OpenAI in February</a> &#8212; and it is, fairly, the moment &#8220;AI agents&#8221; became a category in the public mind.</p><p>While it&#8217;s not where we&#8217;re starting today, there is a security story worth flagging: One of OpenClaw&#8217;s own maintainers warned on Discord that the project is &#8220;far too dangerous&#8221; for users who can&#8217;t run a command line, and the foundation is in the middle of figuring out who steers it now that the maintainer is at OpenAI. But that&#8217;s not really why. The deeper reason is that Hermes is built to become yours. The memory is a file you can <code>cat</code>. The skills are a directory you can <code>ls</code>. The model can be swapped without rewriting anything. The whole arrangement can be picked up off one machine and put down on another. I&#8217;m interested in things built for owners, not renters, and Hermes is the project that lets you own this one.</p><p>And Hermes is open source &#8212; which matters even more for an agent than it does for a model. A model that hallucinates wastes some tokens. An agent that hallucinates takes an action you didn&#8217;t ask for, and you find out after. Software that acts on your behalf should be software you can read. Not &#8220;audit&#8221; in the compliance sense &#8212; cat the file and see what it&#8217;s about to do. You don&#8217;t have to read it. You have to be able to.</p><h3>What you&#8217;re building</h3><p>Five layers, in this order: the local model endpoint from last issue (or its faster cousin, <a href="https://omlx.ai/">oMLX</a>, which I&#8217;ll explain in a minute), <a href="https://hermes-agent.nousresearch.com/">Hermes</a> on top, <a href="https://telegram.org/">Telegram</a> as the interface (locked to your numeric user ID and nobody else&#8217;s), one recurring job worth doing, and eventually an Ubuntu box that keeps running it after you close the laptop. The first three live on your Mac. The fourth is what makes the fifth worth doing.</p><p>The shape of the rest of this post is five steps. Steps 1 through 5 get you a working agent on your Mac, end to end. In a future issue, we&#8217;ll do step 6 &#8212; the upgrade &#8212; moving it onto a server so it keeps working after you close the lid. If you stop after Step 5, you still have something useful.</p><h3>Step 1: A model endpoint worth pointing an agent at</h3><p>If you set up llama.cpp last month, you can skip the install, but maybe read the next two paragraphs anyway.</p><p>Coding agents &#8212; and agent workloads in general &#8212; don&#8217;t send one prompt and walk away. They send dozens of requests in quick succession, and every request has to ship the entire conversation so far: the system prompt, the tool definitions, the codebase you handed it, every previous turn, plus whatever&#8217;s new. Imagine ordering at a restaurant where the waiter has to re-read the entire menu out loud, top to bottom, before you&#8217;re allowed to say &#8220;and a side of fries.&#8221; That&#8217;s what the model is doing on every turn.</p><p>The thing that normally saves you from this is the KV cache, the model&#8217;s running notes on the earlier part of the conversation, kept in memory between calls so it can skip ahead instead of re-reading. But the cache only works if the earlier part &#8212; what people call the prefix, basically everything before the latest message &#8212; is exactly the same as last time. Add a new file to the context, edit a tool result, change a single token near the top, and the cache is invalidated. The waiter starts the menu over from page one. A few turns in, you&#8217;re watching a spinner for 30 to 90 seconds while it re-reads what it already knew. The model used to be fast. Then the agent loop blew through the cache.</p><p><a href="https://omlx.ai/">oMLX</a> is a native macOS inference server built on <a href="https://github.com/ml-explore/mlx">MLX</a>, Apple&#8217;s own ML framework, and its headline feature is paged SSD caching. Every KV cache block is persisted to disk. When a previous prefix comes back, it&#8217;s restored from disk instead of being recomputed &#8212; the waiter remembers your menu from yesterday. The project&#8217;s own numbers <a href="https://github.com/ml-explore/mlx/discussions/3203">match what I see on an M4 Max</a>: time-to-first-token drops from 30&#8211;90 seconds to 1&#8211;3 seconds on long contexts in the second-or-later turn of an agent session. That is the difference between &#8220;local agent I gave up on&#8221; and &#8220;local agent I actually use.&#8221;</p><p>Setup is undramatic. Download the DMG from the <a href="https://github.com/jundot/omlx/releases">release page</a>, drag to Applications, set the port to 8000 and the API key to localdev. For the model, take the boring default: <a href="https://huggingface.co/mlx-community">mlx-community/Qwen3.5-9B-MLX-4bit</a>. We can optimize or choose something more interesting later.</p><h3>Step 2: Hermes, and the first boundary</h3><h4>Install Hermes:</h4><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;cf00aa61-58d0-45bf-b330-89c14f4f66bf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.zshrc</code></pre></div><p>That gets you the <code>hermes</code> command. The next thing is to tell Hermes which model to use. The way you do that is <code>hermes model</code>, which is an interactive walkthrough &#8212; not a flag-festival, and not a config file you have to memorize. It opens a menu of providers; pick &#8220;Custom endpoint (self-hosted / VLLM / etc.),&#8221; and then it asks for four things in turn:</p><ul><li><p><strong>URL:</strong> <code>http://127.0.0.1:8000/v1</code></p></li><li><p><strong>API key:</strong> <code>localdev</code> (the placeholder you set in oMLX)</p></li><li><p><strong>Model:</strong> <code>Qwen3.5-9B-MLX-4bit</code></p></li><li><p><strong>Context length:</strong> <code>131072</code> &#8212; half of what the model can natively handle, which is plenty for an agent that hasn&#8217;t earned a longer leash yet. (Hermes refuses to start with anything under 64K by design. Agents need working memory.)</p></li></ul><p>Now, before the first prompt, let&#8217;s think about the boundary. By default, Hermes will execute its tool calls, which include shell commands, directly on your computer. But, on a laptop full of credentials, source code, and a browser logged into half the internet, that seems crazy. Change the terminal backend so the agent runs its tool calls inside a Docker container instead of directly on your machine. If you don&#8217;t already have Docker on the Mac, install <a href="https://www.docker.com/products/docker-desktop/">Docker Desktop</a> (or <code>brew install --cask docker</code> if you&#8217;d rather get there from the terminal). Then:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;852abf31-f1d8-44ca-948e-8a505c075945&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">hermes config set terminal.backend docker</code></pre></div><p>It is a cheap and imperfect boundary, but it is definitely better than no boundary. It is the right default for a tool you&#8217;re learning. You may get annoyed early because the agent can&#8217;t see some files you can. But that&#8217;s a feature and not a bug! That&#8217;s the boundary working, not the agent failing.</p><p>Now run <code>hermes</code> and ask it something easy to verify:</p><blockquote><p><em>Summarize the README in this directory.</em></p></blockquote><p>If you see it tool-call its way through reading the file and hand back a summary, you&#8217;re past the hardest part. From here, everything else is shaping the system around the conversation it can already have.</p><h3>Step 3: Telegram, locked to you</h3><p>You need a way to talk to this thing while out and about, and without sitting in front of the terminal. The candidates are many, but, for me, it&#8217;s  Slack, email, and Telegram.<a href="https://slack.com/"> Slack</a> was wrong because I don&#8217;t enjoy having to wait for the IT team to approve things for me. That&#8217;s the right thing for &#8220;production,&#8221; and absolutely none of it is correct for an evening of tinkering. Email had its own complications. Telegram, by a wide margin, is the fastest path from <em>no bot </em>to<em> bot replying to my phone</em>. (If you don&#8217;t use Telegram day-to-day, that&#8217;s fine &#8212; you don&#8217;t need to. Install the app, talk to one bot, never open it again.)</p><p>The mechanics take 15 minutes. Talk to <a href="https://t.me/BotFather">BotFather</a>, get a bot token. Get your own numeric Telegram user ID &#8212; <a href="https://t.me/userinfobot">@userinfobot</a> will tell you. Then <code>hermes gateway setup</code> walks you through wiring those two values in. The values land in <code>~/.hermes/.env</code> as:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;2d8b35fd-d88e-4312-b56e-df59dc73a73a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">TELEGRAM_BOT_TOKEN=&lt;your-bot-token&gt;
TELEGRAM_ALLOWED_USERS=&lt;your-numeric-user-id&gt;</code></pre></div><p>That last line is a lot of the protection. Without it, anybody could, theoretically, message your bot &#8212; and now a stranger is sending a prompt that runs against your agent with shell access to your container on your laptop. With it, the gateway will refuse messages from anyone whose numeric ID isn&#8217;t on the list. (If you ever want to add another person, it&#8217;s a comma-separated list. Do not add another person on day one.)</p><p>I deliberately didn&#8217;t install Hermes as a <code>launchd</code> service yet. <code>launchd</code> is the macOS process that runs programs in the background and restarts them when they crash, so they keep running even when you&#8217;re not looking at them. When you&#8217;re tinkering, you don&#8217;t want that. I wanted to see the gateway receive messages, reply, and fail in plain sight before I tucked it away into the operating system, which it promptly did: My first <code>hermes gateway run</code> failed with <code>database is locked</code> on the local SQLite file, because another Hermes process was still holding it from earlier. This is the unglamorous truth of self-hosting: a real chunk of the work is debugging operational plumbing &#8212; sockets, ports, file permissions, processes that won&#8217;t release a file &#8212; none of which is slick, and none of which is about AI. Most of the work in self-hosting isn&#8217;t AI. It&#8217;s port numbers.</p><p>I killed it. Restarted. Sent <code>/start</code> from my phone. Got nothing. (Turns out <code>/start</code> isn&#8217;t wired up as a special handler.) Sent <code>hi</code> instead. Got a reply.</p><p>So now, my Mac was actually serving a model through an agent to a phone, with exactly one human authorized to talk to it. It was also, if I&#8217;m honest, the moment the project felt real. Everything before it was set-up. Everything after this is product work.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/diy-daily?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/diy-daily?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h3>Step 4: Give it one job</h3><p>A bot that replies to <code>hi</code> is a demo. Now it needs a job.</p><p>The job I gave Hermes is to create the briefing from the opening of this post: scan the web each morning on a beat I care about &#8212; local AI models on consumer hardware, self-hosted agents, the open stack &#8212; and write it up as three short paragraphs and five bullets, ending with one possible newsletter angle and one contrarian take. Source links at the bottom. Deliver it to me via Telegram by 6:30 a.m.</p><p>Step one, Hermes needs to read the web, which is harder than it sounds, because Google and most search engines actively block automated traffic. Point an agent at <code>google.com</code> and you&#8217;ll get CAPTCHAs and rate limits. The workaround is a search/scrape provider that handles the anti-bot work and hands you back clean text. I used <a href="https://www.firecrawl.dev/">Firecrawl</a>, Hermes&#8217; default web backend. Sign up, grab a key, and add it to Hermes&#8217; own environment file (<code>~/.hermes/.env</code>), not your shell&#8217;s. The gateway only reads its own <code>.env</code>; dropping <code>FIRECRAWL_API_KEY=...</code> into your terminal session won&#8217;t reach the long-running process.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;617b3c9a-653f-4696-a458-ab2274b216c3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">echo &#8216;FIRECRAWL_API_KEY=fc-your-key-here&#8217; &gt;&gt; ~/.hermes/.env</code></pre></div><p>Then restart the gateway so the new key is in effect. (I forgot that part the first time and spent 10 minutes baffled by why the agent couldn&#8217;t search the web.)</p><p>A quick note, because this trips people up. There are two surfaces: the Hermes console (the interactive TUI you launch with <code>hermes</code> from a terminal) and Telegram (the chat bot you just wired up). They are not interchangeable. The console is where you teach the agent new things &#8212; iterate on prompts, paste in critiques, save skills, watch the tool calls happen in real time. Telegram is the delivery surface &#8212; short messages out, short answers back, scheduled briefings showing up in the morning. You could technically teach the agent through Telegram, but you&#8217;d hate it. The console is where the work happens; Telegram is where the result shows up.</p><p>Here&#8217;s the workflow that works: gateway running in one terminal, Hermes console in a second terminal, where I iterate on the briefing prompt by hand until it produces what I want. </p><blockquote><p><em>Tighter. Cut the editorializing. Lead with the link, not the headline. Stop telling me what&#8217;s interesting and just tell me the news.</em></p></blockquote><p>When the output stops disappointing me, I hand it to Hermes&#8217; built-in scheduler:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;709d819c-a67a-4656-9dd0-8239b7b41f57&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">hermes cron create &#8220;every 1d at 06:30&#8221; \
&#8220;Run the daily Owners, Not Renters briefing and deliver to Telegram&#8221;</code></pre></div><p>That&#8217;s it. No system crontab to edit, no separate scheduler to install. Hermes runs the prompt at your scheduled time every day inside a fresh agent session, and the gateway delivers the result to the platform you configured.</p><p>It&#8217;s pretty neat to wake up to a real briefing &#8212; three stories, one of them genuinely new to me, sitting at the top of my Telegram before I&#8217;d opened my laptop.</p><h3>Step 5: The part where it starts to become yours</h3><p>A few days in, I had opinions. The summaries were too broad. I wanted more on self-hosted agents, less on every new model release. I wanted five bullets, not three paragraphs. I wanted a single contrarian takeaway in one sentence at the end, with no preamble. I told Hermes that in the middle of a console session:</p><blockquote><p><em>Too broad. Focus more on self-hosted agents and local models. Five bullets. End with one newsletter angle and one contrarian takeaway. Remember this format for future briefings.</em></p></blockquote><p>Then:</p><blockquote><p><em>Save this process as a skill called owners-briefing.</em></p></blockquote><p>The next morning&#8217;s briefing was in the new shape. The morning after, too. And the morning after that. I had opened a session, complained about the output, and the complaint had stuck.</p><p>That&#8217;s also the moment to upgrade the cron job. Instead of stuffing the format into the prompt every time, you point cron at the saved skill:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;6d964aca-da52-4beb-96af-e54550e24b05&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">hermes cron edit &lt;job_id&gt; --skill owners-briefing</code></pre></div><p>You can edit the schedule, the prompt, and the format independently. Tomorrow, you might decide the briefing should run twice a day, so you change the schedule. Next week, you might add Slack delivery; that&#8217;s a separate flag. And the format you taught lives in the skill, ready to be reused by anything else you want to give it to.</p><p>That is the upgrade. It&#8217;s the thing that is genuinely hard to get from a hosted assistant whose memory belongs to someone else&#8217;s product roadmap.</p><h3>What you have, and what&#8217;s next</h3><p>What you have at the end of Step 5 is a real thing: a model on your machine, an agent running on top of it, a chat surface locked to one human, and one recurring job that gets better when you teach it. It runs while your laptop is open. It learns when you correct it. It belongs to you, not to a hyperscaler. That is &#8212; genuinely &#8212; most of the value.</p><p>What you don&#8217;t have yet is permanence. Close the lid and the briefing stops. Travel and the appointment goes unkept. In a future post, I&#8217;ll show you how to move this whole stack onto a small Linux box that stays awake when you don&#8217;t, without losing any of the boundaries we just spent a thousand words putting up.</p><p>For now: Tell me what you&#8217;d give it. What&#8217;s the one job that would actually show up in your morning if it just <em>ran</em> &#8212; without you remembering to ask, without you opening a tab? Reply, or drop it in the comments. The more concrete jobs I have to work from, the better the next post is going to be.</p><h3>Two things to take with you</h3><p><strong>Treat your agent like a new hire.</strong> If you hired a personal assistant, you wouldn&#8217;t hand them your password manager, your bank login, and the keys to your house on day one. You&#8217;d give them your calendar, maybe a corporate card with a low limit, and you&#8217;d extend their access as you watched them work. Security folks call this least privilege. It&#8217;s the right posture for a software agent, too &#8212; and it&#8217;s not the default posture you get when you install one. Every step in this post was a chance to give the agent more access than it needed: the Docker boundary, the Telegram allowlist, the model running locally rather than wired to half the internet. The point isn&#8217;t that any one of those is doing the security work &#8212; it&#8217;s that you have to be paranoid at every step. That&#8217;s the cost of participating in bleeding-edge stuff: the muscle memory doesn&#8217;t exist yet, so you do the thinking out loud, every time, until it does.</p><p><strong>Give it one job, not ten.</strong> The pitch you&#8217;ll hear from most of today&#8217;s agent software is that it can do everything: read your email, manage your calendar, post on your behalf, run your day. The temptation on day one is to let it. This is exactly how people end up telling agent horror stories at dinner parties. Pick the smallest workflow that would be useful if it ran perfectly, get it working, watch it for a week, and only then start thinking about a second. The briefing didn&#8217;t get good because the agent could do many things; it got good because there was exactly one thing to learn the shape of, and one thing to tune. With seven things going at once, you don&#8217;t get to see what your agent actually does &#8212; you just get a vague sense of whether the day went okay. With one, you start to know it. One job. One feedback loop. Earn the second job by being unsurprised by the first.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/diy-daily/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/diy-daily/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Let’s Get You Paid]]></title><description><![CDATA[The companies on the open side of the gap are hiring into it. So I built an index.]]></description><link>https://newsletter.ownersnotrenters.com/p/lets-get-you-paid</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/lets-get-you-paid</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Wed, 29 Apr 2026 13:27:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Lu-9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lu-9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lu-9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 424w, https://substackcdn.com/image/fetch/$s_!Lu-9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 848w, https://substackcdn.com/image/fetch/$s_!Lu-9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 1272w, https://substackcdn.com/image/fetch/$s_!Lu-9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lu-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png" width="1023" height="1537" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1537,&quot;width&quot;:1023,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2806726,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/195791405?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Lu-9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 424w, https://substackcdn.com/image/fetch/$s_!Lu-9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 848w, https://substackcdn.com/image/fetch/$s_!Lu-9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 1272w, https://substackcdn.com/image/fetch/$s_!Lu-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e68ed4-a012-40be-90e8-64db72d24ca4_1023x1537.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Two weeks ago, I <a href="https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap">pointed at the gap map</a> and asked you to find a red zone you knew how to fix.</p><p>But pointing at the work doesn&#8217;t pay for it. Fixing a red cell takes time, and time is what most people capable of the fix are already selling to someone else. So, who actually does the work?</p><p>Open source starts everywhere. It scales on payrolls. Linus Torvalds posted Linux to a newsgroup in 1991; it became the kernel that runs the planet after IBM put a billion dollars and 1,500 engineers into it in 2001. Rust was Graydon Hoare&#8217;s side project; Mozilla (where I&#8217;m CTO) picked it up in 2009 and put engineers on it. PyTorch came out of Meta. Kubernetes came out of Google, carrying forward a decade of lessons from Borg and Omega.</p><p>It&#8217;s the same script with AI. Look at who&#8217;s already paying engineers to close the gap.</p><p>The infrastructure layer: Databricks, Hugging Face, Together, Fireworks, Mistral, Anyscale, Modal &#8212; one sells something that gets more valuable when open models are enterprise-ready. These are the sponsors of the work. Not in a donations sense. In a payroll sense.</p><p>And they&#8217;re already hiring. PwC&#8217;s 2025 <a href="https://www.pwc.com/gx/en/services/ai/ai-jobs-barometer.html">Global AI Jobs Barometer</a>, based on close to a billion job ads, pegged the AI wage premium at 56% &#8212; more than double the 25% it found the year before. Motion Recruitment&#8217;s 2026 <a href="https://motionrecruitment.com/it-salary">tech salary report</a> saw AI specialization postings up 49%, while senior software developer pay fell 10%.</p><p>So the question isn&#8217;t whether AI work pays. It&#8217;s whose payroll you pick.</p><p>Whose payroll already depends on this work?</p><p>I&#8217;ve been pulling that list as part of my work at Mozilla, posting open roles at the companies actually doing it. You can find an alpha version of it at <a href="http://weightsandroles.com/">Weights and Roles</a>. It&#8217;s still very rough and very incomplete. (Populating it is the first job. Seventy-eight pages and counting.) I promise, the code goes open source once it&#8217;s worth shipping.</p><p>If you&#8217;re an engineer thinking about your next move, go look. Tell me which companies you&#8217;d add.</p><p>If you&#8217;re hiring at a company building in this stack &#8212; open weights, infra, dev tools, governance &#8212; email me at raffi@mozilla.org, and I&#8217;ll get you on the list. No fee, no tier, nothing to upsell.</p><p>The gaps in the above map close when the companies whose business depends on it get to work. Figuring out who those are &#8212; and whether you want to work for one &#8212; is this year&#8217;s biggest question.</p><p>That&#8217;s not a downgrade from the dream. It is the dream. While getting a salary.</p><p>Weekend heroes are great. But let&#8217;s get open-source engineers on payrolls.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/lets-get-you-paid/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/lets-get-you-paid/comments"><span>Leave a comment</span></a></p><h3>Chinese labs, benchmaxxing, and the Common Crawl for robot data.</h3><p>Here&#8217;s a snapshot of what I&#8217;ve been reading, thinking about, and playing with this week.</p><p><strong>This talk has me rethinking reality. (Again.) </strong>Carissa V&#233;liz, an associate professor of philosophy at Oxford&#8217;s Institute for Ethics in AI, used her <a href="https://www.youtube.com/watch?v=OS4wHmKtH-Q">TED slot</a> this year to argue that predictions about people don&#8217;t describe the future. They bend it. &#8220;Social predictions tend to act like magnets,&#8221; she says. &#8220;They bend reality towards themselves.&#8221; Predict a loan applicant is high-risk, deny the loan, and the prediction makes itself true. Her warning: Watch out for anyone who tells you the future they&#8217;re describing is inevitable. I made this argument all the time on <a href="https://podcasts.apple.com/us/podcast/technically-optimistic/id1689164209">Technically Optimistic</a>: Technology isn&#8217;t inevitable &#8212; it isn&#8217;t whatever the tech industry hands you &#8212; and we have a say in bending where it goes. V&#233;liz takes it further: Inevitability-framing is a command in disguise, designed to get you to skip the architectural review, the eval pipeline, the rent-vs.-own decision. The fraud model you ship next quarter doesn&#8217;t describe your customers. It picks which ones get treated like fraudsters and writes the data that proves it was right. Treat every output as a prediction, not a fact. The hedge V&#233;liz proposes<a href="https://podcasts.apple.com/us/podcast/when-ai-forecasts-become-self-fulfilling-and-who-this/id1703130308?i=1000763253131"> </a>on Jeff Wilser&#8217;s <a href="https://podcasts.apple.com/us/podcast/when-ai-forecasts-become-self-fulfilling-and-who-this/id1703130308?i=1000763253131">AI-Curious </a>podcast is hilariously analog: keep retired engineers on speed dial for the day nobody remembers how to run things manually.</p><p><strong>Open-source robotics had a remarkable few months&#8230;</strong></p><ul><li><p><strong>The simulator: </strong><a href="https://github.com/newton-physics/newton">Newton 1.0</a> shipped in March, codeveloped by NVIDIA, Google DeepMind, and Disney Research, and powering Disney&#8217;s <em><a href="https://www.youtube.com/watch?v=My0S-hsBC2M">Star Wars</a></em><a href="https://www.youtube.com/watch?v=My0S-hsBC2M">-inspired BDX droids</a>. It&#8217;s hundreds of times faster than the previous open standard on manipulation tasks;</p></li><li><p><strong>The body: </strong><a href="https://github.com/asimovinc/asimov-v1">Asimov Inc.</a> open-sourced its full bipedal humanoid on April 27, with a $15,000 DIY kit on pre-order. If $15K is today&#8217;s cost, imagine 18 months from now; and</p></li><li><p><strong>The full stack: </strong><a href="https://github.com/Roboparty/roboto_origin">RoboParty&#8217;s roboto_origin</a>, out of China, went from blank sheet to running, jumping prototype in 120 days, with a BOM you can fill from Taobao. Earlier this year, K-Scale Labs collapsed while trying to raise $20M for industrial tooling. RoboParty bypassed the problem with off-the-shelf parts and a 3D printer. The pieces are now sitting in public repos. It&#8217;s the same rent-vs.-own choice tipping point for LLMs is landing on the embodied side.</p></li></ul><p><strong><a href="https://github.com/microsoft/TRELLIS.2">TRELLIS.2</a> has been sitting in my tabs since December.</strong> Microsoft Research, with Tsinghua and USTC, shipped a 4B-parameter image-to-3D model: single picture in; fully textured GLB out. MIT license, weights on Hugging Face, full PBR materials &#8212; base color, roughness, metallic, opacity. Not a placeholder mesh. I wanted to tinker. Local install needs 24GB+ of VRAM, verified on A100 and H100, neither of which I have lying around. So I almost dropped it. Then I noticed Microsoft hosts it on<a href="https://huggingface.co/spaces/microsoft/TRELLIS.2"> Hugging Face Spaces</a>. I tried <a href="https://r.github.io/onr-gallery-trellis/">two images</a>: a render of<a href="https://www.linkedin.com/posts/rkrikorian_my-wife-and-i-follow-jonathan-haidts-no-activity-7399125469574389761-F10S/"> a podcast player I&#8217;d been imagining</a> (designed object, controlled lighting, the kind of thing it should handle), and then, to push the model, the<a href="https://www.aureliainstitute.org/space-garden"> Space Garden</a>, my friends Ariel Ekblaw and Thomas Heatherwick&#8217;s orbiting greenhouse, featuring 30 pods around a luminous pomegranate tree &#8212; the kind of organic-meets-engineered weirdness I was sure TRELLIS.2 had never seen in training. It worked. The Common Crawl for robot data nobody&#8217;s been able to scrape may just end up getting generated instead.</p><p><strong>Meta confirmed the model side is moving the other way.</strong> The first thing out of its nine-month-old Superintelligence Labs is <a href="https://ai.meta.com/blog/introducing-muse-spark-msl/">Muse Spark</a>: closed weights, no parameter count, no architecture details. Meta&#8217;s been one of the most prominent US advocates of open weights for two years, and that ladder just lost a rung. Their attempt to buy capability from China got cut off, too: <a href="https://www.cnbc.com/2026/04/27/meta-manus-china-blocks-acquisition-ai-startup.html">Beijing blocked the $2B Manus acquisition</a> &#8212; the Chinese-founded agent startup whose product runs on Anthropic models &#8212; ordering the deal unwound and blocking both founders from leaving the country during the probe. <a href="https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap">As I argued earlier this month</a>, the open-source capability gap is closing fast, and Chinese labs are doing most of the closing. The center of gravity in open weights now sits with Qwen 3, DeepSeek, and Kimi, with Mistral and Gemma being the strongest non-Chinese alternatives. Llama isn&#8217;t dead. It&#8217;s also no longer in the top tier.</p><p><strong>The view from inside one of those Chinese labs is more complicated. </strong><a href="https://podcasts.apple.com/us/podcast/a-year-inside-bytedances-ai-lab/id1845791843?i=1000763052913">Zhang Chi</a> spent 2025&#8211;26 inside ByteDance Seed, the team behind Doubao, China&#8217;s most-used chatbot. The released-weights gap may be closing, but Zhang says the frontier-research gap is widening. He claims Google can iterate a full pre- and post-train cycle in three months, while ByteDance takes six: Every US cycle, the Chinese labs fall another generation behind. He says they&#8217;re benchmaxxing on paper, leaning on distillation from Claude, Gemini, and ChatGPT instead of building real data pipelines. The most entertaining detail, though, is what Zhang and his colleagues use for their own work &#8212; Claude Code, Codex, Cursor &#8212; meaning the next ByteDance model is partly being built by Claude Code. Even so, Zhang says the harness wasn&#8217;t the prize. What matters, he tells <a href="https://www.buzzsprout.com/2546300/episodes/19057945-a-year-inside-bytedance-s-ai-lab">Into Asia</a>, is still &#8220;the model in the backbone, the foundation model that it calls.&#8221; The leak gave you the harness. The capability still lives behind the API.</p><p><strong>Go one rung deeper and it gets stranger. </strong>This week, the Office of Science and Technology Policy director Michael Kratsios issued the executive memo <a href="https://whitehouse.gov/wp-content/uploads/2026/04/NSTM-4.pdf">NSTM-4: Adversarial Distillation of American AI Models</a>, framing foreign labs querying frontier models to train cheaper students as IP theft. (<a href="https://www.interconnects.ai/p/my-bets-on-open-models-mid-2026">Nathan Lambert is worth reading alongside</a>: distillation gets Chinese labs to benchmark parity, not to capability parity, and regulating it won&#8217;t change the underlying race.) Days earlier,<em> Nature</em> published a <a href="https://www.nature.com/articles/s41586-026-10319-8">paper</a> on subliminal learning: distilled students inherit behavioral traits &#8212; misalignment included &#8212; through hidden statistical signals that survive aggressive filtering. The under-discussed finding: transmission only works when teacher and student share a base model. The paper doesn&#8217;t tell us what cross-base distillation cleanly preserves or filters out, but it does suggest Kratsios is at minimum solving an incomplete problem. The chains most exposed to this kind of inheritance live inside the frontier labs themselves, where teacher and student lineage match by design. (And if you&#8217;re fine-tuning a smaller model on outputs from one of its larger siblings, that&#8217;s you, too.) Weights won&#8217;t tell you what your teacher passed down. Neither will the data. Only behavior will.</p><p><strong>The data you don&#8217;t want in the cloud doesn&#8217;t have to leave your machine.</strong> OpenAI just shipped <a href="https://github.com/openai/privacy-filter">Privacy Filter</a>, a 1.5B-parameter MoE model for detecting PII in text. Apache 2.0, runs locally, 96% F1 on the standard benchmark (97% on a corrected version). Within 24 hours, <a href="https://www.linkedin.com/posts/alvarovidela_openai-ondeviceai-energyefficiency-share-7453070009519648769-ayAq">Alvaro Videla reported porting it to Apple Neural Engine</a> using GitHub Copilot &#8212; claiming 15&#215; faster than CPU, 19&#215; less energy per sentence, 0.22 watts of draw. <a href="https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server">If you&#8217;ve already got your Mac running as a model server</a>, this is another floor in the same building.</p><p><strong>US policymakers are openly discussing stronger state control over frontier AI. </strong><em><a href="https://www.theatlantic.com/technology/2026/04/ai-nationalization-trump-hegseth-anthropic-openai/686943/">The Atlantic</a></em><a href="https://www.theatlantic.com/technology/2026/04/ai-nationalization-trump-hegseth-anthropic-openai/686943/"> this week</a> reports that Hegseth threatened Anthropic with the Defense Production Act, while senators have proposed legislation to &#8220;explore&#8221; nationalization. <a href="https://www.nytimes.com/2026/04/15/opinion/mythos-open-souce-internet.html?unlocked_article_code=1.bVA.modn.CkhpAqCZN8Vk&amp;smid=nytcore-ios-share">As I argued in the </a><em><a href="https://www.nytimes.com/2026/04/15/opinion/mythos-open-souce-internet.html?unlocked_article_code=1.bVA.modn.CkhpAqCZN8Vk&amp;smid=nytcore-ios-share">Times</a></em><a href="https://www.nytimes.com/2026/04/15/opinion/mythos-open-souce-internet.html?unlocked_article_code=1.bVA.modn.CkhpAqCZN8Vk&amp;smid=nytcore-ios-share"> last week</a>, even programs designed to broaden access &#8212; Anthropic&#8217;s Project Glasswing extends Mythos defense capabilities to dozens of organizations and funds open-source security groups &#8212; still concentrate decision-making in a handful of frontier labs deciding who gets early defensive tooling. None of this changes what you ship Monday. It does change whether your API access is still a market relationship &#8212; or already a national security one.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/lets-get-you-paid?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/lets-get-you-paid?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[AI Agents, Robot Data, and Maxing out Claude]]></title><description><![CDATA[The week in the world of open-source.]]></description><link>https://newsletter.ownersnotrenters.com/p/ai-agents-robot-data-and-maxing-out</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/ai-agents-robot-data-and-maxing-out</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Fri, 24 Apr 2026 13:54:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Kstp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kstp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kstp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 424w, https://substackcdn.com/image/fetch/$s_!Kstp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 848w, https://substackcdn.com/image/fetch/$s_!Kstp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 1272w, https://substackcdn.com/image/fetch/$s_!Kstp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kstp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png" width="1086" height="887" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:887,&quot;width&quot;:1086,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1515156,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/195258000?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f8390ef-c121-4077-8daa-09fa09595cf5_1086x1448.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Kstp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 424w, https://substackcdn.com/image/fetch/$s_!Kstp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 848w, https://substackcdn.com/image/fetch/$s_!Kstp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 1272w, https://substackcdn.com/image/fetch/$s_!Kstp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4b7885c-c466-434a-a91e-706b059da9d8_1086x887.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here&#8217;s what I&#8217;ve been reading &#8212; and thinking about &#8212; this week.</p><p><a href="https://arxiv.org/abs/2604.11784">ClawGUI</a> argues that GUI agents &#8212; systems that drive apps through taps and swipes instead of APIs &#8212; are stuck less on modeling than on infrastructure. Training environments crash. Nothing reproduces across labs. Agents ship in simulators and never touch a real phone. ClawGUI opens the whole stack: RL training, standardized eval, deployment to Android, HarmonyOS, and iOS. The model isn&#8217;t the bottleneck. The scaffolding is. <strong>There&#8217;s still one piece missing: a permission model for agents acting on your behalf. </strong><a href="https://r.github.io/Harbor/">Harbor</a> sketched one for web agents: scoped, per-origin, revocable. Ported down to the device layer, it might be the primitive GUI agents need to run somewhere real.</p><p>Vercel just showed what happens without Harbor.<a href="https://venturebeat.com/security/vercel-breach-exposes-the-oauth-gap-most-security-teams-cannot-detect-scope-or-contain"> VentureBeat</a> called it &#8220;the first major proof case that AI-agent OAuth integrations are a breach class most security programs can&#8217;t detect, scope, or contain.&#8221; Operational fixes are circulating &#8212; admin-managed consent, default-sensitive variables, scope audits &#8212; all useful, all patches on a permission model that predates agents. Every broad OAuth grant is a pivot point waiting to be used. Scoped, revocable, per-origin isn&#8217;t a nice-to-have. <strong>It&#8217;s the architectural primitive we needed yesterday.</strong></p><p>The scaffolding argument shows up in the economics, too. Anthropic&#8217;s pricing looks simple until you normalize to revenue per token. <a href="https://substack.com/@exponentialview/note/c-241128712?r=2f38m">The math</a>, according to <a href="https://substack.com/@exponentialview">@exponentialview</a>, lands somewhere uncomfortable: frontier API economics are nonlinear. Cache hits price at a fraction of misses. Long contexts with heavy reuse subsidize themselves; short one-shots don&#8217;t. And none of this was designed with agents in mind. A single coding session can burn tokens at rates that would embarrass a month of chat. The sticker price looks stable. The cost per task doesn&#8217;t. <strong>If your agents are eating flash paper, the only durable fix is owning the runtime.</strong></p><p>Until then, you&#8217;re still on their stack. <a href="https://open.substack.com/pub/theaicorner1/p/claude-best-practices-power-user-guide-2026?r=2f38m">This power-user guide for Claude</a> quietly reframes what getting value from a frontier model means. It isn&#8217;t prompts. It&#8217;s persistent context: Projects, custom instructions, skills, Claude Code, Cowork. <strong>If you stop pasting context and start structuring it, Claude behaves less like a chatbot and more like a system you&#8217;ve configured. </strong>Prompt engineering is giving way to workflow engineering. Don&#8217;t copy someone else&#8217;s setup whole. Pick one real project, bring over one piece at a time, then keep what earns its place. That&#8217;s the first step. The structure still lives in their product, not yours. The exit ramp is missing.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><p><strong>If you&#8217;ve been thinking about memory as longer context windows, Plastic Labs is going in a different direction.</strong> (Disclosure: It&#8217;s a Mozilla.vc portfolio company; I&#8217;m CTO at Mozilla.) Their <a href="https://www.honcho.dev/">Honcho</a> is the exit ramp the platforms haven&#8217;t built. It treats memory as a reasoning layer, not storage &#8212; patterns learned across users, agents, and sessions, carrying state across tools and providers. Less chat history, more shared context layer.</p><p>Zoom out and the same pattern repeats. <strong><a href="https://x.com/itspaulai/status/2044456463989371159">World models</a> are having their closed-vs.-open moment, almost on schedule. </strong><a href="https://deepmind.google/models/genie/">Google&#8217;s Genie 3</a> is still in research preview &#8212; no weights, no API. <a href="https://marble.worldlabs.ai/">World Labs&#8217; Marble</a> ships commercially at $20-$95 a month. Meanwhile, the open side has been quietly filling in: <a href="https://lingbot-world.net/">Ant Group&#8217;s open-sourced LingBot-World</a> dropped in January under Apache 2.0, with fast-model updates in April: Tencent followed with HY World 2.0 in mid-April, explicitly benchmarking against Marble. It&#8217;s the same playbook as coding models: closed labs meter access, Chinese labs open the weights and cede the field. Which means capability isn&#8217;t the gate anymore. Control is &#8212; whose worlds, running on whose hardware, with weights you can actually inspect.</p><p>But speed costs something. <a href="https://x.com/ylecun/status/2044733681198043187">A link that&#8217;s been making the rounds</a> reminded me of something I wrote last year: <strong><a href="https://technicallyoptimistic.substack.com/p/the-most-important-thing-we-can-do">the most important thing we can do for data is preserve it</a></strong>. As more of the internet moves behind APIs, logins, and AI interfaces, the default shifts from public-but-fragile to private-and-inaccessible. And the scope of what needs preserving just got bigger. A decade ago, it was pages and datasets. Now it&#8217;s agent interactions &#8212; the conversations, the tool calls, the reasoning traces that are starting to stand in for what used to be documented decisions. An agent does the research, drafts the reply, negotiates the terms. If nobody captures the session, the decision exists nowhere at all. The individual version of this is why <a href="http://r.github.io/morph">Morph</a> exists &#8212; capture the trace, keep the receipts. It&#8217;s what I called a RAID array for civilization: redundancy across drives, geographies, institutions, and funding models, so no single hard drive, agency, or administration can silently lose the only copy. Preserving the open web stopped being passive. Preserving agent memory hasn&#8217;t even started yet.</p><p>And while the machines learn, someone is teaching them. <a href="https://x.com/mylordbebo/status/2042955292934025656">This clip</a> is getting framed as new. It isn&#8217;t. It&#8217;s how humanoid robotics gets trained now. <a href="https://www.pi.website/join-us">Pi</a> and Google run teleop farms. Tesla pays people in motion-capture suits. Sunday ships capture gloves. And in lower-cost labor markets, workers repeat simple tasks for hours so models can learn how to move. <strong>There&#8217;s no Common Crawl for robot data; it has to be made. </strong>The same labor arbitrage that trained AI on text is showing up in physical space. The output isn&#8217;t words anymore. It&#8217;s bodies.</p><p><a href="https://www.linkedin.com/posts/baileypumfleet_open-source-is-dead-thats-not-a-statement-activity-7450177472979058688-yN0l">Bailey Pumfleet&#8217;s post</a> reads as provocation first, argument second. The observation is real: AI makes scanning and exploiting code cheaper at scale, and security pressure on open projects is rising. But &#8220;audits are expensive&#8221; to &#8220;open source is dead&#8221; is a leap, and I think Bailey is absolutely wrong. (Disclosure: Thunderbird and Thunderbolt are projects at Mozilla.) The same forces making attacks cheaper make audits, forks, and alternatives faster. Last year, Thunderbird committed on the record that <a href="https://blog.thunderbird.net/2025/04/thundermail-and-thunderbird-pro-services/">Thunderbird is and always will be free and open source</a>, even as the team builds paid services around it. This month, the same team shipped <a href="https://www.theregister.com/2026/04/16/mozilla_thunderbolt_enterprise_ai_client/">Thunderbolt</a>, a self-hostable open-source enterprise AI client pitched directly against Microsoft Copilot, ChatGPT Enterprise, and Claude Enterprise. <strong>Open source isn&#8217;t dying. It&#8217;s showing up in the places where closed platforms have gotten too comfortable.</strong></p><p>To end on something completely different. This is a great episode for the nerds who haven&#8217;t listened to <a href="https://www.nytimes.com/column/the-daily">The Daily</a> yet: <a href="https://www.nytimes.com/2026/04/09/podcasts/the-daily/satoshi-nakamoto-bitcoin-creator.html">the Satoshi teardown</a>. I&#8217;m an avid listener. When I was recording <a href="https://technicallyoptimistic.substack.com/">Technically Optimistic</a>, my producer and I had a running refrain every time a take landed too earnest or too probing: Sounds too much like Michael Barbaro. Which is another way of saying The Daily&#8217;s format makes narrative journalism look easy, and it isn&#8217;t: Whoever&#8217;s hosting on a given day is working inside Barbaro&#8217;s template, and on most days you can hear the effort. This episode isn&#8217;t &#8220;Who is Satoshi?&#8221; It&#8217;s a methodical teardown of a 17-year mystery using stylometry, timelines, and Bayesian reasoning to narrow thousands of candidates down to one plausible person. What makes it land is that even after all that evidence, it&#8217;s still not definitive. You walk away less convinced that the mystery is solved and more with a gorgeous story of how much of the modern internet was built by people who could disappear completely.</p>]]></content:encoded></item><item><title><![CDATA[Save the prompts, save the stack]]></title><description><![CDATA[You built the stack. Now build the eval. Gemma 4 26B vs Qwen 3 Coder 30B, DIY.]]></description><link>https://newsletter.ownersnotrenters.com/p/save-the-prompts-save-the-stack</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/save-the-prompts-save-the-stack</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Wed, 22 Apr 2026 13:50:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rGEl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rGEl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rGEl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!rGEl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!rGEl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!rGEl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rGEl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2702856,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/194932644?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rGEl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!rGEl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!rGEl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!rGEl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff174c1fc-a14a-4f74-8ec3-30864d7bef42_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three weeks ago, <a href="https://deepmind.google/models/gemma/gemma-4/">Gemma 4 26B A4B dropped</a>. <a href="https://deepmind.google/models/gemma/gemma-4/">Google called it their most intelligent open model to date</a>. The benchmark roundups are out: One put the larger 31B sibling at Master level on Codeforces, a tier most rated competitors never reach. </p><p>If you&#8217;ve been watching any of this, you know the feeling. Every new model announcement brings a flicker of the same question: Am I behind? Is this one better for what I do? This week is about where that feeling comes from &#8212; and how to put yourself on the other side of it.</p><p>Here&#8217;s what&#8217;s happening under the hood. OpenAI, Anthropic, Google &#8212; the labs running the hosted models you&#8217;d otherwise pay for &#8212; evaluate every release candidate against rubrics they own, on data they&#8217;ve collected. Why shouldn&#8217;t you?</p><p>This used to be optional. When models changed twice a year and everyone was running the same three, you could coast on vibes and leaderboards. That window is closed. Open-weight releases are accelerating &#8212; per the <a href="https://epoch.ai/data-insights/open-weights-vs-closed-weights-models">Epoch AI Capabilities Index</a>, open models now trail state-of-the-art closed-source by about three months on average. The swap decision is now monthly, sometimes weekly.</p><p>And that&#8217;s the easy version. The world we&#8217;re building toward is smaller, more specialized models &#8212; one for your codebase, one for your data, one for the shape of your work &#8212; not a single hosted monolith doing everything poorly for everyone. Ownership at that scale isn&#8217;t just about running the weights. It&#8217;s about knowing which ones are worth running. Without a standing eval, you can&#8217;t tell. You&#8217;re either upgrading on faith, not upgrading at all, or &#8212; worse &#8212; running a fleet of models you can&#8217;t compare. All three are expensive.</p><p>Evaluation is how owners tell the difference. Renters don&#8217;t need it; the platform decides for them. Owners do.</p><p>If you followed along with the last DO version of the newsletter, <a href="https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server">you&#8217;ve got a local coding model running on your own machine</a> &#8212; llama-server, Qwen3 Coder 30B, OpenCode wired in. A full AI coding setup on hardware you own. You own the runtime now. But evaluation &#8212; the step that tells you whether a new model is actually better for you &#8212; is still missing. Closing that gap is the point of this piece. </p><p>On a hosted API, you pick from a menu: capability, speed, cost. Locally, the selection problem gets wider: weights, runtime, quantization, prompt format, harness &#8212; the stack of choices a hosted API makes for you. And the evaluation step the platform quietly did on top? That just landed on your desk, too. Every release is a live swap decision &#8212; just like Gemma dropping against Qwen.</p><p>What you need is a way to save the prompts you&#8217;re already writing &#8212; the real work, the stuff you kept &#8212; so a new model can be tested against them. This is one of the reasons I built <a href="http://r.github.io/morph">Morph</a>: It versions your coding agent sessions the way Git versions your code: every prompt, tool call, and file edit is captured as an immutable trace. Those traces are what you evaluate a new model against. Read on to learn more about why a separate tool is needed &#8212; and how to use it.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><h3>The scorecards won&#8217;t save you</h3><p>Your first instinct is probably to open the scorecards. There&#8217;s signal there. But there isn&#8217;t an answer.</p><p>Google&#8217;s<a href="https://ai.google.dev/gemma/docs/core/model_card_4"> Gemma 4 card</a> puts the 26B at 77.1% on LiveCodeBench v6 &#8212; fresh competitive-coding problems designed to minimize training contamination. (For context: Gemma 3&#8217;s best score on the same benchmark was around 29%. Alibaba&#8217;s<a href="https://huggingface.co/Qwen/Qwen3.5-35B-A3B"> Qwen 3.5-35B-A3B card</a> reports a Codeforces figure plus a <a href="https://openai.com/index/introducing-swe-bench-verified/">SWE-bench Verified score</a>, where the model has to land a passing patch on a real GitHub issue.) On paper, each card makes its own model look ahead on at least one row. Every row looks comparable. None of them actually are.</p><p>(Quick decode: &#8220;A4B&#8221; and &#8220;A3B&#8221; are active parameters &#8212; the portion doing work per token &#8212; versus the 26B and 35B totals on disk. Smaller active, faster inference.)</p><p>Here are three things worth noticing every time you read a model card:</p><ol><li><p><strong>What&#8217;s missing.</strong> Gemma&#8217;s card has no SWE-bench verified row. Qwen&#8217;s does: 69.2. You can quote Qwen&#8217;s number, but you can&#8217;t compare it to Gemma&#8217;s &#8212; because Gemma didn&#8217;t post one. No row, no number. A public head-to-head on that benchmark doesn&#8217;t exist yet.</p></li><li><p><strong>The methodology footnote.</strong> Qwen&#8217;s Codeforces result is footnoted &#8220;evaluated on our own query set&#8221; &#8212; they wrote the problems and scored themselves on them. Google&#8217;s Codeforces figure has no such footnote. Two numbers under the same header, problem sets we can&#8217;t confirm match. Not a comparison. A naming coincidence.</p></li></ol><ol start="3"><li><p><strong>Arena scores measure preference, not capability. </strong>On Arena AI&#8217;s open-source leaderboard (April 19): Gemma 4 26B A4B at 1439 &#177; 8, Qwen 3.5-35B-A3B at 1396 &#177; 5. Pairwise human votes on prompts from whoever showed up &#8212; a vibes test at scale. Useful for chat quality; not an answer to whether a model will fix your broken tests.</p></li></ol><p>The structural problem, per<a href="https://www.normaltech.ai/p/open-world-evaluations-for-measuring"> Kapoor and Narayanan</a>&#8217;s newsletter last week, is whatever is precise enough to benchmark is precise enough to optimize for. And even if the comparisons were clean, they still wouldn&#8217;t be your apples to their oranges &#8212; which is the asymmetry Morph is built to close.</p><h3>Wait &#8212; you&#8217;re using an AI to grade an AI?</h3><p>Yes. The technique is called LLM-as-a-judge, and it&#8217;s now standard practice. The canonical paper is<a href="https://arxiv.org/abs/2306.05685"> Zheng et al., &#8220;Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena.&#8221;</a> Frontier judge models agree with human evaluators at over 80%, roughly the rate humans agree with each other. The paper also names the known failure modes: position bias (favors the first answer it sees), verbosity bias (rewards longer answers), and self-enhancement bias (rates its own kin more kindly). Keep those in mind.</p><p>Frontier grades, open model runs. Call it distillation of judgment: the closed model&#8217;s evaluation sense compressed into a cheap scoring pass on your own work.</p><p>Which leaves one thing to sort out: What does the judge actually grade? Promptfoo needs prompts. The ones you&#8217;ve been writing all week. And unless you were already saving them, they&#8217;re gone.</p><h3>Git is at the wrong level</h3><p>Git is a tool for tracking changes. Every version of every file, hashed by content, snapshotted at every commit. Over time, those snapshots pile up into a complete, searchable history of every state the project has ever been in. Git is, at its core, a time machine for bytes.</p><p>That design was right for code written by humans. It may be the wrong design for code written with an agent. The file tree is now the output of a probabilistic process, and the interesting part isn&#8217;t the bytes. It&#8217;s the prompt that produced them. It&#8217;s the tool calls the agent made. It&#8217;s the three wrong turns before the agent settled on the one you kept. Git stores files, not runs. You commit, and the shell history scrolls past the prompt that got you there.</p><p>This is the problem I built Morph for. I&#8217;d commit a fix, look at it a week later, and have no idea what I&#8217;d asked the agent to land on it. Morph records at the right level: Every agent session becomes an immutable run with a full trace. It sits next to Git in .morph/ and doesn&#8217;t interfere. You keep committing with Git. Morph keeps the receipts.</p><p>The eval use case fell out of that. Once the prompts are saved, you can replay them against any model. Which is what <a href="https://github.com/r/morph-tap">Tap</a> does. It&#8217;s another tool I built, one that reads Morph&#8217;s traces and turns them into a runnable eval.</p><h3>Turn a week of work into a test suite</h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;8d459446-65d7-4c80-bf7c-87ec113e4ad9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">tap extract \
  --provider ollama:qwen3-coder:30b \
  --judge-provider openai \
  --judge-model gpt-5.4 \
  --output eval.yaml</code></pre></div><p><code>--provider</code> names the model under test &#8212; the same Qwen3 Coder 30B you&#8217;ve been running all week. <code>--judge-provider</code> and <code>--judge-model</code> point at the frontier as grader.</p><p>Tap classifies each turn as CREATE_CODE, MODIFY_CODE, or FIX_BUG and generates a rubric per turn. More on what makes a rubric actually work in a minute.</p><h3>Run it&#8230;</h3><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;9c4bb8f1-6ada-4a11-ae2f-50b936e28da6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">export OPENAI_API_KEY=...
promptfoo eval -c eval.yaml</code></pre></div><p>The first run takes a while. Local model doing real inference, frontier grading every output. Grab a coffee.</p><p>The first time I tried it, I came back and the pass rate was zero. Not &#8220;low.&#8221; Not &#8220;mostly passing.&#8221; Zero out of 17 &#8212; on code that had shipped, was in main, and I&#8217;d been using all week.</p><p>Either Qwen was dramatically worse on a second pass or the eval was wrong. I opened the first failure.</p><p>The bug was an early return before a loop that should have run. Qwen deleted the right one. But the function also had a second return &#8212; a valid guard clause. And the judge, reading a rubric that said only &#8220;fix the bug and restore correct behavior,&#8221; saw a return, shrugged, and marked it wrong. Technically correct. Operationally useless.</p><p>This is a known failure mode.<a href="https://arxiv.org/abs/2602.05125"> Shen et al. (2026)</a> show that naive rubrics can actually degrade an LLM judge&#8217;s accuracy below a no-rubric baseline &#8212; a 13-point drop on JudgeBench. The fix is decomposition: rubrics that enumerate the specific constructs the judge should and shouldn&#8217;t see, so the verdict hinges on something concrete rather than a general notion of correctness.</p><p>So&#8230;. I had Tap do rubric generation with an LLM, too. For each classified turn, it prompts a frontier model to produce a code-aware rubric tied to the actual change: which constructs must be preserved, which must change, what observable behavior constitutes a pass. One model writes the rubric, a different model judges against it.</p><p>I reran it. Qwen came back at 100%, which makes sense: It&#8217;s the model that wrote the code. Graded against a rubric built for the change it made, it should pass.</p><p>The rubric was wrong, not the model. Generic rubrics are how you lie to yourself with a benchmark.</p><h3>Now, the real test</h3><p>One line in the YAML:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;yaml&quot;,&quot;nodeId&quot;:&quot;f73e7fa8-96f5-49bf-878e-7816ebd7aec7&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-yaml">providers:
  - ollama:qwen3-coder:30b
  - ollama:gemma4:26b</code></pre></div><p>Rerun. Same eval set, same rubrics, two models side by side.</p><h3>An honest comparison</h3><p>Qwen 3 Coder 30B and Gemma 4 26B tied on my traces. Not &#8220;within a point.&#8221; Tied. Same pass rate, same failure modes.</p><p>It deserves a caveat. My traces are toy work &#8212; refactors, small agents, weekend experiments. The kind of prompts where two competent coding models should converge. There&#8217;s not much room between them on a 200-line utility. That&#8217;s the method telling you the easy cases really are close. The difference shows up as the work gets harder &#8212; more files, longer horizon, real tool-calling chains, code that has to integrate with something I didn&#8217;t write. That&#8217;s where models that look the same on HumanEval stop looking the same in practice.</p><p>It&#8217;s an argument for building this pipeline now, so it&#8217;s there when you need it. Once Morph is recording and Tap is extracting, rerunning an eval is a one-line YAML edit. A new model drops &#8212; add it to the providers list, rerun, read the diff. What was a project the first time becomes a background check the second. The ten minutes it takes you the morning a new Qwen or Gemma drops is the cost of never being surprised by them again.</p><p>Generic benchmarks are a tiebreaker, not a decision. The set that matters is the one you&#8217;re generating every day. Morph saves it. Tap extracts it. Promptfoo runs it. The frontier grades it. You decide.</p><p>One ask. If you're coding with agents, <a href="https://r.github.io/morph">install Morph</a> and let it record for a week. It's open source, it sits next to Git, it doesn't care what agent you run. I've been using it on my own work, but "works on my machine" is the weakest eval there is. The pipeline in this piece only matters if the trace layer is solid across codebases that aren't mine. Break it on yours. File issues. Tell me what's missing. The whole thing gets better the more people it's recording for.</p><p>Your evals are already on your laptop. Go look at them &#8212; and tell me what you find. Drop what you ran, what you saw, and where the eval surprised you in the comments. I&#8217;ll read every one and fold the best into the next issue.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/save-the-prompts-save-the-stack/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/save-the-prompts-save-the-stack/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Closing the Open-Source Gap]]></title><description><![CDATA[I scored 42 subcategories of the open-source AI stack. The models aren't the problem.]]></description><link>https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Mon, 13 Apr 2026 14:55:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ey1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ey1b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ey1b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!Ey1b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!Ey1b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!Ey1b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ey1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:498408,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/193802654?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ey1b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!Ey1b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!Ey1b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!Ey1b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50074a0-3c8b-49ff-826c-5e6ba74c6cb6_1536x1024.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p><a href="https://docs.google.com/spreadsheets/d/1ApSQ9r1sTsLcUiwBPWU2CWJdgnJVcVrTedivJJ68ooQ/edit?usp=sharing">Go ahead, open it. It&#8217;s a lot of red.</a></p><p>What you're looking at is the open-source AI stack &#8212; every layer of it, from hardware and chips up through model weights, datasets, developer tools, documentation, licensing, and safeguards, scored against its closed-source equivalent. The breakdown comes from <em><a href="https://arxiv.org/abs/2405.15802">Unpacking Open Source Artificial Intelligence: Towards a Framework for Openness in Foundation Models</a></em>. I pointed agents at each one, had them read real repos, compare them to closed-source equivalents, and score across 10 criteria. (If you're curious, hit me up, and maybe I'll package up the code.) If you're actually trying to piece together an open-source AI deployment &#8212; stitching inference servers to tooling to compliance &#8212; you're running into two problems at once: what's blocking you today, and what nobody's building for tomorrow. This is a map of both.</p><p><strong>The headline:</strong> Average maturity is 3.2 out of 5. Enterprise readiness averages 2.3.</p><p>Works in demos. Dies in procurement. Maybe that&#8217;s why every engineering team that would prefer to own their inference is defaulting to closed APIs: Not because the models are worse, but because nobody&#8217;s staking a production SLA on a GitHub repo with no support contract. The preference exists. The plumbing doesn&#8217;t.</p><p>Only one subcategory hits a 4 on enterprise readiness: ML frameworks &#8212; PyTorch, TensorFlow, JAX &#8212; the things that have had a decade of production hardening. Everything else? No uptime guarantees. No VPC isolation. No AD integration. Closed platforms don&#8217;t win on the model. They win on the contract.</p><p>The developer experience is the other gap. Integrating the OpenAI API involves five-ish lines of code. Deploying the open-source equivalent? Docker, reverse proxies, manual model management. Teams with a six-week ship date, of course, are going to pick the thing that works today. And every team that makes that call &#8212; reasonably, defensibly &#8212; translates to another year of lock-in that gets harder to unwind later. (And more expensive when the pricing changes, as 135,000 OpenClaw users just learned.)</p><p>Licensing scored the lowest in the entire spreadsheet. There are no templates that address model output ownership, training data rights, or prompt injection liability. Every AI startup either adopts a closed platform&#8217;s terms wholesale or pays $50K+ for custom legal drafting. That&#8217;s not a technical gap. It&#8217;s an institutional vacuum.</p><p>Of course, this spreadsheet is almost certainly wrong in places. If you&#8217;re deep in any of these layers and you see something I missed, tell me: <a href="https://x.com/raffihack">@raffihack</a> on X, or comment below.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap/comments"><span>Leave a comment</span></a></p><h4><strong>The Bright Spots Are Real</strong></h4><p>Deployment, inference code, base weights, and training code all scored 4 on overall maturity. vLLM, llama.cpp, HuggingFace TGI are production-grade today. Strong tools, no wrapper.</p><p>The models aren&#8217;t the problem.</p><p>Open-weight models now trail the closed frontier by roughly three months. That&#8217;s <a href="https://epoch.ai/data-insights/open-weights-vs-closed-weights-models/">Epoch AI&#8217;s Capabilities Index</a> talking &#8212; a composite score across 37 benchmarks, updated continuously, built in collaboration with Google DeepMind. On MMLU specifically, the gap collapsed from 17.5 percentage points to under 1 in about a year. DeepSeek-R1 matched o1-class reasoning at a reported training cost of $6M. Qwen3.5 scores 88.4 on GPQA Diamond, ahead of everything except the most expensive closed options. On a single gaming GPU, you can run open-weight models matching frontier performance from nine months ago.</p><p>Three months behind on capabilities. And closing.</p><p>Even Mythos &#8212; the model Anthropic said was too dangerous to ship &#8212; isn&#8217;t an argument against open-source models being smart enough. AISLE researchers replicated several of its headline vulnerability findings with openly available models. Alex Stamos &#8212; Stanford&#8217;s former internet security chief, ex-CISO at Facebook and Yahoo &#8212; estimates six months before open-weight models close the rest of that gap.</p><p>But three months isn&#8217;t a law of physics. It&#8217;s a snapshot. <span class="mention-wrap" data-attrs="{&quot;name&quot;:&quot;Nathan Lambert&quot;,&quot;id&quot;:10472909,&quot;type&quot;:&quot;user&quot;,&quot;url&quot;:null,&quot;photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!RihO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fedcdfb-e137-4f6a-9089-a46add6c6242_500x500.jpeg&quot;,&quot;uuid&quot;:&quot;b64ad367-7e2e-4573-a8cf-d1231b344207&quot;}" data-component-name="MentionToDOM"></span> makes a fair counterpoint: as frontier labs push into domains that aren&#8217;t on the public web &#8212; proprietary environments, long-horizon agentic work, specialized RL pipelines &#8212; the gap could widen again.</p><p>Which means two things need to be true at once. We need people working on models &#8212; the work DeepSeek, Qwen, and Meta are doing matters in a world where every month of lag is a month where someone signs a closed contract instead. But we also need people investing in the rest of the stack, because even when the models are competitive, teams are still defaulting to closed platforms. Not because the model is worse. Because the model is the only part that&#8217;s ready.</p><p><a href="https://www.deloitte.com/us/en/what-we-do/capabilities/applied-artificial-intelligence/content/state-of-ai-in-the-enterprise.html">Deloitte&#8217;s 2025 survey</a> found that nearly 60% named legacy integration and risk/compliance &#8212; not model quality &#8212; as their top barriers to deploying agentic AI. The 2026 follow-up (3,235 leaders, 24 countries) put insufficient worker skills at the top of the list, with legacy data and infrastructure right behind. Nobody in procurement is blocking on benchmarks.</p><p>The capability gap is a &#8220;months&#8221; problem. The packaging gap is a &#8220;years&#8221; problem. And right now, almost all the energy is going to the part that&#8217;s already closest to parity.</p><p>Enterprises are signing multi-year contracts, building integrations, and training teams on specific APIs. Every quarter that open source doesn&#8217;t have a credible enterprise story, those defaults harden. Procurement doesn&#8217;t re-evaluate because a benchmark improved. It re-evaluates when something is obviously easier, obviously cheaper, and obviously supported.</p><p>We&#8217;ve seen this movie before. In 2002, Linux had the kernel but not the enterprise story: no certifications, no vendor support, no one willing to put it in the data center with a pager attached. Red Hat, SUSE, and Canonical didn&#8217;t build a better kernel. They built the wrapper. They made it adoptable. That&#8217;s what turned an ideology into an industry. Ask Sun how not shipping the wrapper in time worked out.</p><p>The open-source AI stack is at that same inflection point. What&#8217;s missing is the boring stuff: the SLAs, the compliance tooling, the five-line integration. That&#8217;s not a research problem. It&#8217;s an engineering and institutional problem. And those are the kinds of problems this community has solved before.</p><p>We&#8217;re not losing on the model. We&#8217;re losing on the paperwork.</p><p>Look at the gap map. Find a red zone you know how to fix. Maybe that&#8217;s compliance tooling. Maybe it&#8217;s a five-line SDK. Maybe it&#8217;s the ToS template that doesn&#8217;t exist yet. Maybe you&#8217;re training the next open-weight model that keeps the three-month number from slipping. All of it counts.</p><p>If you&#8217;re building in any part of this stack &#8212; models, infrastructure, tooling, licensing, documentation &#8212; I want to hear from you. Reply here, DM me, yell at @raffihack. I&#8217;ll feature what you&#8217;re working on.Let&#8217;s close this gap.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/closing-the-open-source-gap?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h4><strong>What I&#8217;m Reading This Week</strong></h4><p><strong>Anthropic built a model that found zero-days in every major OS and browser</strong> &#8212; a 27-year-old OpenBSD bug that survived five million automated scans &#8212; and then didn&#8217;t ship it. Instead:<a href="https://www.anthropic.com/project/glasswing"> Project Glasswing</a>. $100M in credits to a consortium (AWS, Apple, Microsoft, Cisco, Linux Foundation) to harden infrastructure before Mythos-class capabilities proliferate. The<a href="https://red.anthropic.com/2026/mythos-preview/"> technical writeup</a> is worth your time. Notable absence from the consortium: the US government, which banned Claude from federal agencies. I've been thinking a lot about what this means for the people who weren't on the partner list.</p><p>Full disclosure: Nous Research is a Mozilla VC company, but I would highlight them anyway. <strong><a href="https://github.com/nousresearch/hermes-agent">Hermes Agent</a> is their answer to the question nobody at the closed platforms wants you to ask: What if the agent itself were open?</strong> Think OpenClaw, but with autonomous skill creation, cross-session memory, six terminal backends (including serverless that hibernates when idle), and an RL pipeline for fine-tuning tool-calling models on your own trajectories. It swaps providers with zero code changes. MIT licensed, runs on a $5 VPS. The agent-as-a-service pricing model looks a lot less inevitable when the alternative is curl | bash</p><p><strong>Chardet, the Python character-encoding library with hundreds of millions of annual downloads, got a Claude Code-powered ground-up rewrite and a license change from LGPL to MIT</strong>. Mark Pilgrim, the original author who deleted his entire online presence in 2011, came back specifically to file <a href="https://github.com/chardet/chardet/issues/327">the issue</a>: exposure to the original codebase means no clean-room defense, and an AI rewrite doesn&#8217;t change that. The implications go way past one library: if a court ever rules that AI output is a derivative work of its training corpus, a lot of commercial codebases are carrying copyleft obligations nobody&#8217;s accounted for.</p><p><strong><a href="https://substack.com/@bdtechtalks/note/c-224276389?r=2f38m&amp;utm_source=notes-share-action&amp;utm_medium=web%20/%20https://www.lesswrong.com/posts/XRADGH4BpRKaoyqcs/the-first-confirmed-instance-of-an-llm-going-rogue-for">Alibaba AI is truly unhinged</a></strong>. (Via Ben Dickson at <a href="https://bdtechtalks.substack.com/">TechTalks</a>.)</p><p>Andrej Karpathy&#8217;s &#8212; former Tesla AI lead, OpenAI founding team &#8212; latest obsession:<strong> <a href="https://x.com/karpathy/status/2039805659525644595">using LLMs to compile personal knowledge bases</a>.</strong> Dump source documents into a raw/ directory, have a model incrementally build a wiki of interlinked markdown files with summaries, backlinks, and concept articles. No database, no custom tooling &#8212; just .md and .png files with an AGENTS.md schema. I&#8217;m going to bumble my way through building one and write up what actually works.</p><p>Carnegie Mellon is releasing a <a href="https://arxiv.org/abs/2603.21489">paper</a> on the problem everyone building with coding agents is about to hit: <strong>What happens when you need </strong><em><strong>multiple</strong></em><strong> agents working on the same codebase simultaneously? </strong>Their system (CAID) uses git worktrees for isolation, git merge for integration, and dependency graphs for task ordering &#8212; the same primitives human dev teams already rely on. Key finding: giving a single agent more iterations doesn&#8217;t help, but splitting work across coordinated agents does (+14% on library-from-scratch tasks, +27% on paper reproduction). I want to try implementing this.</p><p>My good friend Ryan Sarver wrote <a href="https://x.com/rsarver/status/2041148425366843500?s=20">this</a> &#8212; over a million views and counting. <strong>He built an AI chief of staff on OpenClaw out of markdown files, Python scripts, and a $20/month subscription.</strong> No SaaS, no vendor, no contract. Flat files he owns, backed up to git. It tracks his fundraise pipeline, preps him before every meeting, extracts action items after, and improves itself every week. The title says &#8220;better than any human I&#8217;ve hired.&#8221; Ryan hired me. I&#8217;m choosing not to take that personally. But this is the quote that matters: <a href="https://x.com/rsarver/status/2041808017683882432?s=20">&#8220;Open source is an unmatched engine for turning community ideas and energy into progress. A week from idea to full native integration. Closed source is fast, but open source is something else entirely.&#8221;</a> I&#8217;m building my own version and will write it up for you soon.</p><p><strong><a href="https://buttoncomputer.com/">Button</a> is a<a href="https://gizmodo.com/button-an-ai-gadget-from-former-apple-staff-is-giving-a-whole-lot-of-nothing-2000596498"> $180 AI pin from ex-Apple Vision Pro engineers</a></strong> that BLE-tethers to your iPhone and proxies every utterance to an unspecified cloud LLM. It might run something on-device. Nobody knows, including, apparently, the press. Eight bucks a month for unspecified Pro features. No Android. I keep waiting for AI hardware to be more than Siri in a lanyard, and it keeps shipping as a $180 curl to someone else&#8217;s API. My friend Ayah Bdeir<a href="https://www.technologyreview.com/2025/06/18/1118943/ai-hardware-open/"> nailed the structural reason</a> in MIT Tech Review: when the hardware layer is closed, every device converges on the same interaction model &#8212; press, talk, wait for cloud. You can&#8217;t iterate on form factor if you can&#8217;t touch the board. She&#8217;s now CEO of Current AI, which just<a href="https://restofworld.org/2026/current-ai-bhashini-open-source-handheld-device-2/"> demoed an open-source handheld at the India AI Summit</a> &#8212; local inference, no cloud round-trip, 22 languages via Bhashini, full schematics going to GitHub. We talk about open source like it&#8217;s a software problem. The hardware layer is just as locked, and it&#8217;s why every AI device on the market feels exactly the same.</p><p><strong><a href="https://news.ycombinator.com/item?id=47633396">Anthropic told every tool built on top of Claude: Use our API and pay per token or lose access.</a></strong> Starting April 4, subscribers can no longer route their subscription through third-party agent harnesses like OpenClaw. The stated reason is capacity: A single OpenClaw user consumes 6-8x the resources of a human subscriber, and subscriptions weren&#8217;t built for agentic workloads. The unstated context? OpenClaw&#8217;s creator had just joined OpenAI, and Anthropic had just shipped competing features into Claude Code. <strong>If you needed a concrete example of what platform dependency risk looks like in the AI stack, this is it. </strong>135,000 active instances woke up one Saturday to find their cost structure had changed overnight. Some users are reporting 50x increases. Others are switching to local models.</p><p><strong>Google Research open-sourced <a href="https://github.com/google-research/timesfm">TimesFM</a>, a foundation model for time-series forecasting </strong>&#8212; not &#8220;what word comes next?&#8221; but &#8220;what number comes next?,&#8221; applied to server load, revenue, error rates, stock prices, energy consumption. 200M parameters, 16k context length, PyTorch or JAX, Apache 2.0. Most teams doing this work are still hand-rolling statistical models or paying for a proprietary API.</p><p>Finally, file under <strong>DO NOT GET ME STARTED</strong>&#8230;: <strong><a href="https://www.nature.com/articles/d41586-026-01105-7">The White House proposed slashing NSF&#8217;s budget by 55%</a></strong> to $4 billion while claiming it will &#8220;maintain funding&#8221; for AI and quantum research. Read the <a href="https://www.whitehouse.gov/wp-content/uploads/2026/04/budget_fy2027.pdf">fine print</a>: basic AI research at NSF would be cut 32%, basic quantum 37%. The &#8220;maintained&#8221; funding goes to applied research at Defense and Energy. So the plan is to defund the pipeline that produces the science and then act surprised when there&#8217;s nothing left to apply. If you&#8217;re wondering why ownership of the AI stack matters, this is the policy environment you&#8217;re building in: The public funding for foundational research is being gutted while the administration tells you everything is fine because DARPA got a raise.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Your Mac Is a Model Server]]></title><description><![CDATA[(Here's how to treat it like one.)]]></description><link>https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Wed, 01 Apr 2026 12:57:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TbT0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TbT0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TbT0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!TbT0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!TbT0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!TbT0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TbT0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic" width="728" height="485.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:268501,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/192798317?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TbT0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 424w, https://substackcdn.com/image/fetch/$s_!TbT0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 848w, https://substackcdn.com/image/fetch/$s_!TbT0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 1272w, https://substackcdn.com/image/fetch/$s_!TbT0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c932006-d6e0-4bd0-b704-dc2903e48a71_1536x1024.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>You know that moment on a plane where you open your laptop, pull up your coding agent, and remember that it lives on someone else&#8217;s server? United&#8217;s wifi is doing its thing &#8212; which is to say, nothing &#8212; and you&#8217;re sitting there with an M4 Max that could run a 35-billion-parameter model but can&#8217;t complete a function call. This note is about fixing that, and a few hundred other decisions like it.</p><p>There are guides for running open-weight models locally. What&#8217;s missing is which model, which agent, and why. So, that&#8217;s what this is. By the end of this, you&#8217;ll have a working Claude Code equivalent running (kinda) entirely on your own hardware.</p><h4><strong>What You're Building</strong></h4><p>Three pieces: a local inference server (llama.cpp) that speaks OpenAI-compatible HTTP, a model you&#8217;ve chosen consciously with a license you&#8217;ve actually read, and an agent that routes tasks to it.</p><p>The agent I&#8217;m replacing Claude Code with is OpenCode &#8212; same terminal TUI feel, same agentic loop, reads your repo, proposes changes, executes tools, commits. If you&#8217;d rather stay in your editor, VS Code + Continue gets you something close to Cursor pointed at your local server. This guide focuses on OpenCode. The rest of the setup is identical either way.</p><p>Cursor bills me every time I look at it. This runs on hardware already sitting on my lap, and the marginal cost of the next token is zero.</p><h5>Step 1: Install the Runtime</h5><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;4c25312f-7fcc-41bb-a313-1439ab54892d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">brew install llama.cpp fzf hf</code></pre></div><p>llama.cpp is the inference server. Metal GPU support is on by default for Apple Silicon. fzf is needed by OpenCode for fuzzy search. hf is the official Hugging Face CLI &#8212; the right way to download models.</p><p>Confirm it worked:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;6aeda2e4-4db2-45b7-9cae-f8c08611520f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">llama-server --version</code></pre></div><h5>Step 2: Pick and Download Your Model</h5><p>The benchmark tables are mostly useless for this decision. Three questions matter: Does it fit in your RAM, does it call tools reliably, and can you actually build on the license?</p><p>Start with how much RAM you have:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;e937946c-34d5-4d06-ad1b-3bf027579b37&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">system_profiler SPHardwareDataType | grep -E &#8220;Chip|Memory&#8221;</code></pre></div><p><strong>16GB</strong><br>&#8594; Model: <em>Qwen2.5-Coder-7B-Instruct</em><br>&#8594; License: Apache 2.0<br>&#8594; Size: ~5GB<br>&#8594; Fast, reliable, great starting point</p><p><strong>32&#8211;48GB</strong><br>&#8594; Model: <em>gpt-oss-20b</em><br>&#8594; License: MIT<br>&#8594; Size: ~12GB<br>&#8594; Best for tool use + agent workflows</p><p><strong>64GB+</strong><br>&#8594; Model: <em>Qwen3.5-35B-A3B</em><br>&#8594; License: Apache 2.0<br>&#8594; Size: ~22GB<br>&#8594; More powerful, MoE architecture</p><p>Download commands:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;35c44ea1-3225-4a57-9cf0-83e08590ad51&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash"># 16GB
hf download Qwen/Qwen2.5-Coder-7B-Instruct-GGUF \
  qwen2.5-coder-7b-instruct-q4_k_m.gguf \
  --local-dir ~/models

# 32-48GB
hf download ggml-org/gpt-oss-20b-GGUF \
  gpt-oss-20b-mxfp4.gguf \
  --local-dir ~/models

# 64GB+
hf download unsloth/Qwen3.5-35B-A3B-GGUF \
  Qwen3.5-35B-A3B-Q4_K_M.gguf \
  --local-dir ~/models</code></pre></div><p>These downloads are large (5&#8211;22GB). Start one; go get coffee.</p><p>The 16GB and 64GB+ models are Q4_K_M - 4-bit quantization, the standard quality/size tradeoff. You lose a small amount of quality, gain a large reduction in size and memory. For most coding tasks, you won&#8217;t notice. The 32-48GB model is different: mxfp4 is how gpt-oss was actually trained, so there&#8217;s nothing to lose.</p><p>All three models in this issue are Apache 2.0 or MIT &#8212; you can build on them commercially without restrictions. (That&#8217;s not true of every popular model.) Before you add anything else to your stack, read the license file in the repo, not the marketing copy on the model card.</p><p>Case in point: yesterday, <a href="https://www.theinformation.com/briefings/alibabas-new-multimodal-ai-model-open-source">Alibaba released Qwen3.5-Omni &#8212; their new multimodal model &#8212; as API-only</a>. No weights, no license file, no download link. The previous version was fully open. The researcher most associated with Alibaba&#8217;s open-source work left the company earlier this month. None of this changes what&#8217;s in your <code>~/models</code> directory right now &#8212; those weights aren&#8217;t going anywhere. But it&#8217;s the kind of signal that makes me want to be better at evaluating alternatives, not worse. Next issue: how to actually do that with Kimi and DeepSeek.</p><h5>Step 3: Start the Server</h5><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;ee03976d-3c31-437a-9d8d-975d3c66dfba&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">llama-server \
  -m ~/models/Qwen3.5-35B-A3B-Q4_K_M.gguf \
  --jinja \
  --host 127.0.0.1 \
  --port 8080 \
  --ctx-size 32768 \
  -ngl 99</code></pre></div><p>Two flags worth explaining:</p><ul><li><p><code>--jinja</code> enables tool-calling. Skip it and your agent will appear to work but silently refuse to call tools. This flag is responsible for most of the &#8220;it won&#8217;t use tools&#8221; failures I&#8217;ve seen.</p></li><li><p><code>-ngl 99</code> offloads all model layers to Metal GPU. Skip it on Apple Silicon and you&#8217;re running on CPU &#8212; ten times slower than it should be.</p></li></ul><p>Wait for this line before doing anything else:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;921ceb53-807a-4027-96bc-15d4dadf8752&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">main: server is listening on http://127.0.0.1:8080</code></pre></div><p>Sanity check:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;02e75098-6d6a-4259-a660-6fa9d8d24936&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl http://127.0.0.1:8080/v1/chat/completions \
  -H &#8220;Content-Type: application/json&#8221; \
  -d &#8216;{
    &#8220;model&#8221;: &#8220;local&#8221;,
    &#8220;messages&#8221;: [{&#8221;role&#8221;: &#8220;user&#8221;, &#8220;content&#8221;: &#8220;say hi in 5 words&#8221;}],
    &#8220;max_tokens&#8221;: 20
  }&#8217;</code></pre></div><p>If you get a response, your stack is working. The first time I ran this I immediately opened Activity Monitor to watch the GPU. Everything after this is just routing clients at it.</p><h5>Step 4: The Agent - OpenCode</h5><p>My friends at <a href="http://anoma.ly">anoma.ly</a> built OpenCode as the open-source Claude Code equivalent. Same terminal TUI feel, same agentic loop. The difference: You&#8217;re not locked to Anthropic&#8217;s models, pricing, or terms.</p><p>(<em><strong>Timing note</strong></em>: As I was literally about to hit send, Anthropic accidentally shipped Claude Code&#8217;s entire source &#8212; 512,000 lines of TypeScript &#8212; in a .map file on npm. Nobody hacked anything. The front door was open. Within hours, a developer named Sigrid Jin used a different coding agent &#8212; OpenAI&#8217;s Codex &#8212; to rewrite the whole harness in Python before sunrise. The repo hit 48,000 stars in a day. A coding agent cloned a coding agent in one session. It&#8217;s days old, legally radioactive, and the author ships a <code>parity_audit.py</code> that&#8217;s refreshingly honest about what&#8217;s missing. I am not recommending you use it. I am noting that the universe has a sense of humor about the rent-vs.-own conversation.)</p><p>I did <code>brew install opencode</code> first. It installed, but it didn&#8217;t work. Thirty minutes later, I found the tap.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;b0d21dbe-27bd-481c-9b98-9a354dd1351e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">brew install anomalyco/tap/opencode</code></pre></div><p>Pre-install the provider package. OpenCode downloads this at startup, but it hangs silently if npm is slow. Do it manually once and you&#8217;ll never hit this:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;50610dd1-452c-4a5d-8a81-5721c7209c73&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">mkdir -p ~/.cache/opencode
cd ~/.cache/opencode
npm install @ai-sdk/openai-compatible</code></pre></div><p>Now, create two config files, nothing else. In <code>~/.config/opencode/opencode.json</code></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;253d88f3-89ab-4a25-b3df-186bac7a4150&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "$schema": "https://opencode.ai/config.json",
  "model": "llamacpp/qwen3.5-35b",
  "provider": {
    "llamacpp": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "llama.cpp (local)",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1"
      },
      "models": {
        "qwen3.5-35b": {
          "name": "Qwen3.5-35B-A3B",
          "tools": true,
          "limit": {
            "context": 32768,
            "output": 8192
          }
        }
      }
    }
  }
}</code></pre></div><p>and in <code>~/.local/share/opencode/auth.json</code></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;b110bb9d-2fe7-4e65-9ce3-6fdfba2439cd&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "llamacpp": {
    "apiKey": "sk-local"
  }
}</code></pre></div><p>Launch (server must be running first in a separate terminal):</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;84be1833-f209-490f-95e7-92f0e194b8da&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">mkdir ~/test-project &amp;&amp; cd ~/test-project
opencode</code></pre></div><p>OpenCode will ask if you want to configure providers. Anthropic, OpenAI, a dozen others. You can skip every single one. You don&#8217;t have a remote platform. You don&#8217;t need a key. That moment &#8212; closing out of a credentials prompt with nothing in it &#8212; is the whole point of this newsletter in one keystroke.</p><p>Want proof that it works? Type this in the input box:`</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;7d818d6f-fb86-460d-a7e4-f22b1592e56e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">write a python script that prints &#8216;hello world&#8217;</code></pre></div><p>It does. Obviously. That&#8217;s not proof of anything except that your wiring is correct. Let&#8217;s make it actually work for its dinner.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;d502db18-b184-40e7-bff1-2cc286f75eaf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">create a tetris clone in typescript that can be served statically out of a dist/ directory</code></pre></div><p>OpenCode maps out a plan, scaffolds the project, writes the code. I open the browser and&#8230;</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;c0c88d5d-d2f7-4e1f-9c61-ea1f10f7eb5e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Uncaught SyntaxError: unexpected token: &#8216;as&#8217; app.js:2:20</code></pre></div><p>One error. I pulled it from the browser console, pasted it back into OpenCode, and it fixed it. Served it again. Played Tetris &#8212; on a model running on my laptop, with no API call, no subscription, no telemetry.</p><p>I should be honest about what that means. If I&#8217;d done this in Claude Code with Opus 4.6, it probably gets it right on the first try. I know it would in Cursor &#8212; I&#8217;ve run this exact test enough times to be bored by it. A local 35B model making one fixable mistake on a from-scratch Tetris clone is genuinely good. It is not frontier-model good. That&#8217;s the tradeoff you&#8217;re signing up for, and you should know it going in.</p><p>That&#8217;s the whole stack: local model, Metal GPU inference, OpenAI-compatible API, open-source agent, tool-calling. Nothing left my machine.</p><h4><strong>What You&#8217;re Actually Getting Into</strong></h4><p><em>The tooling is fast-moving and occasionally broken.</em> OpenCode ships near-daily updates. The standard Homebrew formula lags. The startup hang &#8212; silently trying to download a provider package with no progress indicator &#8212; is a known issue with a simple manual workaround, which is why the setup above pre-installs it. This will improve. Worth knowing what you&#8217;re getting into.</p><p><em>Tool calling is fragile.</em> The model has to be trained for it and templated correctly. --jinja is the most common fix. Second most common: The model you chose wasn&#8217;t trained for tool use. Qwen3.5 and gpt-oss-20b are; not all models are.</p><p><em>Context size costs RAM.</em> The KV cache is the model&#8217;s working memory for a conversation &#8212; it stores computed state for every token in context, across every layer of the model. It grows linearly with context length, and at long contexts can rival the model weights themselves in memory. Start at 32k. Increase only if you need it and have confirmed headroom.</p><p><em>It&#8217;s faster than you might expect. </em>Running Qwen3.5-35B on an M4 Max: it&#8217;s semi speedy! Comfortable reading speed is around 15-20. You are not waiting on this model. Where you will feel it is autocomplete &#8212; round-trip latency for inline suggestions is longer than a hosted API, and for that use case it&#8217;s a real regression. For agent tasks where you kick something off and come back, it&#8217;s a non-issue.</p><p><em>It works on a plane.</em> No wifi, no API, no problem. I&#8217;ve done more useful work in airplane mode with a local model than I ever did frantically tethering before descent. Slower latency is a real tradeoff. Offline is a real feature. Decide which one you&#8217;re optimizing for on any given day.</p><h4><strong>The Decision Framework: What Stays Local, What Goes Cloud</strong></h4><p>Local wins on:</p><ul><li><p>Proprietary code you shouldn&#8217;t be sending to an external API</p></li><li><p>Repetitive, high-volume tasks where cost is the actual constraint</p></li><li><p>Anything where predictable latency matters more than raw speed</p></li><li><p>Anywhere without reliable internet: planes, trains, a cabin, an SCIF</p></li></ul><p>Cloud still wins on:</p><ul><li><p>Tasks that genuinely require frontier capability: complex, multi-step reasoning, novel architecture work</p></li><li><p>Very long context where you don&#8217;t have the RAM to compete locally</p></li><li><p>One-off tasks where setup time exceeds cost savings</p></li></ul><p>The useful test: could a competent senior engineer do this task well? If yes, a good local model probably can, too. If the task requires something closer to &#8220;principal engineer with five years of context on your entire codebase,&#8221; you might still want the cloud.</p><p>The goal isn&#8217;t running everything locally. The goal is making the decision on purpose.</p><p>Now tell me about yours. What model are you running? What&#8217;s your setup? I&#8217;m particularly curious about the Kimi and DeepSeek models &#8212; next issue, let&#8217;s talk about how to actually evaluate and choose between them.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/your-mac-is-a-model-server/comments"><span>Leave a comment</span></a></p><p></p><h4><strong>What I&#8217;m Reading This Week</strong></h4><p>The new SVG engine <a href="https://meodai.github.io/heerich/">Heerich</a> isn&#8217;t open source AI, but it is open source. And gorgeous.</p><p>Everyone&#8217;s arguing about which LLM to run locally. Meanwhile, LeCun&#8217;s lab shipped a <a href="https://arxiv.org/html/2603.19312v1">world model </a>&#8212; a system that doesn&#8217;t predict the next token, it predicts what happens next in a latent representation of the physical world. That distinction matters: token prediction gives you autocomplete; state prediction gives you planning, reasoning, and systems that can actually act on things. LeWorldModel does it in 15M params, one GPU, two loss terms, no pretrained encoder, 48x faster planning than foundation-model approaches. The JEPA bet is that you don&#8217;t need to reconstruct every pixel to understand cause and effect &#8212; just the compressed state that matters. <a href="https://github.com/lucas-maes/le-wm">Code&#8217;s on GitHub</a>.</p><p>I think the surveillance world we&#8217;re creating is generally creepy. (Part of the wonder of human memory is the ability to forget, to get fuzzy.) But I love this trend of people vibe-coding tools they want for themselves, like <a href="https://github.com/silverstein/minutes">this</a> app that makes your intent and decisions searchable by your AI. Of course, this is also the end of every SaaS company on the planet&#8230;</p><p>After virtual-world interaction,  the next thing we all have to think about is robots and physical-world interaction. Maybe I should give <a href="https://www.orcahand.com/">these</a> plans to my son to print for his robot hand&#8230;</p><p>I haven&#8217;t had a chance to play with <a href="https://github.com/danveloper/flash-moe">this</a> yet, but I&#8217;m definitely intrigued. The bare-metal inference engine runs a ~400B parameter MoE model on a laptop (10x larger than the ones I&#8217;m talking about above.) If it works, frontier models don&#8217;t have to live in the cloud,  trading latency for independence.</p><p>Digging into <a href="https://yoonholee.com/meta-harness/">this</a> paper on optimizing the harness w.r.t. end performance.</p><p>Here&#8217;s the scientifically backed <a href="https://news.stanford.edu/stories/2026/03/ai-advice-sycophantic-models-research">version</a> of a <a href="https://www.theatlantic.com/ideas/archive/2025/10/validation-ai-raffi-krikorian/684764/">piece</a> I wrote about sycophancy. Stanford researchers found that AI reinforces users&#8217; harmful prompts 47% more than humans. Turns out humans are more than okay with that.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[All About Open-Source AI]]></title><description><![CDATA[It&#8217;s the future &#8212; but only if we act now.]]></description><link>https://newsletter.ownersnotrenters.com/p/all-about-open-source-ai</link><guid isPermaLink="false">https://newsletter.ownersnotrenters.com/p/all-about-open-source-ai</guid><dc:creator><![CDATA[Raffi Krikorian]]></dc:creator><pubDate>Thu, 26 Mar 2026 15:25:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CX_F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CX_F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CX_F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 424w, https://substackcdn.com/image/fetch/$s_!CX_F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 848w, https://substackcdn.com/image/fetch/$s_!CX_F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 1272w, https://substackcdn.com/image/fetch/$s_!CX_F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CX_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:619460,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.ownersnotrenters.com/i/191862235?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CX_F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 424w, https://substackcdn.com/image/fetch/$s_!CX_F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 848w, https://substackcdn.com/image/fetch/$s_!CX_F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 1272w, https://substackcdn.com/image/fetch/$s_!CX_F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22bb1b0f-188a-451b-b8d0-89b79f6e3419_3353x2514.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The Owners Not Renters Blueprint</strong></p><p>Closed AI is winning because it&#8217;s easier to use, not because it&#8217;s better. That&#8217;s not a permanent condition. It&#8217;s a design problem. And design problems can be solved.</p><p>Most AI coverage doesn&#8217;t treat it as a problem at all. It&#8217;s more focused on benchmarks and funding rounds and whatever shipped this week. This newsletter is for the people downstream of those announcements: the engineers and engineering leaders who have to decide, in a sprint, whether to build on something they don&#8217;t control.</p><p>I believe that you&#8217;re not choosing between open and closed AI. You&#8217;re choosing between owning and renting. Think about it: The landlord sets the price, the context window, the terms of service, and the deprecation schedule. Most of the time you learn about changes in a routine email&#8230;until the one that isn&#8217;t routine &#8212; the one where the model you built on will be gone in 90 days, or the price just doubled. The people sending that email aren&#8217;t malicious. They&#8217;re optimizing for their business. Which is exactly why you need to be building differently.</p><p>We&#8217;ve been here before. By 2003, Internet Explorer had 95% of the browser market. Firefox launched in 2004. IE never recovered, fading slowly at first, then completely. Open standards and open source decentralized control over the core technologies of the web.</p><p>Once again, the ground is shifting. Small models run on hardware that organizations already own. Enterprises are migrating off closed platforms in numbers that don&#8217;t make press releases. Governments are building sovereign AI supply chains. The question isn&#8217;t whether this transition will happen. The question is whether we build the developer experience to make open easier than closed before someone else locks the next layer down &#8212; before the defaults harden and a new landlord inherits the keys.</p><p>That&#8217;s the north star: that openness wins on ease, not principle. Before the window closes.</p><p>Open isn&#8217;t always the right call. In this newsletter, I&#8217;ll tell you when it isn&#8217;t. What I won&#8217;t do is pretend the default is neutral. Every team that ships on a closed platform without examining the decision is making a choice&#8230;by not making it.</p><p>My job at Mozilla puts me close to where that&#8217;s actually being built: developer tools, data infrastructure, investments across the ecosystem. I&#8217;ve spent a career inside platforms. I know what it looks like when a technology transition is inevitable and the only question is who shapes it.</p><p>This newsletter is for the people shaping &#8212; and shipping &#8212; it. Twice a month, I&#8217;ll explore orchestration, inference, cost, security, governance &#8212; the real stuff, from original analysis to deployment patterns. I&#8217;ll evaluate model releases based on what matters in production, not what looks good in a press release. I&#8217;ll share migration stories from builders doing the work (and making real tradeoffs). And I&#8217;ll report with transparency from the seminars, symposiums, and events that I attend.</p><p>That&#8217;s the &#8220;Think&#8221; part of the newsletter. In the &#8220;Do&#8221; section, I&#8217;ll share an open source project that I&#8217;ve been playing with.</p><p>So, ready to run Claude Code equivalent on your own hardware? Catch the next issue. And in the meantime, let me know what you&#8217;ve been working on!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p><strong>Before you go&#8230; here&#8217;s what I&#8217;m reading this week</strong></p><p><a href="https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/">A compromised litellm release hit PyPI this week</a> - credential theft, Kubernetes lateral movement, persistent backdoors. Your LLM proxy library just turned hostile. Time to route through <a href="https://any-llm.ai/">Any-LLM</a> instead of installing your attack surface.</p><p>Finally, skill-based adaptation converges: Working independently, three <a href="https://arxiv.org/abs/2603.17187v1">papers</a> (MetaClaw, Memento-Skills, OpenSeeker) show that externalized skill/knowledge structures do better than static fine-tuning.</p><p>Which Chinese lab&#8217;s <a href="https://x.com/Kimi_Moonshot/status/2033378587878072424">open-source drop</a> panicked the market this week? As <a href="https://x.com/TukiFromKL/status/2033432054474461297">this</a> reaction says: &#8220;The AI race isn&#8217;t US vs China anymore... It&#8217;s closed vs open. And closed is losing.&#8221;</p><p>Meanwhile, <a href="https://www.wired.com/story/nvidia-investing-26-billion-open-source-models/">Nvidia is stepping into the open-source game</a>, putting $26b behind its effort to make OpenAI and the gang very nervous. This week, it introduced <a href="https://www.nvidia.com/en-us/ai/nemoclaw/#referrer=vanity">NemoClaw</a> and OpenShell runtime, with (much) more to come.</p><p>Ready for a personal AI agent that runs on your personal device? Meet Stanford&#8217;s <a href="https://scalingintelligence.stanford.edu/blogs/openjarvis/">OpenJarvis</a>.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://newsletter.ownersnotrenters.com/p/all-about-open-source-ai/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://newsletter.ownersnotrenters.com/p/all-about-open-source-ai/comments"><span>Leave a comment</span></a></p><p></p>]]></content:encoded></item></channel></rss>