<script data-pm-proxy="intercept"></script><?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[0xCodila]]></title><description><![CDATA[0xCodila]]></description><link>https://0xcodila.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!3OVV!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faffa961c-5451-4073-af7a-ab714809bc8e_400x400.jpeg</url><title>0xCodila</title><link>https://0xcodila.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 04 Sep 2026 18:19:22 GMT</lastBuildDate><atom:link href="/__u/0xcodila.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[0xCodila]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[0xcodila@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[0xcodila@substack.com]]></itunes:email><itunes:name><![CDATA[0xCodila]]></itunes:name></itunes:owner><itunes:author><![CDATA[0xCodila]]></itunes:author><googleplay:owner><![CDATA[0xcodila@substack.com]]></googleplay:owner><googleplay:email><![CDATA[0xcodila@substack.com]]></googleplay:email><googleplay:author><![CDATA[0xCodila]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Anthropic hired this engineer at $250k-$600k/year because he can built projects with zero lines of code - in Claude chat: ]]></title><description><![CDATA[in this 30-min workshop he showed exactly how, using loops - from 0% to 100%]]></description><link>https://0xcodila.substack.com/p/anthropic-hired-this-engineer-at</link><guid isPermaLink="false">https://0xcodila.substack.com/p/anthropic-hired-this-engineer-at</guid><dc:creator><![CDATA[0xCodila]]></dc:creator><pubDate>Sat, 01 Aug 2026 12:39:29 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/209371862/08bd1143b094ba1065108de702cf7e34.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><strong><span>here&#8217;s workflow, step by step:</span></strong><span><br><br></span><strong><span>step 1 &#8594; </span></strong><span>set your rules once at the top: &#8220;</span><em><span>no preamble, use artifacts, you&#8217;re a React expert</span></em><span>&#8220; - every reply after that stays on rails<br><br></span><strong><span>step 2 &#8594;</span></strong><span> load the docs plus a random Medium article about the API - the human explanation teaches it more than the reference<br><br></span><strong><span>step 3 &#8594;</span></strong><span> wrap your ask in XML tags and tell it to ask you questions first. Answer 5, and the scope is locked before a single file exists<br><br></span><strong><span>step 4 &#8594;</span></strong><span> now run the loop: screenshot the broken UI, paste it back, let it fix, screenshot again - each pass gets closer - this is the agentic loop in its simplest form<br><br></span><strong><span>step 5 &#8594;</span></strong><span> push to GitHub, then paste the repo link in -  every next loop iteration builds on working code, not chat history<br><br>most people never did this - it pays for itself on day one<br><br></span><strong><span>watch </span></strong><span>&amp; </span><strong><span>bookmark!</span></strong></p>]]></content:encoded></item><item><title><![CDATA[Graph Engineering: build 1000+ agent loops in one window, from one prompt (full 5-step course)]]></title><description><![CDATA[THE Loop Engineering&#8217;s successor and the workflow that runs your agents 10x wider...]]></description><link>https://0xcodila.substack.com/p/graph-engineering-build-1000-agent</link><guid isPermaLink="false">https://0xcodila.substack.com/p/graph-engineering-build-1000-agent</guid><dc:creator><![CDATA[0xCodila]]></dc:creator><pubDate>Fri, 31 Jul 2026 22:21:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ac858ebb-9db8-40f4-9294-c79536639638_1730x909.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><span>THE Loop Engineering&#8217;s successor and the workflow that runs your agents 10x wider...</span></strong></p><p><span>Most people who build a multi-step agent end up with a </span><strong><span>straight line</span></strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://0xcodila.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><em><span>step one, step two, step three. Each one waiting for the last to finish before it starts</span></em></p><blockquote><p><span>Here&#8217;s what almost nobody checks: </span><strong><span>half those steps never needed to wait</span></strong></p></blockquote><p><span>They just queue, one job at a time, until the context window fills and the agent forgets what it was doing</span></p><ul><li><p><span>It wasn&#8217;t slow because the model was weak</span></p></li><li><p><span>It was slow because </span><strong><span>you drew a line where the work was a </span></strong><em><strong><span>graph</span></strong></em></p></li></ul><p><span>This guide takes you from that line to a graph that fans out across a fleet and checks its own work</span></p><blockquote><p><strong><span>Five steps. By Step 2 you&#8217;ll have built one - </span></strong><span> It gets you a working graph and names the traps that break real ones and I&#8217;ll flag where the hard parts begin<br><br></span><strong><span>before the alpha -  subscribe to my substack for more fresh alpha &#8595;</span></strong></p><p><a href="/__u/substack.com/@0xcodila"><span>https://substack.com/@0xcodila</span></a></p></blockquote><h2><strong><span>Chapter 0 - What graph engineering actually is</span></strong></h2><p><span>A month ago the field was talking about </span><strong><span>loops.</span></strong></p><p><span>Peter Steinberger caught it in nine words:</span></p><p><span>Are we still talking loops or did we shift to graphs yet?</span></p><p><strong><span>A loop is one cycle of getting better:</span></strong></p><blockquote><p><span>try something &#8594; check the result &#8594; adjust &#8594; go again</span></p></blockquote><p><strong><span>That&#8217;s the atom</span></strong><span>: a single agent improving one thing on repeat</span></p><p><strong><span>But the single loop has a known failure  - a</span></strong><span> support team ties a feedback loop to one metric: </span><em><span>ticket resolution rate</span></em></p><p><span>The number climbs for months while satisfaction drops. The bot learned to close tickets fast instead of solving them</span></p><p><span>That&#8217;s </span><strong><span>Goodhart&#8217;s law.</span></strong><span> A loop can only see its own metric. It can&#8217;t ask whether the target is right, or notice its own measurement drifting.</span></p><p><strong><span>The answer isn&#8217;t a better loop. It&#8217;s a graph of loops</span></strong><span> - a network where cycles watch and correct each other</span></p><p><span>For agents, that means one thing:</span></p><blockquote><p><span>Stop writing one agent that does everything in a line - design the </span><strong><span>shape</span></strong><span> of the work - what runs before what, what runs at the same time, what waits.</span></p></blockquote><p><strong><span>Nodes do the thinking. Edges carry the results</span></strong></p><p><span>And Claude Code shipped the tooling to build these directly:</span></p><p><a href="https://claude.com/blog/introducing-dynamic-workflows-in-claude-code"><span>dynamic workflows</span></a></p><h2><strong><span>Step 1 - See the edges that aren&#8217;t there</span></strong></h2><p><span>A graph has two parts:</span></p><ul><li><p><strong><span>A node</span></strong><span> is one unit of work: one agent, one job, one input, one output</span></p></li><li><p><strong><span>An edge</span></strong><span> is a dependency: this node&#8217;s output feeds that node&#8217;s input</span></p></li></ul><p><span>The mistake everyone makes is treating </span><strong><span>&#8220;and then&#8221;</span></strong><span> as an edge.</span></p><blockquote><p><span>&#8220;Summarize this file </span><strong><span>and then</span></strong><span> tell me the weather&#8221;</span></p></blockquote><p><span>The weather doesn&#8217;t read the summary.</span></p><p><span>Those are two independent jobs a linear script chains for no reason. Each one waits on the last for nothing</span></p><p><strong><span>The habit that starts everything:</span></strong></p><p><span>For every &#8220;and then,&#8221; ask - </span><em><span>does the next step actually read the previous step&#8217;s output?</span></em></p><ul><li><p><strong><span>If yes</span></strong><span> &#8594; real edge. Keep the order.</span></p></li><li><p><strong><span>If no</span></strong><span> &#8594; no edge. The wait is wasted. Run them side by side.</span></p></li></ul><p><span>If no data crosses between two boxes, they&#8217;re independent.</span></p><p><span>That independence is what you&#8217;ll exploit for the rest of this guide</span></p><blockquote><p><span>Your plain &#8220;do A, then B, then C&#8221; agent is already a graph -  just the saddest one: a single chain where if C stalls, D never happens.</span></p></blockquote><h2><strong><span>Step 2 - Build your first graph (start to finish)</span></strong></h2><p><span>Enough theory. Build one and watch it run.</span></p><p><strong><span>Before you start:</span></strong></p><ul><li><p><strong><span>Claude Code v2.1.154+</span></strong><span> (check with claude --version)</span></p></li><li><p><strong><span>A paid plan.</span></strong><span> On Max, Team, or Enterprise, workflows are on by default. On Pro, switch on the </span><strong><span>Dynamic workflows</span></strong><span> row in </span><em><strong><span>/config</span></strong></em></p></li></ul><p><strong><span>1. Open a repo you know.</span></strong></p><p><span>A real one, so the result means something.</span></p><p><strong><span>2. Paste this prompt (off by Anthropic):</span></strong></p><pre><code><code>Create a workflow to audit every route file under src/routes/
for missing auth checks. Spawn one agent per file, then run an
independent verifier on each finding before reporting.
Analyze a maximum of 20 files to start.</code></code></pre><p><span>Swap </span><em><strong><span>src/routes/</span></strong></em><span> for where your files live. The &#8220;max 20&#8221; line keeps your first run cheap.</span></p><p><strong><span>3. Watch &#8220;workflow&#8221; light up.</span></strong></p><p><span>Claude Code highlights it: </span><em><span>&#8220;Dynamic workflow requested.&#8221;</span></em><span> That&#8217;s your signal a graph is building, not a normal chat</span></p><p><strong><span>4. Approve the plan.</span></strong></p><p><span>Claude writes a JavaScript orchestration script and shows the phases first. Read them, pick </span><strong><span>&#8220;Yes, run it.&#8221;</span></strong></p><p><strong><span>5. Let the fleet run.</span></strong></p><p><span>One agent per file, in parallel, while your session stays free.</span></p><p><span>Type /workflows to watch it live: scope, fan-out, verify, synthesize.</span></p><p><strong><span>6. Read the one answer.</span></strong></p><p><span>Not twenty separate chats. One report - because the intermediate results lived in the script&#8217;s variables, not your context.</span></p><blockquote><p><strong><span>That&#8217;s a graph.</span></strong><span> A dozen agents, from one sentence.</span></p></blockquote><p><span>About the &#8220;zero tokens&#8221; claim you&#8217;ll hear</span></p><p><span>The coordination script is code<br>So passing results between agents doesn&#8217;t re-spend context the way a chat handoff does.</span></p><p><span>But </span><strong><span>the agents still cost usage.</span></strong><span> A workflow costs </span><em><span>meaningfully more</span></em><span> than a normal session.</span></p><p><span>The saving is in coordination, not the work. Start scoped, watch usage, then widen.</span></p><ul><li><p><span>Make it yours</span></p></li></ul><p><span>When a run is good, press </span><strong><span>s</span></strong><span>.</span></p><p><span>It saves to</span><em><strong><span> ~/.claude/workflows</span></strong></em><span>, re-runnable by name<br><br>Now change the task and keep the shape. Swap &#8220;missing auth checks&#8221; for &#8220;unhandled promises,&#8221; or &#8220;functions over 100 lines</span></p><h2><strong><span>How far this scales (article name)</span></strong></h2><p><span>One workflow run can fan out to </span><strong><span>1,000 agents</span></strong><span>, with up to 16 working at once<br><br>That&#8217;s where &#8220;1000+ loops in one window&#8221; comes from - not a metaphor, the feature&#8217;s actual ceiling</span></p><ul><li><p><strong><span>And the scale is the point<br></span></strong><span><br>A thousand agents means a job no single context could ever hold - a whole codebase audited at once, a migration that touches every file, a search that runs a thousand angles in parallel<br><br>The 16-at-once limit just means the fleet moves in waves, chewing through all thousand without you babysitting a single one</span></p></li></ul><blockquote><p><em><span>Start at 20 to see how a run behaves and what it costs - then open it up - because this is the ceiling nobody else is building against</span></em></p></blockquote><h2><strong><span>Step 3 - The part that actually breaks</span></strong></h2><p><strong><span>You built a graph. Here&#8217;s where real ones fall over.</span></strong></p><p><em><span>Two failures matter most</span></em></p><ul><li><p><strong><span>Failure one: the graph agrees with itself</span></strong></p></li></ul><p><strong><span>When an agent checks its own work, it goes easy on itself.</span></strong><span> Models prefer their own outputs</span></p><p><span>So you put a </span><strong><span>verifier on the edge</span></strong><span> - a separate node that confirms a finding before it flows downstream.</span></p><p><span>The catch nobody names: </span><strong><span>the verifier needs clean context</span></strong></p><p><span>Hand it the same conversation the executor had, and it isn&#8217;t verifying. It&#8217;s agreeing with itself in a different font</span></p><blockquote><p><span>A graph of agents sharing one context is a single loop in a costume. It fails the same way - later, more expensively, with more green lights on the way down</span></p></blockquote><p><span>So the verifier is a </span><strong><span>fresh node - </span></strong><span> Own context - Checking a </span><strong><span>real signal</span></strong><span> - not &#8220;</span><em><span>did the agent say it&#8217;s done</span></em><span>,&#8221; but &#8220;</span><em><span>does the test actually pass</span></em><span>&#8220;</span></p><ul><li><p><strong><span>Failure two: agents stepping on each other</span></strong></p></li></ul><p><em><span>This isn&#8217;t hypothetical</span></em></p><p><span>When Bun&#8217;s team first fanned a large port across many agents, the run </span><strong><span>failed operationally </span></strong><span>and agents used shared git commands in one workspace and overwrote each other</span></p><p><span>The fix was structural, not clever prompting. They forbade the unsafe commands and gave each group its </span><strong><span>own isolated worktree</span></strong></p><p><span>That&#8217;s the real lesson of parallelism - two agents writing the same file race</span></p><p><span>Before you fan out, answer three questions:</span></p><ul><li><p><em><span>Where does each agent work?</span></em></p></li><li><p><em><span>How do results merge?</span></em></p></li><li><p><em><span>What happens when two disagree?</span></em></p></li></ul><p><span>A graph without that plan doesn&#8217;t scale - It fails faster</span></p><h2><strong><span>Step 4 - Six graphs to build this week</span></strong></h2><p><span>The method: </span><strong><span>find the real edges &#8594; fan out &#8594; verify on independent context &#8594; isolate the workers<br><br>///</span></strong></p><p><span>Each of these is that same shape, aimed at a new job. Change the task line and go:</span></p><ul><li><p><strong><span>Security sweep</span></strong><span> - one agent per file hunting missing auth, a verifier confirming each hit (the one you built)</span></p></li><li><p><strong><span>Cited report with /deep-research</span></strong><span> - ships already: splits your question into angles, searches in parallel, agents refute each other before writing</span></p></li><li><p><strong><span>Port a module</span></strong><span> - file by file, tests as a gate, failures looped back</span></p></li><li><p><strong><span>Adversarial diff review</span></strong><span> - routed by size: small change &#8594; one pass; big one &#8594; full parallel audit</span></p></li><li><p><strong><span>Scheduled ecosystem scan</span></strong><span> - save once, re-run by name</span></p></li><li><p><strong><span>Discovery of unknown size</span></strong><span> - finders run in parallel, each result checked against everything seen, looping until two rounds find nothing new<br><br>//</span></p></li></ul><p><em><a href="https://simonwillison.net/2026/Jul/8/rewriting-bun-in-rust/"><span>https://simonwillison.net/2026/Jul/8/rewriting-bun-in-rust/</span></a></em></p><p><span>Bun&#8217;s Zig-to-Rust port ran on this exact machinery.</span></p><p><span>Around 50 workflows, a peak of 64 agents in parallel. Roughly 535,000 lines of Zig turned into over a million lines of Rust, in 11 days.</span></p><p><span>It also cost about </span><strong><span>$165,000</span></strong><span> in usage, It needed a human designing and monitoring the whole thing<br>And it drew public criticism over whether that much AI-authored code can be safely reviewed.</span></p><p><span>The scale is real. So is the price, and the supervision</span></p><h2><strong><span>Step 5 - The anchors that keep a graph honest</span></strong></h2><p><strong><span>Topology alone doesn&#8217;t buy truth</span></strong></p><p><span>A network of agents all confirming each other, none of them touching anything real, fails exactly like the single loop did - just with more moving parts</span></p><p><span>The graph needs </span><strong><span>anchors:</span></strong><span> nodes that can&#8217;t be argued with</span></p><ul><li><p><strong><span>Tests that actually ran</span></strong><span> - not &#8220;should pass,&#8221; </span><em><span>did</span></em><span> pass</span></p></li><li><p><strong><span>A verifier on evidence, not vibes</span></strong></p></li><li><p><strong><span>Frozen rules</span></strong><span> the agents are never allowed to tune - because they&#8217;re the ones an optimizer would weaken</span></p></li></ul><p><strong><span>The graph is only as honest as the things in it that refuse to move</span></strong></p><h2><strong><span>When a graph is the wrong choice</span></strong></h2><p><span>Most tasks are not graphs. Reaching for one when you don&#8217;t need it just burns money and adds ways to fail.</span></p><p><strong><span>Skip the graph when:</span></strong></p><ul><li><p><strong><span>The task is small or isolated.</span></strong><span> Adding a function, fixing one bug. A workflow is pure overhead here - a single agent is faster and cheaper.</span></p></li><li><p><strong><span>You need tight oversight.</span></strong><span> If you want to read and approve every step before the next one runs, a graph&#8217;s whole point (running wide without you) works against you.</span></p></li><li><p><strong><span>You don&#8217;t know what you&#8217;re looking for yet.</span></strong><span> Exploratory work wants one agent you can steer, not a fleet committed to a plan before you understand the problem.</span></p></li><li><p><strong><span>The steps genuinely depend on each other.</span></strong><span> If every step reads the last step&#8217;s output, it&#8217;s a real chain. Parallelism has nothing to grab. Forcing a graph onto a truly sequential task just adds coordination cost for zero speedup.</span></p></li></ul><p><span>The tell is Step 1. If you can&#8217;t find two boxes with no arrow between them, there&#8217;s no graph to build. It&#8217;s a loop, and a loop is fine.</span></p><p><span>A graph is a tool for </span><strong><span>width</span></strong><span> - independent work, done at once<br>When the work isn&#8217;t wide, the line was never the problem...</span></p><h2><strong><span>The shift</span></strong></h2><blockquote><p><strong><span>A prompter asks a question. An architect draws a graph.</span></strong></p></blockquote><p><span>The linear agent was never the ceiling.</span></p><p><span>It was the first shape - the one everyone reaches for because it matches how we type: one line, one thing at a time.</span></p><p><span>Once you see the nodes and edges, you stop asking the agent to </span><em><span>do more</span></em><span> and start asking the graph to </span><em><span>do it wider:</span></em></p><ul><li><p><strong><span>Fan out</span></strong><span> where the work is independent</span></p></li><li><p><strong><span>Gate the edges</span></strong><span> where confidence matters</span></p></li><li><p><strong><span>Freeze the nodes</span></strong><span> that hold the truth</span></p></li></ul><p><span>Most people will keep queueing steps in a line.</span></p><p><span>The few who learn to draw the graph, and to respect what breaks it, will run a fleet.</span></p><blockquote><p><strong><span>Draw the graph. Stay the architect.<br><br></span></strong><em><span>Start with the prerequisite:</span></em></p><p><em><a href="https://x.com/0xCodila/status/2072329149520232639"><span>Loop Engineering</span></a></em></p><p><em><span>- the single loop this is built on<br></span></em></p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://0xcodila.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Loop Engineering: The Karpathy Method - and the workflow that just made it 5x better]]></title><description><![CDATA[Most people use AI the same way they used Google in 2005]]></description><link>https://0xcodila.substack.com/p/loop-engineering-the-karpathy-method</link><guid isPermaLink="false">https://0xcodila.substack.com/p/loop-engineering-the-karpathy-method</guid><dc:creator><![CDATA[0xCodila]]></dc:creator><pubDate>Sun, 19 Jul 2026 07:52:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fa183dd8-0c57-47b3-908c-38ccb7b5c7d2_1504x602.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong><span>Most people use AI the same way they used Google in 2005<br></span></strong><span><br>- Type something, read what comes back, type again<br><br>The AI sits there doing nothing until you push it - </span><strong><span>you are the engine</span></strong><span> - The AI is a wrench you pick up and put down between every turn.</span></p><blockquote><p><span>That worked fine for two years. It does not work anymore.</span></p></blockquote><p><span>The people getting 10x more out of AI right now are not writing better prompts and not using secret models.<br><br></span><strong><span>They are building loops</span></strong><span>. And the person who made this idea impossible to ignore is </span><em><strong><span>Andrej Karpathy<br><br></span></strong></em><strong><span>This article will explain: <br></span></strong><span><br>1 - from scratch what a loop is<br><br>2 - show you how to use them the way Andrej Karpathy does<br><br>3 -  then describe a method to improve this approach by a factor of 5<br><br>4 - and provide tips for getting started.</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://0xcodila.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong><span>Part 1 &#183; The Basics</span></strong></h2><blockquote><p><strong><span>1.1 - What a loop actually is ? </span></strong></p></blockquote><p><span>A </span><strong><span>prompt</span></strong><span> is one instruction. You ask, you get an answer, you decide what to do next.</span></p><p><span>A </span><strong><span>loop</span></strong><span> is a goal the AI keeps working toward until it gets there - </span><strong><span>without you sitting in the chair prompting every step</span></strong></p><p><span>The AI discovers what needs doing, plans how to do it, does the work, checks the result, and if it is not there yet - feeds the result back in and goes again. You define the purpose </span><strong><span>once</span></strong><span>. <br><br></span><strong><span>The loop handles the rest.<br></span></strong><span><br>Three parts make or break it:</span></p><ul><li><p><strong><span>A verifier</span></strong><span> is what turns repetition into progress. Without a real check on the result, you do not have a loop - you have </span><strong><span>the agent agreeing with itself on repeat.</span></strong><span> The check can be a test that passes or fails, a metric that goes up or down, a build that compiles or crashes. No gate means the agent grades its own homework.</span></p></li><li><p><strong><span>State</span></strong><span> is what makes the loop learn. Each pass, the AI has to know what it already tried. Without that, it repeats the same mistake every cycle. A small file on the side records what is done, what failed, what is next. </span><strong><span>Tomorrow&#8217;s run resumes instead of starting from zero.<br><br>A stop condition</span></strong><span> keeps it sane. A loop with no exit runs until it succeeds, breaks, or drains your account. Every working loop has two ways to stop: </span><strong><span>the goal is met</span></strong><span>, or a hard limit says &#8220;after N tries, stop and report&#8221;</span></p></li></ul><blockquote><p><strong><span>2.2. Do you actually need one? </span></strong><em><strong><span>Run this test first.</span></strong></em></p></blockquote><p><span>Most articles sell you the loop before they tell you when it is a mistake.</span></p><p><strong><span>A loop earns its cost only when all four of these are true.</span></strong><span> Miss one and it costs more than it returns.</span></p><ul><li><p><strong><span>The task repeats</span></strong><span> - at least weekly. Less than that and the setup cost never pays itself back. A one-time job is still better served by one good prompt.</span></p></li><li><p><strong><span>Verification is automated</span></strong><span> - a test suite, a type checker, a linter, a build. Something that can fail the work </span><strong><span>without you in the room.</span></strong><span> No automated check means you are back reading every diff - the exact job the loop was supposed to remove.</span></p></li><li><p><strong><span>Your token budget can absorb the waste</span></strong><span> - loops re-read context, retry, explore. That burns tokens whether the run ships anything or not. This scales with budget, which is why it reads as obvious to people with free tokens and </span><strong><span>reckless to people on a $20 plan.</span></strong></p></li><li><p><strong><span>The agent has real tools</span></strong><span> - logs, a reproduction environment, the ability to run the code it writes and see what breaks. Without that, the loop iterates blind.<br><br></span><strong><span>The honest take:</span></strong><span> loop engineering is real, and </span><strong><span>most people do not need the heavy version yet.</span></strong><span> If you are on a consumer plan with limited tokens, a heavy loop will hit your rate limit or your wallet before the productivity gain arrives.</span></p></li></ul><h2><strong><span>Part 2 &#183; The Karpathy Loop</span></strong></h2><p><strong><span>How Karpathy stopped prompting and started looping<br></span></strong><span><br>In March 2026, Andrej Karpathy released a GitHub repo called </span><strong><span>AutoResearch</span></strong><span>.</span></p><blockquote><p><strong><span>Three files. About 630 lines of code.</span></strong></p></blockquote><p><span>Within a month it had </span><strong><span>66,000+ stars</span></strong><span> and Fortune magazine gave it a name: </span><strong><span>The Karpathy Loop.</span></strong></p><p><span> -</span></p><p><a href="https://github.com/karpathy/autoresearch"><span>karpathy autoresearch</span></a></p><p><span> - </span></p><p><span>The setup is almost absurdly simple:</span></p><ul><li><p><strong><a href="https://train.py/"><span>train.py</span></a></strong></p><p><span> - the training script. </span><strong><span>The only file the agent is allowed to touch.</span></strong></p></li><li><p><strong><a href="https://prepare.py/"><span>prepare.py</span></a></strong></p><p><span> - the evaluator that scores the model. The agent cannot touch it. If it could, it would just make the test easier instead of making the model better.</span></p></li><li><p><strong><span>program.md</span></strong><span> - the instructions that tell the agent what to explore and what constraints to respect.<br><br><br></span><strong><span>The agent runs in a loop:</span></strong></p></li></ul><blockquote><p><span>Read the code &#8594; propose a change &#8594; train for five minutes &#8594; check if the result improved &#8594; commit if it did, roll back if it did not &#8594; repeat.</span></p></blockquote><p><span>You go to sleep. You wake up to a log of experiments and hopefully a better model.</span></p><p><strong><span>The human never touches</span></strong></p><p><strong><a href="https://train.py/"><span>train.py</span></a></strong></p><p><strong><span>.</span></strong><span> You write program.md. - the agent handles execution.<br><br> - </span><strong><span>The results:</span></strong></p><p><span>Karpathy pointed it at a model he had already carefully tuned </span><strong><span>by hand over two decades of experience.</span></strong><span> He let it run for two days.</span></p><ul><li><p><span>The agent ran </span><strong><span>700 experiments</span></strong></p></li><li><p><span>Found </span><strong><span>20 improvements</span></strong><span> he missed</span></p></li><li><p><span>Things like a </span><strong><span>missing scalar multiplier in the attention mechanism</span></strong><span> that made attention too diffuse across heads</span></p></li><li><p><span>Not a bug a fuzzer would catch - a subtle optimization that a careful human could have found but did not</span></p></li></ul><p><span>Because </span><strong><span>humans get tired after experiment number twelve.</span></strong><span> The agent does not get tired at all.</span></p><p><strong><span>Shopify CEO Tobi Lutke</span></strong><span> tried it overnight on an internal model:</span></p><ul><li><p><span>He woke up to a </span><strong><span>19% quality improvement</span></strong></p></li><li><p><span>The optimized model was </span><strong><span>half the size</span></strong><span> of his previous one</span></p></li><li><p><span>A smaller model beating a bigger one - because the agent optimized for the hardware instead of defaulting to &#8220;bigger is better&#8221;</span></p></li></ul><blockquote><p><a href="https://fortune.com/2026/03/17/andrej-karpathy-loop-autonomous-ai-agents-future/"><span>The Karpathy Loop Fortune</span></a></p><p><span><br>Karpathy&#8217;s core insight: if you have an objective metric, you should not be the one running the experiments. </span><strong><span>You are the bottleneck.</span></strong><span> Remove yourself from the loop and let it run.</span></p></blockquote><h2><strong><span>Part 3 &#183; The Building Blocks</span></strong></h2><p><span>Five pieces that make a loop work</span></p><p><span>Every working loop - whether you build it in Claude Code, Codex, or bash scripts - is assembled from </span><strong><span>five pieces.</span></strong><span> <br>Both Claude Code and Codex ship all five now.</span></p><ul><li><p><strong><span>Automation</span></strong><span> - the heartbeat. Something that fires the loop on a schedule, on an event, or on a trigger. <br><br>In Claude Code: /loop for cadence, /goal for running until a condition holds. In Codex: the Automations tab. Without the heartbeat, you ran a script once and forgot about it. </span><strong><span>That is not a loop.</span></strong></p></li><li><p><strong><span>A skill</span></strong><span> - stores project knowledge so the agent stops guessing every session. Your conventions, your build steps, </span><em><span>the thing you do not do because of that one incident three months ago.</span></em><span> <br><br>Written once in a markdown file, read by every run. <br><br>Without skills, the loop re-derives your entire project context from zero every cycle. </span><strong><span>With skills, intent compounds.</span></strong></p></li><li><p><strong><span>Sub-agents</span></strong><span> - split the maker from the checker. <br><br>The model that wrote the code is </span><strong><span>too generous grading its own homework.</span></strong><span> <br><br>A second agent with different instructions catches the things the first one talked itself into. Your writer can be fast and cheap, your reviewer slow and strict. That separation is most of the quality.</span></p></li><li><p><strong><span>Connectors</span></strong><span> - let the loop act inside your real environment. Read your issue tracker, open a PR, ping Slack, update a Linear ticket. <br><br>The difference between an agent that says &#8220;here is the fix&#8221; and </span><strong><span>a loop that ships the fix and tells you about it in the morning.</span></strong></p></li><li><p><strong><span>A verifier</span></strong><span> - the gate. The test, type check, or build that automatically rejects bad work. <br><br>Everything else is plumbing. <br><br></span><strong><span>This is the part that makes the loop real.</span></strong><span> Without it you are paying for an agent to agree with itself all night</span></p></li></ul><h2><strong><span>Part 4 &#183; What Comes After Karpathy</span></strong></h2><p><strong><span>The Bilevel - a Loop on top of the Loop<br></span></strong><span><br>- this is where it gets interesting, hehe xD</span></p><ul><li><p><span>In March 2026, two researchers published a paper on arxiv called </span><strong><span>&#8220;Bilevel Autoresearch: Meta-Autoresearching Itself.&#8221;</span></strong></p></li></ul><p><span>They took Karpathy&#8217;s loop and asked a simple question:</span></p><p><em><span>If autoresearch is itself a form of research - can you autoresearch autoresearch?</span></em></p><blockquote><p><strong><a href="https://arxiv.org/abs/2603.23420"><span>Bilevel Autoresearch</span></a></strong></p></blockquote><p><span>They built a </span><strong><span>second loop on top of the first one:</span></strong></p><ul><li><p><strong><span>Inner loop</span></strong><span> - does what Karpathy&#8217;s original does: propose a change, train, evaluate, keep or discard</span></p></li><li><p><strong><span>Outer loop</span></strong><span> - watches the inner loop work, reads its code and traces, identifies </span><strong><span>where the search process itself is getting stuck</span></strong><span>, and generates new Python code that changes how the inner loop searches. <br>Then it injects that code and lets the inner loop run again.</span></p></li></ul><p><strong><span> - The result:</span></strong></p><p><span>On Karpathy&#8217;s GPT pretraining benchmark:</span></p><ul><li><p><strong><span>5x improvement</span></strong><span> over the standard single loop (-0.045 vs -0.009 val_bpb)</span></p></li><li><p><span>Not 5% better. </span><strong><span>Five times better.</span></strong></p></li><li><p><span>Both loops used </span><strong><span>the same LLM</span></strong><span> - you do not need a smarter model for the meta level</span></p></li><li><p><span>The improvement comes from </span><strong><span>the architecture</span></strong><span>, not from raw intelligence</span></p></li></ul><p><strong><span>What the outer loop actually found:</span></strong><span> the inner loop kept falling into the same search patterns. The LLM has priors about what optimizations to try, and it keeps going back to those priors </span><strong><span>even when they stopped working.</span></strong><span> The outer loop broke those patterns by forcing exploration in directions the model&#8217;s instincts avoided.</span></p><blockquote><p><span>The paper ends with a line worth sitting with: </span><strong><span>&#8220;If autoresearch can meta-autoresearch itself, it can in principle meta-autoresearch anything with a measurable objective.&#8221;</span></strong></p></blockquote><h2><strong><span>Part 5 &#183; Try It Yourself</span></strong></h2><p><strong><span>Run a loop right now - no tools needed<br></span></strong><span><br>You do not need Claude Code or Codex to feel how this works. </span><strong><span>Paste this into any LLM</span></strong><span> and watch what happens:</span></p><pre><code><code>You will work in a loop until the task meets the bar.

