<?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>DEV Community: Jason Zhou</title>
    <description>The latest articles on DEV Community by Jason Zhou (@aijasonz).</description>
    <link>https://dev.to/aijasonz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4016065%2Fc8733b85-0ffe-4f56-8506-e52be5a4fad4.jpg</url>
      <title>DEV Community: Jason Zhou</title>
      <link>https://dev.to/aijasonz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aijasonz"/>
    <language>en</language>
    <item>
      <title>Crabbox: Cloud Sandboxes for Parallel Coding Agents</title>
      <dc:creator>Jason Zhou</dc:creator>
      <pubDate>Thu, 16 Jul 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/aijasonz/crabbox-cloud-sandboxes-for-parallel-coding-agents-3bbc</link>
      <guid>https://dev.to/aijasonz/crabbox-cloud-sandboxes-for-parallel-coding-agents-3bbc</guid>
      <description>&lt;h1&gt;
  
  
  Crabbox: Isolated Cloud Sandboxes for Parallel Coding Agents
&lt;/h1&gt;

&lt;p&gt;When you run ten or fifteen coding agents in parallel, writing code stops being the bottleneck. Merging it becomes the bottleneck. Every agent produces a pull request, and every PR carries the risk of breaking the system, so the real work shifts from "make the agent write code" to "let the agent prove its code works before a human ever looks at it."&lt;/p&gt;

&lt;p&gt;That is the problem Crabbox - the new project from OpenClaw creator Peter Steinberger - is built to solve. Here is the full walkthrough, why parallel testing breaks on your laptop, and the open-source codebase harness that productizes the fix.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1HkqTlXbQmQ"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The merge bottleneck is the new bottleneck
&lt;/h2&gt;

&lt;p&gt;Once your team sets up loops - agents that get triggered on their own, pick up work, and ship it - you end up with a lot of sessions running at once. At almost any given time I have at least ten agent sessions going; Peter has posted screenshots of fifteen-plus in parallel. The result is a massive volume of PRs that simply was not possible before.&lt;/p&gt;

&lt;p&gt;That volume is the problem. Each PR has to be reviewed, and each one might break production. So the constraint moves up the stack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   OLD bottleneck            NEW bottleneck
 ┌────────────────┐        ┌────────────────────┐
 │ writing code   │  ───►  │ getting code MERGED │
 │ (agents solved │        │ verifying + trusting│
 │  this)         │        │ 15 parallel PRs     │
 └────────────────┘        └────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The fix is not "review faster." It is to give each agent the tools to verify its own work and attach evidence - a passing test, a screenshot, a screen recording - to the PR, so a human is reviewing proof, not guessing. That is the first job of a codebase harness: make the repo agent-ready so agents can run, test, and verify before they hand work back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why parallel testing breaks on your laptop
&lt;/h2&gt;

&lt;p&gt;Giving one agent a browser tool and a dev server works fine. The setup falls apart when many agents run at once, because they share your machine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One database, one schema.&lt;/strong&gt; If a local Supabase or Postgres instance is shared, one agent trying a new schema migration can break every other session at once.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardcoded ports.&lt;/strong&gt; Most repos are not set up to run multiple instances side by side - a port is pinned for a good reason, and two dev servers collide.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One Docker daemon, one OS.&lt;/strong&gt; Parallel sessions share the same daemon and resources, so they step on each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource limits.&lt;/strong&gt; A modern production repo is heavy. Running many full instances locally is slow and often impossible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Git work trees solve the &lt;em&gt;code&lt;/em&gt; isolation problem - each agent gets its own checkout to modify - but they do not solve the &lt;em&gt;runtime&lt;/em&gt; problem. Agents still need a live dev server and database to actually test against, and that is what collides.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix: one isolated sandbox per work tree
&lt;/h2&gt;

