<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Cavin Myers</title>
    <link>https://cavinmyers.com/blog</link>
    <description>Articles by Cavin Myers on software engineering, web development and the projects he builds.</description>
    <language>en</language>
    <lastBuildDate>Fri, 18 Sep 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://cavinmyers.com/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Build Your Own Agent Harness: A Phase-by-Phase Plan</title>
      <link>https://cavinmyers.com/blog/agent-harness</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>A hands-on lab for building an AI agent harness from scratch in Python: a tool-calling loop, guardrails, provider switching, a run viewer and a build doctor, one phase at a time.</description>
    </item>
    <item>
      <title>Phase 0: Environment and a bare completion call | Agent Harness</title>
      <link>https://cavinmyers.com/blog/agent-harness/phase-0</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness/phase-0</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>Set up the repo, a virtual environment and a free Groq API key, then send one prompt to a model and get text back. No tools and no loop yet.</description>
    </item>
    <item>
      <title>Phase 1: The bare tool loop | Agent Harness</title>
      <link>https://cavinmyers.com/blog/agent-harness/phase-1</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness/phase-1</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>Give the model three tools and write the loop that runs its tool calls, feeds the results back and keeps going until it has an answer.</description>
    </item>
    <item>
      <title>Phase 2: Guardrails and sandboxing | Agent Harness</title>
      <link>https://cavinmyers.com/blog/agent-harness/phase-2</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness/phase-2</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>Put a checkpoint between the model and your machine: a command allowlist, off-limits paths, an approval prompt, a timeout, and a log of every attempt.</description>
    </item>
    <item>
      <title>Phase 3: Provider abstraction | Agent Harness</title>
      <link>https://cavinmyers.com/blog/agent-harness/phase-3</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness/phase-3</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>Wrap the backend in a provider class so switching models, or adding a second provider, is a one-line config change instead of a rewrite.</description>
    </item>
    <item>
      <title>Phase 4: Observability UI | Agent Harness</title>
      <link>https://cavinmyers.com/blog/agent-harness/phase-4</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness/phase-4</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>Build a small React viewer that reads the run log and turns each agent run into a timeline you can watch live and explain.</description>
    </item>
    <item>
      <title>Phase 5: A build doctor | Agent Harness</title>
      <link>https://cavinmyers.com/blog/agent-harness/phase-5</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/agent-harness/phase-5</guid>
      <pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Tutorial</category>
      <description>Hand the harness a failing test run and get back a guarded fix you approved, plus a short explanation of what broke.</description>
    </item>
    <item>
      <title>Building a Browser Extension to Declutter Miacademy.co</title>
      <link>https://cavinmyers.com/blog/building-the-miacademy-browser-extension</link>
      <guid isPermaLink="true">https://cavinmyers.com/blog/building-the-miacademy-browser-extension</guid>
      <pubDate>Fri, 03 Jul 2026 12:00:00 GMT</pubDate>
      <dc:creator>Cavin Myers</dc:creator>
      <category>Build Notes</category>
      <description>How I built a Manifest V3 Chrome/Edge/Firefox extension that hides distracting navigation on Miacademy.co so my kids can focus on the actual lesson.</description>
    </item>
  </channel>
</rss>
