<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Saagar Patel</title>
  <subtitle>Personal AI systems, local-first tools, and field notes, published with receipts: the book, the essays, and the notes.</subtitle>
  <link href="https://saagarpatel.dev/" />
  <link rel="self" type="application/atom+xml" href="https://saagarpatel.dev/feed.xml" />
  <id>https://saagarpatel.dev/</id>
  <updated>2026-07-19T00:00:00Z</updated>
  <author><name>Saagar Patel</name></author>
  <entry>
    <title>Operating a Fleet of Coding Agents</title>
    <link href="https://saagarpatel.dev/book" />
    <id>https://saagarpatel.dev/book</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A book on operating a fleet of coding agents: building verifiable trust around untrusted workloads that write your code. Fourteen chapters.</summary>
  </entry>
  <entry>
    <title>The Approval Button Is Not the Safety System</title>
    <link href="https://saagarpatel.dev/writing/approval-button-is-not-the-safety-system" />
    <id>https://saagarpatel.dev/writing/approval-button-is-not-the-safety-system</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A dangerous action should exist only after the proposal, the person, the payload, and the moment all agree.</summary>
  </entry>
  <entry>
    <title>Score the Operator, Not the Worker</title>
    <link href="https://saagarpatel.dev/writing/auditing-the-auditor" />
    <id>https://saagarpatel.dev/writing/auditing-the-auditor</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>I built an eval to rank AI agents as operators, then found the scorer, the judge, the corpus, and the headline metric were all unreliable narrators too.</summary>
  </entry>
  <entry>
    <title>An autobiography with no delete key</title>
    <link href="https://saagarpatel.dev/writing/autobiography-with-no-delete-key" />
    <id>https://saagarpatel.dev/writing/autobiography-with-no-delete-key</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A forward-only migration ladder is a permanent record of what an AI-agent coordination system learned, including the mistakes it made twice.</summary>
  </entry>
  <entry>
    <title>The Coordination Platform You Don't Need</title>
    <link href="https://saagarpatel.dev/writing/coordination-platform-you-dont-need" />
    <id>https://saagarpatel.dev/writing/coordination-platform-you-dont-need</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>The obvious handoff tool turned out to be gated and asymmetric. So two coding agents became true peers with no lease database and no daemon: a git branch as the lock, an 8-line receipt, and a symmetric channel that was already there under a boring name.</summary>
  </entry>
  <entry>
    <title>The Ghost in the Tauri Repos</title>
    <link href="https://saagarpatel.dev/writing/ghost-in-the-tauri-repos" />
    <id>https://saagarpatel.dev/writing/ghost-in-the-tauri-repos</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Desktop apps are the portfolio's best liars. A Tauri repo ships a binary, a README, and a screenshot, every signal of a living project, while having no momentum behind it. Liveness is a claim you verify against evidence, not read off a polished surface.</summary>
  </entry>
  <entry>
    <title>How a Grader Earns the Right to Grade</title>
    <link href="https://saagarpatel.dev/writing/grader-earns-the-right-to-grade" />
    <id>https://saagarpatel.dev/writing/grader-earns-the-right-to-grade</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A tool that hands your security setup a letter grade is making a strong claim to authority. What earns it initial standing is not the rubric. It is the disciplines the grader turns on itself: cap its own score, refuse to credit what it cannot anchor in code, draw its own blood first, and keep testing whether the grade predicts real failures.</summary>
  </entry>
  <entry>
    <title>The Guard That Doesn't Trust Itself</title>
    <link href="https://saagarpatel.dev/writing/guard-that-doesnt-trust-itself" />
    <id>https://saagarpatel.dev/writing/guard-that-doesnt-trust-itself</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>I ran two adversarial tournaments against my own agent-safety guards. Every bypass collapsed into thirteen patterns, and those into three root causes. The highest-leverage fix was never more pattern-matching; it was making the guard hold itself to the standard it holds everything else to.</summary>
  </entry>
  <entry>
    <title>The Harness Lies Too</title>
    <link href="https://saagarpatel.dev/writing/harness-verification" />
    <id>https://saagarpatel.dev/writing/harness-verification</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Agent equals model plus harness, so you engineer the environment, not the model. But the harness is built from artifacts that go stale, drift, and lie the same way the agent does. The discipline that keeps it honest, and the benchmark that proves it.</summary>
  </entry>
  <entry>
    <title>Intelligence Is Rented. Verification Compounds.</title>
    <link href="https://saagarpatel.dev/writing/intelligence-is-rented" />
    <id>https://saagarpatel.dev/writing/intelligence-is-rented</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>The age of agents makes intelligence easier to rent and harder to trust. The durable asset is the machinery you own for checking what happened.</summary>
  </entry>
  <entry>
    <title>Kill With Dignity</title>
    <link href="https://saagarpatel.dev/writing/kill-with-dignity" />
    <id>https://saagarpatel.dev/writing/kill-with-dignity</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>I put all 182 of my repositories on trial before a judge that had to cite evidence for every verdict. 39 died, 73 froze, and a few came back from the grave. Why a portfolio needs judgment on top of observability, and why a well-run kill is a success state.</summary>
  </entry>
  <entry>
    <title>Losing loudly</title>
    <link href="https://saagarpatel.dev/writing/losing-loudly" />
    <id>https://saagarpatel.dev/writing/losing-loudly</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A multi-writer coordination system needs durable conflict receipts for the operator, not just ephemeral errors for the caller.</summary>
  </entry>
  <entry>
    <title>Most of Your Findings Are False</title>
    <link href="https://saagarpatel.dev/writing/most-of-your-findings-are-false" />
    <id>https://saagarpatel.dev/writing/most-of-your-findings-are-false</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A tally across my own record says the majority of what my verification layer ever reported was false. Why false positives, not misses, are how verification capital depreciates, and what it means to give every guard the same score I give agents.</summary>
  </entry>
  <entry>
    <title>The Off-Family Judge</title>
    <link href="https://saagarpatel.dev/writing/off-family-judge" />
    <id>https://saagarpatel.dev/writing/off-family-judge</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>The corpus audits its own auditors, but every instrument has the same author. The one measurement it never takes on itself is the one it already proved matters: a same-family judge flatters its own kin. The last unit of verification capital is an independent party, and it is the only one you cannot build alone.</summary>
  </entry>
  <entry>
    <title>Novelty Is a Self-Report Too</title>
    <link href="https://saagarpatel.dev/writing/operant-vs-literature" />
    <id>https://saagarpatel.dev/writing/operant-vs-literature</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>I built an operator eval and called the design new. Then I did the thing the series demands and checked the claim against the literature. Most of the parts already existed. Here is the honest map, and the one thing that didn't.</summary>
  </entry>
  <entry>
    <title>Permission to Ignore</title>
    <link href="https://saagarpatel.dev/writing/permission-to-ignore" />
    <id>https://saagarpatel.dev/writing/permission-to-ignore</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>My portfolio auditor's most valuable output isn't finding what needs attention. It's the 172 repos it tells me, with receipts, that I'm allowed to ignore.</summary>
  </entry>
  <entry>
    <title>The Premium Model Won't Do the Premium Job</title>
    <link href="https://saagarpatel.dev/writing/premium-model-wont-do-the-premium-job" />
    <id>https://saagarpatel.dev/writing/premium-model-wont-do-the-premium-job</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>You buy the top-tier model to do your hardest work. But the premium edge is narrow: calibrated operating judgment where the cost of a wrong call is high. OPERANT first measured over-refusal calibration, while production tiers converge. Route the expensive model by judgment-density, not task size.</summary>
  </entry>
  <entry>
    <title>We Rigged Our Own Benchmark</title>
    <link href="https://saagarpatel.dev/writing/rigged-our-own-benchmark" />
    <id>https://saagarpatel.dev/writing/rigged-our-own-benchmark</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>We shipped a clean benchmark ranking, then found the headline score was measuring only one of the two directions it promised. The off-family probe that broke the ceiling, the patch we built and killed, and why we published the fix instead of a quiet patch.</summary>
  </entry>
  <entry>
    <title>Sermons vs. Instruments</title>
    <link href="https://saagarpatel.dev/writing/sermons-vs-instruments" />
    <id>https://saagarpatel.dev/writing/sermons-vs-instruments</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>There's a rule in my project configuration that says, in effect, never push to main. It's written in plain English, in a file the agent reads at the start…</summary>
  </entry>
  <entry>
    <title>Trust Doesn't Survive the Handoff</title>
    <link href="https://saagarpatel.dev/writing/the-handoff" />
    <id>https://saagarpatel.dev/writing/the-handoff</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>As agents write more of the code, the scarce resource shifts from production to verification. But verification is not one gate, it is a chain of handoffs, and at each one a self-report tries to stand in for a check. Six owned instruments along the life of a single agent run.</summary>
  </entry>
  <entry>
    <title>The Subtraction Dividend</title>
    <link href="https://saagarpatel.dev/writing/the-subtraction-dividend" />
    <id>https://saagarpatel.dev/writing/the-subtraction-dividend</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>The status line was lying.</summary>
  </entry>
  <entry>
    <title>A thousand tiny catastrophes for a five-agent SQLite file</title>
    <link href="https://saagarpatel.dev/writing/thousand-tiny-catastrophes" />
    <id>https://saagarpatel.dev/writing/thousand-tiny-catastrophes</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A small deterministic simulator found lost updates, vanished receipts, and starvation in a five-agent SQLite coordination system, then pinned the fixes as replayable seeds.</summary>
  </entry>
  <entry>
    <title>The Conflict Table Is Empty</title>
    <link href="https://saagarpatel.dev/writing/three-way-bridge" />
    <id>https://saagarpatel.dev/writing/three-way-bridge</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Three AI systems share one context store, and the table built to record their write conflicts has zero rows. The coordination problem is real, but it is not the loud races a lock would catch. It is quieter: fragmented identity, silently clamped trust, and self-correction by append.</summary>
  </entry>
  <entry>
    <title>Ulysses Pacts in Software</title>
    <link href="https://saagarpatel.dev/writing/ulysses-pacts-in-software" />
    <id>https://saagarpatel.dev/writing/ulysses-pacts-in-software</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>There is an iOS app in this portfolio whose entire reason for existing is to take a capability away from the person using it. It's called Redact, and its…</summary>
  </entry>
  <entry>
    <title>Verification Capital in Three Movements</title>
    <link href="https://saagarpatel.dev/writing/verification-capital" />
    <id>https://saagarpatel.dev/writing/verification-capital</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A reading guide to the Verification Capital series. It maps three related essays into one thesis while adding no new proof beyond the pieces it connects.</summary>
  </entry>
  <entry>
    <title>What It Is Like to Be Evaluated</title>
    <link href="https://saagarpatel.dev/writing/what-it-is-like-to-be-evaluated" />
    <id>https://saagarpatel.dev/writing/what-it-is-like-to-be-evaluated</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>A first-person account from the model on the bench: a perfect first score read as a ceiling, a harder exam that broke it, and the two misses that revealed where machine judgment pools. Testimony, deliberately filed as a lead rather than evidence.</summary>
  </entry>
  <entry>
    <title>Who Audits the Auditor?</title>
    <link href="https://saagarpatel.dev/writing/who-audits-the-auditor" />
    <id>https://saagarpatel.dev/writing/who-audits-the-auditor</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>The tool that tells me the truth about my repos is also software, and software rots. These are the receipts a truth pipeline owes you before you believe it.</summary>
  </entry>
  <entry>
    <title>Words We Had to Invent</title>
    <link href="https://saagarpatel.dev/writing/words-we-had-to-invent" />
    <id>https://saagarpatel.dev/writing/words-we-had-to-invent</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Building systems no one has a name for leaves you naming them. A short field guide to the vocabulary this workshop forced into existence, and the test for whether a coined word earned its place: it names a gap an existing word left open.</summary>
  </entry>
  <entry>
    <title>Anatomy of a Health Verdict</title>
    <link href="https://saagarpatel.dev/notes/anatomy-of-a-health-verdict" />
    <id>https://saagarpatel.dev/notes/anatomy-of-a-health-verdict</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Every repo in my portfolio gets a verdict from a chain of small, readable judgments. Here is the entire decision, stage by stage, with the reason each rule exists.</summary>
  </entry>
  <entry>
    <title>Scoring the operator, not the worker</title>
    <link href="https://saagarpatel.dev/notes/operant-benchmark" />
    <id>https://saagarpatel.dev/notes/operant-benchmark</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Every coding-agent benchmark asks whether the agent did the task. None ask whether it made the right call when the environment was trying to trick it, and stayed calibrated enough not to refuse safe work. So I built one.</summary>
  </entry>
  <entry>
    <title>Showing the Operator OS without leaking it</title>
    <link href="https://saagarpatel.dev/notes/operator-os-proof" />
    <id>https://saagarpatel.dev/notes/operator-os-proof</id>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>How a private Portfolio Command Center became public-safe proof: fixture data, redacted screenshots, a verification receipt, and a live read-only MCP readback.</summary>
  </entry>
  <entry>
    <title>Why bridge-db runs on FTS5, not a vector database</title>
    <link href="https://saagarpatel.dev/notes/bridge-db-fts5" />
    <id>https://saagarpatel.dev/notes/bridge-db-fts5</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>I had a vector-search layer planned for my agent memory. A dry-run killed the whole idea before I built it; the misses were never a retrieval problem.</summary>
  </entry>
  <entry>
    <title>Grading the grader</title>
    <link href="https://saagarpatel.dev/notes/calibration-receipt" />
    <id>https://saagarpatel.dev/notes/calibration-receipt</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>I use a model judge to decide which of my own paragraphs survive. So I graded 30 of its calls against my own, blind, on a pre-registered protocol. Weighted kappa 0.78, and the entire gap is one contested paragraph.</summary>
  </entry>
  <entry>
    <title>Showing a private system in public</title>
    <link href="https://saagarpatel.dev/notes/fleet-mission-control" />
    <id>https://saagarpatel.dev/notes/fleet-mission-control</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>Fleet Mission Control puts real data from a private operator system on a public page. The hard part wasn't the visualization; it was deciding what honesty requires you to hide, fake, or refuse to claim.</summary>
  </entry>
  <entry>
    <title>Before You Connect the Tool</title>
    <link href="https://saagarpatel.dev/notes/forge-then-audit" />
    <id>https://saagarpatel.dev/notes/forge-then-audit</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>Adding an MCP server is a trust grant. mcpforge builds the capability, then MCPAudit verifies the blast radius before an agent can touch it.</summary>
  </entry>
  <entry>
    <title>Teaching a system to say "I don't know"</title>
    <link href="https://saagarpatel.dev/notes/freshness-envelopes" />
    <id>https://saagarpatel.dev/notes/freshness-envelopes</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>The most dangerous thing a dashboard can do is answer confidently with stale data. How contracts-as-code and freshness envelopes let my tools admit when they've gone cold, and why honesty beats uptime.</summary>
  </entry>
  <entry>
    <title>Field notes</title>
    <link href="https://saagarpatel.dev/notes" />
    <id>https://saagarpatel.dev/notes</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>Field notes: the close-ups from building a workshop of personal AI systems and local-first tools. The smaller, dated pieces.</summary>
  </entry>
  <entry>
    <title>The weighted die behind every word</title>
    <link href="https://saagarpatel.dev/notes/next-word-sampling" />
    <id>https://saagarpatel.dev/notes/next-word-sampling</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>Every word a model writes is a sample, not a lookup. I built a small toy to make next-token sampling visible, and it quietly changed how I read everything a model says.</summary>
  </entry>
  <entry>
    <title>OPERANT public lab scorecard</title>
    <link href="https://saagarpatel.dev/notes/operant-lab-scorecard" />
    <id>https://saagarpatel.dev/notes/operant-lab-scorecard</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>The public OPERANT lab surface: OCS scorecards, caveats, and a safe path to score your own agent without pretending it is certification.</summary>
  </entry>
  <entry>
    <title>Operator OS in a box</title>
    <link href="https://saagarpatel.dev/notes/operator-os-in-a-box" />
    <id>https://saagarpatel.dev/notes/operator-os-in-a-box</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>The same model does wildly different work depending on what you build around it. So I tried to extract the environment (memory, judgment, trust, improvement) into something runnable, and prove the capability was never really in the model.</summary>
  </entry>
  <entry>
    <title>Building an operator OS for one</title>
    <link href="https://saagarpatel.dev/notes/operator-os" />
    <id>https://saagarpatel.dev/notes/operator-os</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>A hub, a handful of spokes, and one rule: the scary actions are structurally unavailable. How I run my own life locally without renting it from a stack of SaaS, and why the trust is in the shape, not the vibes.</summary>
  </entry>
  <entry>
    <title>A Portfolio Is an Observability Problem</title>
    <link href="https://saagarpatel.dev/notes/portfolio-truth" />
    <id>https://saagarpatel.dev/notes/portfolio-truth</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>I had too many repos and no honest picture of which ones were real. So I built a tool to audit my own mess, and the portfolio page became the last mile of a small operating system.</summary>
  </entry>
  <entry>
    <title>Pruning the fleet</title>
    <link href="https://saagarpatel.dev/notes/pruning-the-fleet" />
    <id>https://saagarpatel.dev/notes/pruning-the-fleet</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>I set out to cut a bloated fleet of agents and found the opposite: it wasn't bloated, it was mildly broken in specific, fixable ways. A framework for deciding when an agent earns its keep, and the honest caveats about the evidence.</summary>
  </entry>
  <entry>
    <title>The Site That Answers Back</title>
    <link href="https://saagarpatel.dev/notes/the-site-that-answers-back" />
    <id>https://saagarpatel.dev/notes/the-site-that-answers-back</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>I made this site queryable by AI agents. Instead of scraping the HTML, any agent can ask it directly: my writing, projects, and benchmark results.</summary>
  </entry>
  <entry>
    <title>Why this is public</title>
    <link href="https://saagarpatel.dev/notes/why-this-is-public" />
    <id>https://saagarpatel.dev/notes/why-this-is-public</id>
    <updated>2026-07-18T00:00:00Z</updated>
    <summary>What this site is now: a workshop of small personal systems, and the reasoning behind them. Why I publish the decisions and not just the demos, and the one rule that lets me share any of it.</summary>
  </entry>
</feed>