&lt;p&gt;The right architecture is to stop running every session on your local machine and instead give each agent its own isolated cloud environment - its own box, its own database, its own dev server - that cannot affect any other session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            LOCAL (work trees: code isolation only)
   agent A ─┐   agent B ─┐   agent C ─┐
            │            │            │
            v            v            v
   ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
   │ CLOUD BOX A │ │ CLOUD BOX B │ │ CLOUD BOX C │   runtime isolation
   │  own DB     │ │  own DB     │ │  own DB     │
   │  own server │ │  own server │ │  own server │
   └─────────────┘ └─────────────┘ └─────────────┘
       test           test            test
   (no shared schema, ports, or daemon - they can't break each other)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Building that pipeline by hand is real work: spin up a machine on spot, mount a disk, copy the code in, install dependencies, start the app, open a browser to test, then tear it all down afterward. My team built exactly this, and it unlocked a lot - but one rough edge remained: when an agent finds a bug mid-test, getting the local fix back into the cloud box is awkward. The normal commit-push-CI flow floods the repo with throwaway commits, and you do not want to rebuild the box every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Crabbox does
&lt;/h2&gt;

&lt;p&gt;Crabbox closes that last gap. It lets an agent warm up a cloud box, sync the uncommitted diff straight from the local work tree, and run tests against it in real time - so you can change a file locally and retest in seconds.&lt;/p&gt;

&lt;p&gt;The workflow an agent runs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Warm up a box&lt;/strong&gt; - spin up an isolated cloud sandbox on demand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run any command in the cloud&lt;/strong&gt; - the agent runs bash commands as if local, but they execute in the box. Each run first syncs the dirty diff from your local work tree (no commit needed - the folder just has to be git-initialized), then runs the command against the latest code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate evidence&lt;/strong&gt; - collect screenshots, record video of the run, and publish artifacts to storage (such as an S3 bucket) so they can be posted inline as PR comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop the box&lt;/strong&gt; - tear it down and delete it when the task is done.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  agent finds a bug ─► fixes file LOCALLY ─► next `run` auto-syncs the diff
        ▲                                              │
        └──────────────── retest in the cloud ◄────────┘
   no extra commits, no box rebuild - always testing the latest version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The whole thing is configured with three files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A Dockerfile&lt;/strong&gt; that encapsulates everything your local machine has - Node, Docker, the Supabase CLI, any tool the app needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A &lt;code&gt;crabbox.yml&lt;/code&gt;&lt;/strong&gt; that defines the sandbox provider (the video uses Daytona for fast startup via prebuilt snapshots), the default work root, which folders to exclude from sync (heavy or unneeded ones - node_modules and build dirs are usually gitignored already), and environment variables to pass. Those vars are pushed to the box over an encrypted SSH connection, so the data plane stays relatively safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A &lt;code&gt;setup.sh&lt;/code&gt;&lt;/strong&gt; so the agent runs one script to install dependencies and bring the dev server up, instead of stepping through it each time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exact command names and flags live in the project and the video above - treat the steps here as the shape of the workflow, not copy-paste syntax.&lt;/p&gt;

&lt;h2&gt;
  
  
  The codebase harness that productizes this
&lt;/h2&gt;

&lt;p&gt;You do not have to wire all of this together from scratch. We packaged the setup my team runs into an open-source Claude Code plugin: the &lt;a href="https://github.com/AI-Builder-Club/skills" rel="noopener noreferrer"&gt;AI Builder Club skills repo&lt;/a&gt;. It ships two flagship skill sets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codebase harness&lt;/strong&gt; - make any repo agent-ready so agents can run, test, verify, and ship, including an isolated cloud box per agent so loops can ship code in parallel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loops&lt;/strong&gt; - spin up compounding agent loops on a shared, file-based knowledge base.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install it in Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add AI-Builder-Club/skills
/plugin install skills@ai-builder-club
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the two entry points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/setup-codebase-harness&lt;/code&gt;&lt;/strong&gt; - run it in the repo your agents work in, so they can run, test, and verify their own work (this is the harness Crabbox plugs into).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/new-loop&lt;/code&gt;&lt;/strong&gt; - run it where your agent's memory should live; it bootstraps the shared knowledge base and scaffolds your first compounding loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want the full walkthrough of the concept - the four ingredients of a loop and how the harness fits - the &lt;a href="https://www.aibuilderclub.com/blog/loop-engineering-guide-2026?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;loop engineering guide&lt;/a&gt; is the written companion, and &lt;a href="https://www.aibuilderclub.com/blog/ai-agent-reliability-cost-control?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;AI Agent Reliability and Cost Control&lt;/a&gt; covers why agent-generated evidence is what makes parallel work safe to merge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go deeper:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.aibuilderclub.com/courses/ai-agent-course?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;AI Agent 101 Course&lt;/a&gt; - build agents that run, test, and verify their own work, then deploy them&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.aibuilderclub.com/courses/claude-code-course?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Claude Code 101 Course&lt;/a&gt; - CLAUDE.md, hooks, subagents, and work trees, the foundation a codebase harness sits on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want the step-by-step build alongside a team running this in production? &lt;a href="https://www.aibuilderclub.com/lp/loop-engineer?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=crabbox-parallel-agent-sandboxes" rel="noopener noreferrer"&gt;Join AI Builder Club&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/openclaw-guide-2026?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;OpenClaw: What It Is and How to Use It&lt;/a&gt;&lt;/strong&gt; - The prior project from Crabbox's creator, Peter Steinberger.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/loop-engineering-guide-2026?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Loop Engineering: Generators, Verifiers, and Stop Conditions&lt;/a&gt;&lt;/strong&gt; - The concept the codebase harness serves: agents that ship and verify on their own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/ai-agent-reliability-cost-control?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;AI Agent Reliability and Cost Control&lt;/a&gt;&lt;/strong&gt; - Why agent-produced evidence is what makes parallel PRs safe to merge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/claude-code-dynamic-workflows?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Dynamic Workflows: Orchestrate Subagents at Scale&lt;/a&gt;&lt;/strong&gt; - Running many agents from one script once the harness is in place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/harness-six-components?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Harness: The 6 Components&lt;/a&gt;&lt;/strong&gt; - Where run/test/verify fits in the larger harness picture.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Start Here
&lt;/h2&gt;

&lt;p&gt;Pick the repo your agents already work in and run &lt;code&gt;/setup-codebase-harness&lt;/code&gt; from the &lt;a href="https://github.com/AI-Builder-Club/skills" rel="noopener noreferrer"&gt;AI Builder Club skills repo&lt;/a&gt;. Get one agent running its own tests and attaching evidence to a PR before you scale to ten. The merge bottleneck only gets worse with volume, so solve verification first.&lt;/p&gt;

&lt;p&gt;For the full build alongside a team running this in production, join the AI Builder Club.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aibuilderclub.com/lp/loop-engineer?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=crabbox-parallel-agent-sandboxes" rel="noopener noreferrer"&gt;Join AI Builder Club&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.aibuilderclub.com/blog/crabbox-parallel-agent-sandboxes?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;AI Builder Club&lt;/a&gt;, where the full &lt;a href="https://www.aibuilderclub.com/blog?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;free agent-engineering curriculum&lt;/a&gt; lives.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aiagents</category>
      <category>codebaseharness</category>
      <category>parallelagents</category>
      <category>crabbox</category>
    </item>
    <item>
      <title>Codebase Memory MCP: Give Your Coding Agent a Map (2026)</title>
      <dc:creator>Jason Zhou</dc:creator>
      <pubDate>Thu, 16 Jul 2026 05:46:17 +0000</pubDate>
      <link>https://dev.to/aijasonz/codebase-memory-mcp-give-your-coding-agent-a-map-2026-535l</link>
      <guid>https://dev.to/aijasonz/codebase-memory-mcp-give-your-coding-agent-a-map-2026-535l</guid>
      <description>&lt;h1&gt;
  
  
  Codebase Memory MCP: Stop Making Your Coding Agent Read Your Repo as Flat Text
&lt;/h1&gt;

&lt;p&gt;Ask a coding agent to change something in a big codebase and you know what happens. It greps, gets a wall of matches, opens 20 files one by one, and still misses half the places that might break.&lt;/p&gt;

&lt;p&gt;Here is the thing though: your codebase is already a map. Every import is an edge. Every function call is an edge. Your agent throws that structure away and reads the whole thing as flat text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Codebase Memory MCP fixes this by indexing your repo into a persistent code graph&lt;/strong&gt; - functions, classes, call chains, routes, cross-file and cross-service links - that the agent queries instead of grepping. It is written in C, parses 158 languages via tree-sitter, indexes most repos in seconds, and answers structural queries in under a millisecond. When I ran the same architecture question with and without it on my own monorepo, token consumption dropped from ~38,000 to ~11,000. Over a two-question session: 64,000 vs 33,000. About half.&lt;/p&gt;

&lt;p&gt;Prefer to watch? Here is the full walkthrough:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/iWRmtPdFbGw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why grep burns your context window
&lt;/h2&gt;

&lt;p&gt;The default exploration loop every coding agent runs on a structural question looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Grep for the identifier. Get matches across dozens of files.&lt;/li&gt;
&lt;li&gt;Read the files one by one. Each read dumps hundreds or thousands of lines into context.&lt;/li&gt;
&lt;li&gt;Follow the imports. More reads.&lt;/li&gt;
&lt;li&gt;Try to hold the reconstructed structure in the context window while doing the actual work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every step pays full price because grep returns &lt;em&gt;text&lt;/em&gt;, not &lt;em&gt;structure&lt;/em&gt;. The agent has to rebuild the relationships between symbols from scratch, on every task, by reading source. Claude Code has subagents to contain this (the search runs in a separate context), which helps with pollution but is slow, and the cost still gets paid somewhere.&lt;/p&gt;

&lt;p&gt;This is &lt;a href="https://www.aibuilderclub.com/blog/context-engineering-guide?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;context engineering's&lt;/a&gt; ugliest corner: in production agents, roughly 100 input tokens are consumed for every output token, and on large-repo tasks a huge share of those inputs is just re-discovering how the code fits together. The project's &lt;a href="https://arxiv.org/pdf/2603.27277" rel="noopener noreferrer"&gt;arXiv evaluation&lt;/a&gt; across 31 real-world repositories puts numbers on it: graph-based exploration answered structural questions with 10x fewer tokens and 2.1x fewer tool calls than file-by-file exploration, at 83% answer quality. The README's extreme benchmark: five structural queries cost ~3,400 tokens via the graph versus ~412,000 via grep-and-read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnc7cygfi24lksypu8gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwnc7cygfi24lksypu8gm.png" alt="Diagram comparing a coding agent exploring a repo as flat text via grep, reading 20 files and consuming 38,000 tokens, versus querying a code graph with search_graph and trace_path and consuming 11,000 tokens for the same question" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Codebase Memory MCP actually is
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/DeusData/codebase-memory-mcp" rel="noopener noreferrer"&gt;Codebase Memory MCP&lt;/a&gt; is an open-source (MIT) MCP server that extracts every function, class, method, route, and import from your code and builds a relationship graph out of them. Cross-file, cross-package, even cross-repo: if service A calls an HTTP route in service B, that edge is in the graph.&lt;/p&gt;

&lt;p&gt;Two design decisions make it different from the pile of codebase-index tools you have already seen and forgotten:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. No LLM in the indexing pipeline.&lt;/strong&gt; Earlier projects ran a language-model pass to write a "knowledge map" of your repo. Those maps cost money to build, took minutes to hours, and went stale the moment the code changed. Codebase Memory MCP parses with tree-sitter grammars in pure C. Indexing is purely programmatic: an average repo indexes in seconds, and the Linux kernel - 28 million lines across 75,000 files - indexes in about 3 minutes. Rebuilding on change is cheap enough that the graph just stays current.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. It meets the agent where it already works.&lt;/strong&gt; More on the hook pattern below, because it is the most copyable idea in the project.&lt;/p&gt;

&lt;p&gt;The agent gets a toolset that replaces the grep-read-repeat loop:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What the agent uses it for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_architecture&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Quick overview: languages, packages, routes, hotspots, clusters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;search_graph&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Locate the node for a symbol by name, label, or file pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;trace_path&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Follow the call chain: who calls this, what does it touch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;detect_changes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Map a git diff to affected symbols, with risk classification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;query_graph&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cypher-like queries, e.g. "callers of handle_order with no test coverage"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_code_snippet&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pull just the source of one function by qualified name&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last pairing is the token win in miniature: instead of reading a 2,000-line file to see one function, the agent asks the graph where the function is and pulls only its body.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;detect_changes&lt;/code&gt; is the sleeper feature for teams. Point it at a PR diff and it returns the blast radius - every symbol the change can reach - which turns &lt;a href="https://www.aibuilderclub.com/blog/loop-engineering-guide-2026?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;agent code review&lt;/a&gt; from "read everything and hope" into a graph query.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hook pattern: why this MCP works when others get ignored
&lt;/h2&gt;

&lt;p&gt;Here is the failure mode that killed most code-search MCPs: the agent forgets to use them. You install a beautiful semantic search tool, and the agent... greps anyway. Claude Code and Codex are heavily optimized around their built-in search tools, and no system prompt reliably overrides that habit.&lt;/p&gt;

&lt;p&gt;Codebase Memory MCP acknowledges this instead of fighting it. On Claude Code it registers a &lt;strong&gt;PreToolUse hook&lt;/strong&gt;: when the agent calls its normal Grep or Glob tool, the hook intercepts the call, runs the graph lookup for matching symbols, and injects the structured context - call chains, relationships, definitions - alongside the ordinary grep results. The grep still runs. The agent just gets the map with the matches, whether or not it remembered the MCP exists.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4p25nqcu961sldjh49lw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4p25nqcu961sldjh49lw.png" alt="Diagram of the PreToolUse hook pattern: the coding agent calls its normal grep tool, the hook intercepts the call, queries the code graph, and injects call-chain context into the grep result so the agent gets structure without changing its behavior" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are building MCP tools yourself, steal this. Do not rely on the model choosing your tool over its built-ins; use &lt;a href="https://www.aibuilderclub.com/blog/claude-code-hooks-complete-guide?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;hooks&lt;/a&gt; to enrich the tools it already prefers. It is the difference between shipping a tool and shipping a behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real test: tracing a hidden lock through a monorepo
&lt;/h2&gt;

&lt;p&gt;I indexed the codebase for Superdesign, our vibe-design platform. It has a backend function called &lt;code&gt;createDesignDraftNode&lt;/code&gt; - the tool an agent calls to add a design to the infinite canvas. Because multiple agents can generate designs on the same canvas at once, everything flows through a queue guarded by a &lt;strong&gt;canvas lock&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The catch: the lock is invisible from where the work starts. &lt;code&gt;createDesignDraftNode&lt;/code&gt; never calls it directly; the protection is delegated down through layers. Grep that file for "lock" and you get nothing. Any agent (or human) reading the entry point would conclude the protection does not exist.&lt;/p&gt;

&lt;p&gt;So I asked two questions, in two sessions - one with the graph, one with MCP explicitly disabled:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;With Codebase Memory MCP&lt;/th&gt;
&lt;th&gt;Without (default grep)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"Trace the createDesignDraftNode and canvas lock flow"&lt;/td&gt;
&lt;td&gt;~11,000 tokens, full flow returned in seconds&lt;/td&gt;
&lt;td&gt;~38,000 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"What breaks if I change the lock?" (cumulative)&lt;/td&gt;
&lt;td&gt;~33,000 tokens, all 13 call sites identified&lt;/td&gt;
&lt;td&gt;~64,000 tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same model, same repo, same questions. Half the tokens, and the graph version found every call site - which matters more than the cost, because the expensive failure is the new engineer (or agent) who decides the lock "slows things down," tweaks it, and ships a race condition. Ask "what will break if I change this?" and the graph answers with the actual dependency list instead of a best-effort sample.&lt;/p&gt;

&lt;p&gt;Those are my numbers on one repo, measured from Claude Code's context inspector; your ratio will move with repo size and question type. The pattern held across every structural question I threw at it: the bigger and more cross-cutting the question, the wider the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to set it up (2 commands, ~10 minutes)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Install.&lt;/strong&gt; One command on macOS/Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want the graph visualization UI too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--ui&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The installer auto-detects your installed agents (Claude Code, Codex CLI, Gemini CLI, Zed, OpenCode, Antigravity, Aider, KiloCode, VS Code, OpenClaw, Kiro) and configures the MCP entries and hooks for each. Single static binary, zero runtime dependencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Index.&lt;/strong&gt; Open your coding agent in the repo and tell it: "Help me use codebase memory MCP." It will run the indexing, and if your repo already has decent documentation it applies ignore filters on its own - mine correctly skipped the legacy folders. My semi-complex monorepo indexed in a few seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Verify.&lt;/strong&gt; Ask it to trace a function you know is load-bearing. You should see &lt;code&gt;search_graph&lt;/code&gt; and &lt;code&gt;trace_path&lt;/code&gt; calls come back with the full chain, no file-by-file reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. (Optional) Look at your graph.&lt;/strong&gt; With the UI install: &lt;code&gt;codebase-memory-mcp --ui=true&lt;/code&gt; plus a port gives you a web view of the whole graph. Is it useful? Honestly not sure. It does look really cool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this fits: the codebase harness
&lt;/h2&gt;

&lt;p&gt;A code graph is one ingredient, not the whole meal. The repos where agents ship reliably have a full &lt;a href="https://www.aibuilderclub.com/blog/harness-six-components?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;harness&lt;/a&gt;: a way to run the app locally in one command, end-to-end tests that gate PRs, isolated sandboxes for parallel work, and now a structural map of the code.&lt;/p&gt;

&lt;p&gt;That is why we added Codebase Memory MCP to &lt;code&gt;/setup-codebase-harness&lt;/code&gt; in the open-source &lt;a href="https://github.com/AI-Builder-Club/skills" rel="noopener noreferrer"&gt;AI Builder Club skills repo&lt;/a&gt;. Run the skill in your repo and it sets up the MCP and index alongside the rest: e2e test gates, the script toolkit that gets your local server running, and &lt;a href="https://www.aibuilderclub.com/blog/crabbox-parallel-agent-sandboxes?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Crabbox&lt;/a&gt; for parallel agent testing in remote sandboxes. One command, and your codebase goes from flat text to something an agent can actually navigate, run, and verify against.&lt;/p&gt;

&lt;p&gt;If you are optimizing agent costs more broadly, the graph attacks the input side; &lt;a href="https://www.aibuilderclub.com/blog/reduce-claude-code-api-costs?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;reducing Claude Code API costs&lt;/a&gt; covers the rest of the bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/context-engineering-guide?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Context Engineering: The 100:1 Ratio&lt;/a&gt;&lt;/strong&gt; - Why input tokens dominate agent costs and the four strategies for managing them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/claude-code-hooks-complete-guide?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Claude Code Hooks: The Complete Guide&lt;/a&gt;&lt;/strong&gt; - The mechanism behind the PreToolUse pattern this project uses so well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/crabbox-parallel-agent-sandboxes?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Crabbox: Cloud Sandboxes for Parallel Agents&lt;/a&gt;&lt;/strong&gt; - The runtime-isolation half of the same codebase harness.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/mcp-101-build-mcp-servers?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;MCP 101: Build Your First MCP Server&lt;/a&gt;&lt;/strong&gt; - If the hook-enrichment pattern made you want to build your own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/loop-engineering-guide-2026?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Loop Engineering Guide&lt;/a&gt;&lt;/strong&gt; - The bigger system this plugs into: agents that trigger, work, and verify on their own.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Start Here
&lt;/h2&gt;

&lt;p&gt;Install Codebase Memory MCP in the repo where your agent does real work, index it, and ask one question you already know the answer to: "what breaks if I change X?" Compare what comes back against what you know. That single test tells you whether your agent has been navigating your codebase or guessing at it.&lt;/p&gt;

&lt;p&gt;Then make it part of the harness: run &lt;code&gt;/setup-codebase-harness&lt;/code&gt; from the &lt;a href="https://github.com/AI-Builder-Club/skills" rel="noopener noreferrer"&gt;AI Builder Club skills repo&lt;/a&gt; so every agent session starts with the map.&lt;/p&gt;

&lt;p&gt;For the step-by-step build alongside a team running this in production, join the AI Builder Club.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aibuilderclub.com/lp/loop-engineer?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=codebase-memory-mcp-guide" rel="noopener noreferrer"&gt;Join AI Builder Club&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.aibuilderclub.com/blog/codebase-memory-mcp-guide?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;AI Builder Club&lt;/a&gt;, where the full &lt;a href="https://www.aibuilderclub.com/blog?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;free agent-engineering curriculum&lt;/a&gt; lives.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aiagents</category>
      <category>mcp</category>
      <category>codebaseharness</category>
      <category>developertools</category>
    </item>
    <item>
      <title>Loop Engineering Guide (2026)</title>
      <dc:creator>Jason Zhou</dc:creator>
      <pubDate>Sun, 05 Jul 2026 11:41:52 +0000</pubDate>
      <link>https://dev.to/aijasonz/loop-engineering-guide-2026-43f</link>
      <guid>https://dev.to/aijasonz/loop-engineering-guide-2026-43f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Loop engineering is the discipline of designing the loop an agent runs inside - what it does between tool calls, when it checks its own work, and how it decides it's finished - instead of hand-writing each prompt.&lt;/strong&gt; It's the 2026 successor to prompt engineering. The model writes the prompts now. The scarce skill is defining what "good" and "done" mean, and the part almost every explainer skips is this: in any loop, the &lt;strong&gt;verifier&lt;/strong&gt; is the bottleneck, not the model.&lt;/p&gt;

&lt;p&gt;A few mornings ago I typed one sentence into Claude Code and went to make coffee. By the time I got back, something like forty agents had spun up, written code, checked each other's work, thrown away the bad attempts, and left me three pull requests to review.&lt;/p&gt;

&lt;p&gt;I didn't write forty prompts. I wrote one loop.&lt;/p&gt;

&lt;p&gt;If you've felt the ground shift under "prompt engineering" lately, this is why. Here's the decode - not the hype version, the version you can use this afternoon.&lt;/p&gt;

&lt;p&gt;AI Jason breaks down the same shift in his "Loop Engineer: Systemization and Artifacts" video - what the term actually means, the four core ingredients, and how his team designs loops that compound:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/W6x-hb44C0c"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  How Did We Get From Prompt Engineering to Loop Engineering?
&lt;/h2&gt;

&lt;p&gt;It helps to see the line this sits on:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;Era&lt;/th&gt;
&lt;th&gt;What you do&lt;/th&gt;
&lt;th&gt;Your role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2024&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Prompt engineering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Write a good prompt, get a good output&lt;/td&gt;
&lt;td&gt;Operator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2025&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Parallel agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stop babysitting one chat, run several at once&lt;/td&gt;
&lt;td&gt;Manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2026&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Loop engineering&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Build the loop that runs the agents for you&lt;/td&gt;
&lt;td&gt;System designer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The people behind Claude Code have said the quiet part out loud: some mornings they aren't really writing the prompts anymore - another model is - and they're managing hundreds, even thousands, of agents at a time. That sounds like a flex until you see what it implies: &lt;strong&gt;if you're not in the loop pressing enter between every step, something else has to decide when the work is good enough.&lt;/strong&gt; That something else is the whole game.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is a Loop, Exactly?
&lt;/h2&gt;

&lt;p&gt;Strip the jargon and a loop is four moves on repeat:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;discover → plan → execute → verify → (repeat until a condition is met)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You used to &lt;em&gt;be&lt;/em&gt; the loop. You were the thing standing between the agent's steps, reading the output, catching the mistake, deciding what happens next, telling it to try again. Loop engineering is the discipline of stepping &lt;em&gt;out&lt;/em&gt; of that inner cycle and &lt;em&gt;up&lt;/em&gt; to designing the track the agent runs on.&lt;/p&gt;

&lt;p&gt;Here's the simplest possible version. Give the agent a goal and a stopping condition, and let it run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Goal: get the test suite passing.
Loop: run the tests, read the failures, fix the most likely cause, run again.
Stop when: all tests green, or you've tried 6 rounds (then summarize what's left).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a loop. And it genuinely works on a simple task. But point a loop at something open-ended - "improve this app," "make this page better," "research X and write it up" - and it either produces something great or it quietly turns into a very expensive slop machine. The difference between those two outcomes is the part nobody talks about.&lt;/p&gt;