TASK:
[describe exactly what you want produced]

SUCCESS CRITERIA (be strict):
- [criterion 1]
- [criterion 2]
- [criterion 3]

LOOP PROTOCOL, repeat every turn:
1. PLAN   - state the single next step.
2. DO     - produce or improve the work.
3. VERIFY - score the result 1-10 on each criterion.
            Be brutally honest. List exactly what is still weak.
4. DECIDE - if every criterion is 8+, print FINAL and stop.
            Otherwise print ITERATING and go again, fixing
            the weakest point first.

RULES:
- Never call it done until every criterion is 8 or higher.
- Each pass must fix the weakest score from the last VERIFY.
- Do not ask me questions. Make a sensible assumption
  and keep going.

Begin.</code></code></pre><p><span>The model drafts, grades its own work against your criteria, finds the weak spot, rewrites, and repeats </span><strong><span>until it clears the bar.</span></strong></p><p><strong><span>That is a loop. You just built one with a paragraph.<br><br></span></strong><span>It is limited - you are still the trigger, there is no schedule, no persistent state, close the tab and it is gone. But it shows the core mechanic. The jump from this to a full autonomous loop is adding the automation, the state file, and the gate.</span></p><h2><strong><span>Part 6 &#183; The Honest Part</span></strong></h2><p><strong><span>What the loop does not fix</span></strong></p><p><span>Loops change the work. </span><strong><span>They do not delete you from it.</span></strong></p><p><span>And two problems get sharper as the loop gets better - not easier:</span></p><ul><li><p><strong><span>Comprehension debt.</span></strong><span> The faster the loop ships code you did not write, the larger the gap between what exists in your repo and what you actually understand. A smooth running loop charges </span><strong><span>compound interest</span></strong><span> on that gap. The day you have to debug a system nobody on the team has read will cost more than the tokens ever did.</span></p></li><li><p><strong><span>Cognitive surrender.</span></strong><span> When the loop runs itself, it is tempting to stop forming an opinion and just accept whatever comes back. Designing the loop is the cure when you do it with judgment - and the accelerant when you do it to avoid thinking. </span><strong><span>Same action, opposite result.</span></strong></p></li></ul><p><span>Two people can build the exact same loop and get completely opposite outcomes. One uses it to move faster on work they understand deeply. The other uses it to </span><strong><span>avoid understanding the work at all.<br><br></span></strong><span>The loop does not know the difference. You do!</span></p><p><span>Karpathy stopped writing code. Cherny stopped prompting. Neither of them stopped thinking. If you take one thing from this, take that.<br></span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://0xcodila.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Build self-managed agent system that uses 90% fewer tokens in 5 steps : subagents, memory, context]]></title><description><![CDATA[Your agents forgets what you told it ten minutes ago - and charges you more for the privilege]]></description><link>https://0xcodila.substack.com/p/build-self-managed-agent-system-that</link><guid isPermaLink="false">https://0xcodila.substack.com/p/build-self-managed-agent-system-that</guid><dc:creator><![CDATA[0xCodila]]></dc:creator><pubDate>Fri, 17 Jul 2026 10:42:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/97a9ddea-ea6d-4aeb-accb-e2e25f93b5b0_1875x839.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>Every turn, it re-sends everything it&#8217;s holding: the whole codebase, the whole doc, the whole history<br><br>You pay for all of it, again, on every single message, then it forgets anyway</span></p><blockquote><p><strong><span>I put together 4 steps that fix the memory and token-spend problem for good  and +1 step that will create self managed agent system for you</span></strong></p></blockquote><h2><strong><span>Step 1 - Get the context out of the window</span></strong></h2><p><span>The instinct is to load everything up front so the model &#8220;</span><em><span>has what it needs</span></em><span>&#8220; <br><br>That&#8217;s the trap - everything you load is something you pay for on every turn until the conversation ends</span></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://0xcodila.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ul><li><p><strong><span>Put the big stuff in a file instead - the book, the codebase, the docs, the logs<br><br></span></strong><span>Then let the agent reach into that file only when it actually needs a piece of it - It can grep for a keyword, read one section, and move on</span></p></li></ul><p><strong><span>The 108,000-token book sits on disk. The question costs you the question.</span></strong></p><p><span>&#8594; This one move is where most of the savings come from. The rest of the steps are about not undoing it</span></p><p><a href="https://code.claude.com/docs/en/prompt-caching"><span>How Claude Code uses prompt caching</span></a></p><h2><strong><span>Step 2 - Send the messy work to a subagent</span></strong></h2><p><span>Some jobs generate a wall of tokens you don&#8217;t want in your main thread - running a test suite, reading a stack trace, crawling a doc site. <br><br>-  All of that noise lands in your context window and stays there, costing you on every following turn.</span></p><p><strong><span>- Hand those jobs to a subagent<br></span></strong><span><br>It does the dirty work in its own separate window, burns through the noise there, and hands you back a clean summary. <br><br>Your main thread never sees the 4,000 lines of test output - it sees &#8220;</span><em><span>three tests failed, here&#8217;s why</span></em><span>&#8220;</span></p><p><span>&#8594; Think of the subagent as a filter- everything loud goes in, one quiet answer comes out</span></p><p><a href="https://code.claude.com/docs/en/prompt-caching"><span>Subagents build their own cache and context</span></a></p><h1><strong><span>Step 3 - memory self-managed agent</span></strong></h1><p><em><span>(the crazy part)<br></span></em><span><br>Your agent starts every session from zero. You re-explain the same context, and you pay tokens to reload it<br><br></span><strong><span>Claude Code fixes this natively</span></strong><span> -and most people don&#8217;t know it&#8217;s already on</span></p><blockquote><p><strong><span>Auto Memory</span></strong><span> means Claude writes its own notes between sessions - build commands, bug fixes, the workarounds you found - and loads them at the start of the next one<br><br></span><strong><span>you don&#8217;t write anything - It decides what&#8217;s worth keeping</span></strong></p></blockquote><p><strong><span>Do this today:</span></strong></p><p><strong><span>&#8594; Run</span></strong><span> </span><em><strong><span>/memory</span></strong></em><span> to see what Claude has already recorded on its own. You&#8217;ll usually find it&#8217;s captured conventions and fixes you never documented.</span></p><p><strong><span>&#8594; Delete</span></strong><span> those lines from your CLAUDE.md. Anything Claude learns after one session doesn&#8217;t belong in the file you pay for on every turn - the memory holds it for free.</span></p><p><strong><span>&#8594; For</span></strong><span> bigger projects, make </span><em><strong><span>MEMORY.md</span></strong></em><span> a table of contents, not a dump <br><br>One line per topic file (</span><em><strong><span>gotchas.md, conventions.md</span></strong></em><span>), so Claude pulls in only the file the current task needs - not all 200 lines.</span></p><ul><li><p><span>That last move is the whole game in miniature: the agent carries its knowledge forward, but only the slice it needs enters the prefix<br><br>Small prefix, small bill, and you stopped re-explaining yourself.</span></p></li></ul><p><span>&#8594; It&#8217;s already running. Your only job is to stop duplicating in CLAUDE.md what memory already holds.</span></p><p><em><span>Source:</span></em></p><p><em><a href="https://code.claude.com/docs/en/memory"><span>Claude Code auto memory docs</span></a></em></p><p><em><span> and</span></em></p><p><a href="https://youtu.be/geUv4CjPpxI?si=SdlxnX2BZFNWPKtb"><span>Anthropic - Agent memory &amp; &#8220;dreaming</span></a></p><h2><strong><span>Step 4 - Stop breaking the cache</span></strong></h2><p><em><span>(my favorite step)<br></span></em><span><br></span><strong><span>Here&#8217;s the part most people don&#8217;t know is running<br></span></strong><span><br>Everything stable at the front of your prompt - tools, system prompt, that tidy CLAUDE.md - gets cached after the first turn. A cached token costs a tenth of a fresh one</span></p><blockquote><p><strong><span>The catch:</span></strong><span> the cache matches an exact prefix. Change one character before the cache point and everything after it goes back to full price<br><br>Silently. No error.</span></p></blockquote><p><strong><span>The usual culprits:</span></strong></p><ul><li><p><span>A timestamp or date baked into the system prompt - changes constantly, breaks the cache every time.</span></p></li><li><p><span>Switching models mid-session - each model keeps its own cache, so a /model swap re-reads the whole thing from scratch.</span></p></li><li><p><span>A stray space, a reordered tool list, or an MCP tool added halfway through.</span></p></li></ul><p><span>The rule is simple, static stuff at the top, in a fixed order. <br>Anything that changes - the date, the user&#8217;s turn, session junk - goes at the bottom, below the cache point</span></p><p><strong><span>Anthropic </span></strong><span>treats this as serious enough that internal teams declare an incident when their hit rate drops<br><br></span></p><p><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching"><span>Anthropic prompt caching docs</span></a></p><p><span><br>GitHub keeps theirs above 94% and calls a drop to 70% a bug.<br><br>Their CPO put it well - </span><strong><span>it&#8217;s like high-frequency trading</span></strong><span>, </span><strong><span>where 1% </span></strong><span>of efficiency is </span><strong><span>millions of dollars</span></strong></p><p><span>&#8594; Most people are sitting at 40% and have no idea</span></p><h2><strong><span>Step 5 - Manage the context by hand</span></strong></h2><blockquote><p><strong><span>Claude Code</span></strong><span> will </span><strong><span>compact your context</span></strong><span> on its own when it fills up<br><br>The problem is it does this on its schedule, not yours, and compaction can quietly eat most of your remaining tokens at the worst moment</span></p></blockquote><p><strong><span>Two commands give you the wheel back:</span></strong></p><pre><code><code>/context</code></code></pre><ul><li><p><span>- shows you what&#8217;s actually taking up space right now - you&#8217;ll usually find something bloated you forgot about.</span></p></li></ul><pre><code><code>/compact</code></code></pre><ul><li><p><span>- lets you squash the conversation at a clean break, like when you finish one task and start another, instead of waiting for the automatic version to trigger mid-thought.</span></p></li></ul><p><span>&#8594; The habit is small, Check /context when a session feels heavy. Compact between tasks, not in the middle of one</span></p><h1><strong><span>Part 6 &#183; Honestly</span></strong></h1><p><strong><span>The five steps above genuinely cut your bill </span></strong><span>- you just learned the thing most people never touch - and that alone puts you ahead of them</span></p><blockquote><p><span>One thing worth saying out loud, so this keeps working</span></p></blockquote><p><span>None of it is set-and-forget. Caching lives on a number you only see if you go look - your hit rate, your cache_read_input_tokens. <br><br></span><em><strong><span>Setting it up once is great - Glance at it once a week, and a stray timestamp in your prefix won&#8217;t quietly steal the savings back.</span></strong></em></p><p><span>A cheap agent is a state you hold, and holding it is easy now, because you know where to look</span></p><blockquote><p><span>Here&#8217;s the good news: you&#8217;re in good company.</span></p></blockquote><p><strong><span>Andrew Ng</span></strong><span> and </span><strong><span>Anthropic </span></strong><span>arrived at the same place from the other side<br><br>- </span><strong><span>Ng </span></strong><span>teaches you to move an agent&#8217;s memory out of the window - that&#8217;s step one, just from the memory angle<br><br>- </span><strong><span>Anthropic </span></strong><span>went further: an agent that cleans its own memory in the background, so the prefix stays small on its own<br><br>Three different doors, one room - stop carrying everything, start carrying what the task needs - you just walked in</span></p><blockquote><p><strong><span>The tools will change:</span></strong><span> </span><em><span>cache, subagents, memory stores</span></em><span> - half these names will be different in six months</span></p><p><strong><span>One thing won&#8217;t:</span></strong><span> t</span><em><span>he engineer who knows what their agent is holding, and why, always beats the one who dumped everything into the window and hoped</span></em></p></blockquote><p><span>Now you&#8217;re the first one, so run your agent like an engineer.</span></p><p><a href="https://x.com/@0xCodila"><span>@0xCodila</span></a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://0xcodila.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>