&lt;h2&gt;
  
  
  Loops Nest: Andrew Ng's Three-Loop Model
&lt;/h2&gt;

&lt;p&gt;The discover → plan → execute → verify cycle above is the &lt;em&gt;inner&lt;/em&gt; loop. Zoom out and you'll find it wrapped inside slower loops. Andrew Ng laid this out cleanly in a &lt;a href="https://x.com/AndrewYNg/status/2071988145667928442" rel="noopener noreferrer"&gt;June 2026 Batch letter&lt;/a&gt; - and the fact that &lt;em&gt;he&lt;/em&gt; wrote it is itself the signal: "'Loop engineering' is a hot buzzphrase after mentions of it by Boris Cherny (Claude Code's creator) and Peter Steinberger (OpenClaw's creator) went viral." When Andrew Ng devotes a whole letter to a term, it has left buzzword territory.&lt;/p&gt;

&lt;p&gt;His model is three loops running at different speeds:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Loop&lt;/th&gt;
&lt;th&gt;Cadence&lt;/th&gt;
&lt;th&gt;Who runs it&lt;/th&gt;
&lt;th&gt;What it decides&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agentic coding loop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Seconds to minutes&lt;/td&gt;
&lt;td&gt;The agent&lt;/td&gt;
&lt;td&gt;Write code, test it, iterate until it's bug-free and meets the spec (and evals, if you have them)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Developer feedback loop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tens of minutes to hours&lt;/td&gt;
&lt;td&gt;You&lt;/td&gt;
&lt;td&gt;Review the product, steer the agent, update the spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;External feedback loop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hours to weeks&lt;/td&gt;
&lt;td&gt;The world&lt;/td&gt;
&lt;td&gt;Alpha testers, A/B tests, production data - feeds your vision back into the spec&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ┌──────────────────────────────────────────────────────┐
  │  EXTERNAL FEEDBACK LOOP            (hours → weeks)     │
  │  alpha testers · A/B tests · production data          │
  │   ┌────────────────────────────────────────────────┐ │
  │   │  DEVELOPER FEEDBACK LOOP     (minutes → hours)  │ │
  │   │  you review · steer · update the spec          │ │
  │   │   ┌──────────────────────────────────────────┐ │ │
  │   │   │  AGENTIC CODING LOOP    (seconds → mins) │ │ │
  │   │   │  generate → test → verify → repeat       │ │ │
  │   │   └──────────────────────────────────────────┘ │ │
  │   └────────────────────────────────────────────────┘ │
  │              vision ──► spec ──► agent                 │
  └──────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Watch what changes as you move outward: the loop gets slower, and the verifier gets more human. The inner loop can verify itself with tests. The outer loops can't - they need you. Ng makes the sharpest point right here, and it's a friendly amendment to the "taste is the reward function" idea coming up next. People call the human contribution "taste," he writes, but he prefers "context advantage": "So long as the human knows something the AI does not, human-in-the-loop is needed to inject that knowledge." Taste sounds innate and unteachable. "Context advantage" tells you exactly what to encode into the loop: the things you know about your users and your problem that the model doesn't. That's your verifier, written down.&lt;/p&gt;

&lt;p&gt;And here's his tell for when to graduate from eyeballing output to a real verifier: "If you find that the system repeatedly runs into certain problems, building a set of evals for the agent becomes useful." Same lesson as the landing-page example below - the moment you're checking the same thing twice, write it into the loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Is the Verifier the Bottleneck, Not the Generator?
&lt;/h2&gt;

&lt;p&gt;Every loop has two halves. The &lt;strong&gt;generator&lt;/strong&gt; produces work - that's the model, and models are now extremely good. The &lt;strong&gt;verifier&lt;/strong&gt; judges whether that work is good. Put it plainly: a loop is just a generator wired to a verifier, and the generator was never the bottleneck. The verifier is.&lt;/p&gt;

&lt;p&gt;For two years we obsessed over the generator. We tuned prompts, swapped models, argued about temperature. But in a loop, the generator runs over and over for nearly free. The thing that decides whether all that motion produces &lt;em&gt;value&lt;/em&gt; is the verifier.&lt;/p&gt;

&lt;p&gt;And the freer you let the loop run, the more everything rides on the verifier. A loop with a weak "good enough?" check doesn't fail loudly. It succeeds at producing garbage, confidently, hundreds of times.&lt;/p&gt;

&lt;p&gt;This is the same shift &lt;a href="https://addyo.substack.com/p/code-review-in-the-age-of-ai" rel="noopener noreferrer"&gt;Addy Osmani&lt;/a&gt; keeps pointing at: the bottleneck moved from writing code to proving it works. Review, judgment, taste, knowing what "correct" looks like - that's now the most leveraged skill an engineer has. It's the same lesson &lt;a href="https://www.aibuilderclub.com/blog/how-to-evaluate-ai-agents?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;agent evaluation&lt;/a&gt; teaches at the production layer: a model grading its own homework always gives itself an A. In a loop-engineering world, your taste isn't a soft skill anymore. &lt;strong&gt;It's the reward function.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Open Loop vs Closed Loop: Which Should You Build?
&lt;/h2&gt;

&lt;p&gt;Once you accept that the verifier is the point, the engineering decision gets clear. Every loop sits somewhere between two poles.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Open loop&lt;/th&gt;
&lt;th&gt;Closed loop&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Give a goal and loose conditions, let it explore a wide space&lt;/td&gt;
&lt;td&gt;Pin success criteria in advance, evaluate every step, define an explicit stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Upside&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Genuinely novel output. Surprising solutions live here&lt;/td&gt;
&lt;td&gt;Runs on a normal budget. Predictable. Safe to leave alone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Downside&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Burns tokens. Degrades into slop fast with loose criteria&lt;/td&gt;
&lt;td&gt;Won't surprise you. Does what you specified, not more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Lives or dies by&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The verifier (even more so)&lt;/td&gt;
&lt;td&gt;The verifier&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The actual &lt;em&gt;engineering&lt;/em&gt; is two decisions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Choose open or closed for this specific task.&lt;/strong&gt; Roughly: how much do I need novelty, and how much budget am I willing to risk?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the verifier that matches.&lt;/strong&gt; A closed loop needs hard, checkable passes. An open loop needs an &lt;em&gt;even better&lt;/em&gt; verifier, because it's the only thing standing between exploration and slop.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What Does a Loop With a Weak Verifier Actually Produce?
&lt;/h2&gt;

&lt;p&gt;The most useful thing isn't a loop that works. It's the same task run two ways.&lt;/p&gt;



&lt;p&gt;Here's Take 2 written out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Goal: improve landing-page conversion clarity.
Done when ALL pass:
  - Lighthouse accessibility score &amp;gt;= 95
  - Exactly one primary CTA above the fold
  - Hero headline states the value prop in &amp;lt;12 words
  - No layout shift (CLS &amp;lt; 0.1)
Loop: propose a change -&amp;gt; run the checks -&amp;gt; keep it only if every check still passes
      -&amp;gt; stop when all green or after 5 rounds.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the loop converges, because every iteration clears a bar &lt;em&gt;you&lt;/em&gt; defined. Then comes the trick that rescues open loops too: keep those hard checks as the floor, and add one open instruction ("surprise me with the headline"). Now you get exploration &lt;em&gt;that can't degrade below your standard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The lesson isn't "closed loops are better." It's: &lt;strong&gt;the verifier is what makes either kind ship.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What Tools Can Run the Loop For You?
&lt;/h2&gt;

&lt;p&gt;You don't have to build the loop machinery from scratch. There's a clear lineage, from rigid to autonomous:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool / pattern&lt;/th&gt;
&lt;th&gt;How it decides "done"&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;"Ralph" loop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A bare shell &lt;code&gt;while&lt;/code&gt; loop re-fires the same prompt until you stop it - no smart "done," you are the stop button&lt;/td&gt;
&lt;td&gt;Mechanical, repetitive tasks. Crude but bulletproof&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code &lt;a href="https://code.claude.com/docs/en/goal" rel="noopener noreferrer"&gt;&lt;code&gt;/goal&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A small fast model judges the stop condition after every turn&lt;/td&gt;
&lt;td&gt;Fuzzy "done" that still needs evaluating&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Goal-tracking setups&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent tracks its own progress in files, defines "done" up front&lt;/td&gt;
&lt;td&gt;Long runs that need to stay oriented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-hosted agents (Hermes-style)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Runs continuously on its own infrastructure, keeps state across sessions&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.aibuilderclub.com/blog/hermes-nous-research-self-improving-agent?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Always-on agents you set up once and leave running&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;/goal&lt;/code&gt; is the cleanest entry point: you type a completion condition once, and after each turn a Haiku-class evaluator reads the transcript and decides yes or no, looping until it holds (or you hit your turn cap). One catch worth knowing - the evaluator only sees what Claude already printed, so your condition has to be provable from the agent's own output.&lt;/p&gt;

&lt;p&gt;Pick the least autonomous tool that does the job. Autonomy is not the goal. &lt;strong&gt;A shipped result is the goal.&lt;/strong&gt; When the work fans out wide and repetitive, push the loop into a script with &lt;a href="https://www.aibuilderclub.com/blog/claude-code-dynamic-workflows?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;dynamic workflows&lt;/a&gt; instead of babysitting it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Does a Real Loop System Look Like?
&lt;/h2&gt;

&lt;p&gt;A single loop is useful. A &lt;em&gt;system&lt;/em&gt; of loops that share a brain is where the leverage compounds. This is what AI Jason runs inside his own company.&lt;/p&gt;

&lt;p&gt;Start with the simplest one: a &lt;strong&gt;support loop&lt;/strong&gt;. Every 30 minutes a cron wakes an agent. It pulls every support ticket, replies to the ones it can answer, and logs the frictions and product ideas it spots into a shared folder called &lt;code&gt;signals&lt;/code&gt;. That loop alone earns its keep.&lt;/p&gt;

&lt;p&gt;Now make it compound. The same loop doesn't just &lt;em&gt;log&lt;/em&gt; a bug - it spawns a coding agent to fix it, monitors whether the fix held, and tells the customer it shipped. If people still hit the issue, that means it wasn't fixed at the root, so the loop tries again.&lt;/p&gt;

&lt;p&gt;The real trick is that every loop reads &lt;em&gt;and&lt;/em&gt; writes the same shared folders. Jason runs several at once:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Loop&lt;/th&gt;
&lt;th&gt;Trigger&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;What it writes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every 30 min&lt;/td&gt;
&lt;td&gt;Answer tickets, spot friction&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;signals&lt;/code&gt;, engineer tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SEO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Daily, 9am&lt;/td&gt;
&lt;td&gt;Pull data, research topics, publish pages&lt;/td&gt;
&lt;td&gt;pages, conversion-gap &lt;code&gt;signals&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Product growth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Daily&lt;/td&gt;
&lt;td&gt;Prioritize experiments from analytics + signals&lt;/td&gt;
&lt;td&gt;tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reddit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scheduled&lt;/td&gt;
&lt;td&gt;Draft on-brand comments&lt;/td&gt;
&lt;td&gt;comment artifacts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Because they share one file system, the SEO loop's "this keyword converts but we have no organic content" signal feeds the content loop. The support loop's repeated-bug signal gets picked up by the product loop. Each loop runs every hour or every day, reading what the others learned. &lt;strong&gt;The shared brain is what makes it compound&lt;/strong&gt; - and Jason's quoted output from this setup is 20 to 40 high-quality pages a day driving traffic without him looking at it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 4 Ingredients of a Loop That Compounds
&lt;/h2&gt;

&lt;p&gt;Jason's framework boils down to four parts. Most people nail the first three and skip the fourth - which is the one that actually decides whether autonomous work is possible.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Triggers.&lt;/strong&gt; What wakes the agent. A cron job, a webhook, another agent, a server incident. The point is the agent runs &lt;em&gt;without you&lt;/em&gt; pressing enter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File structure.&lt;/strong&gt; The most important design decision. Where artifacts, contracts, and logs live (covered below).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools and connectors.&lt;/strong&gt; The skills and scripts that let the agent do real work - Intercom to fetch tickets, Stripe to check subscriptions, Supabase to debug, Playwright to test.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An agent-ready codebase.&lt;/strong&gt; The setup that lets many agents work in parallel and verify their own output. This is the one everyone misses.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  How Do You Make a Codebase Agent-Ready?
&lt;/h2&gt;

&lt;p&gt;Before any loop works, the environment has to let an agent operate solo. Three properties:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Legible&lt;/strong&gt; - the agent can find where to change what. Keep &lt;code&gt;AGENTS.md&lt;/code&gt; / &lt;code&gt;CLAUDE.md&lt;/code&gt; as a ~100-line index that points to deeper docs (OpenAI keeps theirs around 100 lines). Then bake rules into &lt;strong&gt;custom lints&lt;/strong&gt; so the agent gets a warning automatically instead of you hoping it reads the right doc. Example: lint-fail any import from a legacy folder you don't want touched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Executable&lt;/strong&gt; - the agent starts work with the dev server already up, at near-zero token cost. Write a &lt;code&gt;dev local&lt;/code&gt; script so it doesn't burn 3-5 minutes booting the app every run. Make the repo worktree-friendly so five parallel agents each spin up their own server without colliding. Add scripts that jump to a specific state to test scenarios fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verifiable&lt;/strong&gt; - give the agent tools to test and &lt;em&gt;prove&lt;/em&gt; it worked. The Playwright CLI is the standout: it drives the browser and records a video clip you can attach to the GitHub PR, so review takes seconds. Back it with end-to-end tests on the flows you never want broken - sign-up, upgrade, core action.&lt;/p&gt;

&lt;p&gt;One hard rule from the video, and it lines up exactly with the verifier point above: &lt;strong&gt;don't let an agent self-verify.&lt;/strong&gt; It doesn't work well. Jason's PR skill always spawns a separate read-only verifier agent with the detailed spec. Generator and verifier stay different agents.&lt;/p&gt;




&lt;h2&gt;
  
  
  The File System: Artifacts, Contracts, Logs
&lt;/h2&gt;

&lt;p&gt;This is ingredient #2, and it's the heart of the system. Three file types, three jobs:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Artifacts&lt;/strong&gt; - the shared knowledge layer. The output of each loop's work. Types include &lt;code&gt;docs&lt;/code&gt;, &lt;code&gt;signals&lt;/code&gt;, &lt;code&gt;tasks&lt;/code&gt;, &lt;code&gt;tickets&lt;/code&gt;, even &lt;code&gt;campaigns&lt;/code&gt; for an ads loop. Each artifact type gets its own folder with a &lt;code&gt;README&lt;/code&gt; defining what goes in, what doesn't, the process for adding an item, and the schema. Each artifact file carries front-matter metadata, a body, and a timeline of every change.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A &lt;strong&gt;signal&lt;/strong&gt; is the unit that makes loops compound. It captures a product idea, a friction, or a missed opportunity, links to its raw sources (a support ticket, a customer quote), and any loop can read or write it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Contracts&lt;/strong&gt; - one per loop, usually a &lt;code&gt;README&lt;/code&gt; in the loop's folder. It states the goal, the workflow, the boundaries, the outstanding backlog, and a timeline. Every time the loop fires, it reads its contract first - goal, workflow, what happened last time - then takes the next best action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs&lt;/strong&gt; - a single global work-log file. Different from the timelines because your day mixes reviewing loop output with hands-on copilot work. Before an agent starts a big task it reads the last 5-10 entries; when it finishes it appends what it did. That's how cross-domain context survives between sessions.&lt;/p&gt;

&lt;p&gt;The workflow to stand one up: run the loop manually once as a test, calibrate the workflow with the agent, then ask it to write the contract and register the trigger. Test run first, loop second.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Writing a Verifier Is Like Defining a Reward Function
&lt;/h2&gt;

&lt;p&gt;If you've touched reinforcement learning, this clicks instantly. In RL you don't tell the agent every move - you define the &lt;em&gt;reward&lt;/em&gt;, and the agent iterates toward it on positive and negative signal.&lt;/p&gt;

&lt;p&gt;That's exactly what you're doing here. You are not training the model. You are &lt;strong&gt;defining the reward&lt;/strong&gt;: the end goal, and what counts as good. Your domain knowledge - knowing what correct looks like in &lt;em&gt;your&lt;/em&gt; problem - is the moat. The model is a commodity. The reward function is yours.&lt;/p&gt;

&lt;p&gt;This is also why the field keeps drifting toward &lt;a href="https://www.aibuilderclub.com/blog/harness-six-components?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;harness engineering&lt;/a&gt;: the leverage isn't in the phrasing anymore, it's in the system around the model - context, tools, state, and the evaluation loop that decides when to stop. Loop engineering is that same move, named from the loop's point of view.&lt;/p&gt;

&lt;p&gt;And watch where the vocabulary goes next. Once you accept that the verifier is the point, the natural follow-up question is &lt;em&gt;how do you write a good one&lt;/em&gt; - which is exactly the ground "evals" cover. Ng's own advice ("build a set of evals when the system keeps hitting the same problems") points straight at it, and the term already circulating for this next layer is &lt;strong&gt;eval engineering&lt;/strong&gt;: formalizing the verifier into a versioned dataset you can measure against. If loop engineering is designing the loop, eval engineering is designing the bar the loop clears. Same lineage, one level deeper.&lt;/p&gt;

&lt;p&gt;Which is why I keep saying it: &lt;strong&gt;writing the verifier is the new prompt engineering.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Is Loop Engineering Just a New Buzzword?
&lt;/h2&gt;

&lt;p&gt;I'd be doing you a disservice not to flag the counter-take, because in the three weeks after the term went viral, the skeptic case grew real teeth. The strongest version has four distinct arguments, not one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The vocabulary mockery.&lt;/strong&gt; One widely-shared post maps the whole lexicon back to CS primitives - "a while loop becomes 'loop engineering'... unit tests become 'evals'" - and it's now a genre: a 1,800-comment Hacker News thread arguing agents are "just a while loop with an LLM call," and an entire site (extra-steps.dev) dedicated to the bit, both rounded up in &lt;a href="https://posthog.com/newsletter/loops" rel="noopener noreferrer"&gt;PostHog's "WTF is loop engineering"&lt;/a&gt;. Anyone who's written a CI pipeline or a Kubernetes reconciliation loop has been "designing loops" for years.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The autonomy check.&lt;/strong&gt; &lt;a href="https://www.theregister.com/ai-and-ml/2026/06/24/loop-engineering-latest-ai-buzzword-still-needs-humans-in-the-loop/5261735" rel="noopener noreferrer"&gt;The Register's June 24 take&lt;/a&gt;: the latest AI buzzword "still needs humans in the loop." The demos hide how much steering real work still takes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The economic critique.&lt;/strong&gt; Ed Zitron's version: the trend amounts to "celebrating and evangelizing autonomous token consumption" - spending the model vendors would very much like to stimulate. And he has a live exhibit: Uber reportedly capped engineers at $1,500/month for agent tooling after burning through its annual AI budget in four months. An unattended loop with a weak verifier doesn't fail loudly; it fails &lt;em&gt;at token prices, all night&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The sampling-bias point.&lt;/strong&gt; The subtlest one, from developer &lt;a href="https://x.com/_kboy_/status/2072169280150327436" rel="noopener noreferrer"&gt;@_kboy_ on X&lt;/a&gt;: Claude Code solving "writing software" is real, but that doesn't "give anyone the evidence to start defining how everyone should develop software" - the vendors' data comes from people already using their product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both things are still true at once, and that's the honest read. The word is riding a wave &lt;em&gt;and&lt;/em&gt; the shift under it is real. The tell is who's using it seriously: Boris Cherny (Claude Code's creator), Peter Steinberger (OpenClaw's creator), and Andrew Ng - who wrote an &lt;a href="https://x.com/AndrewYNg/status/2071988145667928442" rel="noopener noreferrer"&gt;entire letter&lt;/a&gt; mapping out his three loops - are not chasing a hashtag. When the people building the tools and the person who taught half the industry machine learning independently converge on the same frame, the frame is load-bearing. (And the wave is still rising: three weeks in, "Loop Engineer" is already a module title in GenAI bootcamp curricula, and Jensen Huang was echoing "prompt engineering is dead" on stage.)&lt;/p&gt;

&lt;p&gt;So here's your filter. Ignore the &lt;em&gt;word&lt;/em&gt;. Look at whether the underlying shift is real:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you increasingly designing systems that run agents, instead of prompting agents directly? &lt;strong&gt;Yes.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Is the scarce, valuable part now defining "done" and "good," rather than phrasing the request? &lt;strong&gt;Yes.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Does a loop with a weak verifier reliably produce expensive garbage? &lt;strong&gt;Also yes - see Uber's invoice.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the thing to notice: every serious criticism above attacks &lt;em&gt;weak loops&lt;/em&gt;, not the discipline. Loops that still need un-budgeted human steering. Loops that burn tokens with no &lt;a href="https://www.aibuilderclub.com/blog/ai-agent-reliability-cost-control?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;halt condition or spend cap&lt;/a&gt;. Loops graded on the vendor's own telemetry. The skeptics aren't refuting loop engineering - they're describing what happens when you skip the verifier, which is the entire argument of this guide. The label is optional. The shift is not. Whether you call it loop engineering or just "building agents that don't waste my money," the move is the same: &lt;strong&gt;stop perfecting prompts, start writing verifiers.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Your Loop Engineering Starting Checklist
&lt;/h2&gt;

&lt;p&gt;If you build one loop this week, run it through this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define "done" in measurable terms&lt;/strong&gt; before you write a single instruction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pin the passes&lt;/strong&gt; - the tests, the rubric, the eval - &lt;em&gt;up front&lt;/em&gt;, not after.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose open vs closed&lt;/strong&gt; by &lt;code&gt;need-for-novelty x budget-you'll-risk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always attach the run data&lt;/strong&gt; to whatever you hand back to a human.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use the least autonomous harness&lt;/strong&gt; that gets the result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set the trigger&lt;/strong&gt; - cron, webhook, or another agent - so it runs without you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give it shared folders&lt;/strong&gt; - artifacts, a loop contract, a global log - so the next run, and every other loop, can build on this one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do that and you've crossed the line from someone who &lt;em&gt;prompts&lt;/em&gt; AI to someone who &lt;em&gt;engineers the system that does the work.&lt;/em&gt; That's the whole skill. The rest is reps.&lt;/p&gt;




&lt;h2&gt;
  
  
  Related Content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/loop-engineering-vs-harness-engineering?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Loop Engineering vs Harness Engineering&lt;/a&gt;&lt;/strong&gt; - The boundary between the two disciplines, the failure modes of each, and which to build first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/how-to-evaluate-ai-agents?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;How to Evaluate AI Agents&lt;/a&gt;&lt;/strong&gt; - The generator-evaluator pattern, traces, and why self-evaluation skews optimistic. The production version of "write a verifier."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/harness-six-components?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Harness: The 6 Components&lt;/a&gt;&lt;/strong&gt; - Context, tools, orchestration, state, evaluation, recovery. The system around the loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/claude-code-dynamic-workflows?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Dynamic Workflows: Orchestrate Subagents at Scale&lt;/a&gt;&lt;/strong&gt; - Move the loop into a script and run up to 1,000 subagents without flooding context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/prompt-context-harness-evolution?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;From Prompts to Loops: The 4 Shifts&lt;/a&gt;&lt;/strong&gt; - Why AI engineering moved from phrasing to information to control to loops that run without you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.aibuilderclub.com/blog/hermes-nous-research-self-improving-agent?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;Hermes: Self-Hosted, Never Forgets&lt;/a&gt;&lt;/strong&gt; - The "runs while you sleep" autonomous-agent pattern taken to its end.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Start Here
&lt;/h2&gt;

&lt;p&gt;Pick one repetitive task this week. Before you write a single instruction, write down what "done" means in measurable terms. Then pin the checks, choose open or closed, and let the loop run against &lt;em&gt;your&lt;/em&gt; bar instead of the model's.&lt;/p&gt;

&lt;p&gt;For closed-loop templates, verifier checklists, and teardowns of loops that shipped (and loops that burned money), join the AI Builder Club - come ship something real.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.aibuilderclub.com" rel="noopener noreferrer"&gt;Join AI Builder Club&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.aibuilderclub.com/blog/loop-engineering-guide-2026?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;AI Builder Club&lt;/a&gt;, where the full &lt;a href="https://www.aibuilderclub.com/blog?utm_source=devto&amp;amp;utm_campaign=offsite-syndication" rel="noopener noreferrer"&gt;free agent-engineering curriculum&lt;/a&gt; lives.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aiagents</category>
      <category>loopengineering</category>
      <category>evaluation</category>
      <category>production</category>
    </item>
  </channel>
</rss>
