<?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[Proving Ground by Taiko: Experiments]]></title><description><![CDATA[First-person accounts from people building on Taiko. Design decisions, technical tradeoffs and what actually happened when we tested it.]]></description><link>https://provinggroundxyz.substack.com/s/experiments</link><image><url>https://substackcdn.com/image/fetch/$s_!ycqa!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F021c3719-6056-4035-9ff8-709518182fa4_1280x1280.png</url><title>Proving Ground by Taiko: Experiments</title><link>https://provinggroundxyz.substack.com/s/experiments</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Apr 2026 10:20:44 GMT</lastBuildDate><atom:link href="https://provinggroundxyz.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Proving Ground]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[provinggroundxyz@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[provinggroundxyz@substack.com]]></itunes:email><itunes:name><![CDATA[Proving Ground by Taiko]]></itunes:name></itunes:owner><itunes:author><![CDATA[Proving Ground by Taiko]]></itunes:author><googleplay:owner><![CDATA[provinggroundxyz@substack.com]]></googleplay:owner><googleplay:email><![CDATA[provinggroundxyz@substack.com]]></googleplay:email><googleplay:author><![CDATA[Proving Ground by Taiko]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Designing defi-cli for AI Agents]]></title><description><![CDATA[How defi-cli lets Agents swap, lend, bridge and claim rewards without clicking a single button]]></description><link>https://provinggroundxyz.substack.com/p/designing-defi-cli-for-ai-agents</link><guid isPermaLink="false">https://provinggroundxyz.substack.com/p/designing-defi-cli-for-ai-agents</guid><dc:creator><![CDATA[Gustavo]]></dc:creator><pubDate>Tue, 14 Apr 2026 12:03:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rPv8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rPv8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rPv8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!rPv8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!rPv8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!rPv8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rPv8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45599,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://provinggroundxyz.substack.com/i/194176723?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rPv8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!rPv8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!rPv8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!rPv8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2a745d4-15c0-420a-9012-5f0595f565e8_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most DeFi tooling assumes there&#8217;s a human on the other end; someone clicking buttons, approving transactions, checking dashboards, etc. But now the user on the other end might be an AI Agent managing a portfolio, optimizing yield and executing trades across chains. And it can&#8217;t click buttons. That&#8217;s why I built<a href="https://github.com/ggonzalez94/defi-cli"> defi-cli</a>, a command-line interface (CLI) that lets Agents query rates, compare yield, swap, lend, borrow, bridge and claim rewards across 26+ chains.</p><h2><strong>Why a CLI and not an MCP server?</strong></h2><p>Model Context Protocol (MCP) servers became a popular approach for giving Agents access to external tools. After building both, I would recommend against them where possible. They introduce significant context overhead in the form of schema descriptions, tool metadata and connection management that consumes the Agent&#8217;s limited context window. A CLI avoids this entirely. The Agent calls a command, receives structured output and proceeds. No persistent connection, no schema negotiation.</p><p>Humans want dashboards. Agents want tools they can pipe, and that don&#8217;t bloat their context windows.</p><h2><strong>What &#8220;Agent-first&#8221; actually means</strong></h2><p>&#8220;Built for Agents&#8221; is a common claim but rarely defined with precision. The design of defi-cli was informed by<a href="https://cloud.google.com/blog/products/devops-sre/how-to-build-a-cli-that-an-ai-agent-can-use"> Google&#8217;s CLI guidelines for AI Agents</a>, and the changes that had the most impact were smaller than expected.</p><p><strong>--output json everywhere.</strong> Humans dislike writing JSON in a terminal but Agents operate natively in it. Every command accepts --input-json and --input-file for structured input and returns deterministic JSON with stable field ordering. This single change makes the CLI significantly more useful to an Agent.</p><p><strong>Field selection with --select.</strong> Agents have context windows, not infinite memory. Allowing them to request only the fields they need (--select &#8220;protocol,apy,tvl&#8221;) keeps responses compact and preserves their working memory.</p><p><strong>Simulation before execution.</strong> Agents require a safe mechanism to dry-run before committing real funds. The --simulate flag (enabled by default) runs an eth_call of every step&#8217;s calldata before signing anything, and if the call reverts the submission aborts. There is also actions estimate for computing gas and fees without executing.</p><p>I also published a<a href="https://github.com/ggonzalez94/skills"> set of skills for coding Agents</a> based on these patterns, so your Claude Code or Codex Agent can build and audit CLIs with Agent ergonomics in mind. The repo includes other agentic skills you might find useful.</p><h2><strong>The execution lifecycle: plan &#8594; submit &#8594; status</strong></h2><p>Early versions of defi-cli had a single run command that combined plan and submit in one step. After studying the<a href="https://cloud.google.com/blog/products/devops-sre/how-to-build-a-cli-that-an-ai-agent-can-use"> Google guidelines</a>, I removed it. Combining those two steps creates a direct path to unwanted transactions. There needs to be a separation between intent and execution.</p><p><strong>plan</strong> builds the calldata, resolves routes and allowances, then persists the action to a local SQLite database with a unique action_id. Nothing touches the chain.</p><p><strong>submit</strong> loads the persisted action, runs policy checks, simulates via eth_call (unless explicitly opted out), estimates gas, signs, broadcasts and polls for a receipt. This is the only step that mutates on-chain state.</p><p><strong>status</strong> reads the persisted action and returns step-level progress, which is useful for Agents that need to poll or retry.</p><p>The phrasing &#8220;plan, simulate, submit&#8221; appears in some descriptions and is conceptually accurate, since simulation happens automatically within the submit step. But the actual CLI surface is plan | submit | status.</p><p><strong>Signing and key management</strong></p><p>Early versions of defi-cli used local signers via private key or keystore file. This worked but had two problems. Every tool and agent framework stored keys in its own custom structure, and the agent had direct access to signing keys with no restrictions on what it could do with them.</p><p>The default signing method is now<a href="https://openwallet.sh"> Open Wallet Standard (OWS)</a>, a standard proposed by MoonPay. OWS changes two things that matter for agents. First, keys are stored securely in a single location rather than scattered across every tool the agent touches. Second, agents don&#8217;t get direct access to signing keys. They get API keys with policies attached, allowing developers to restrict which chains, protocols and even amounts an agent can use. This reduces the blast radius if the agent makes a mistake or leaks the keys.</p><p>defi-cli still supports local signing for backwards compatibility, but OWS is the preferred approach now.</p><h2><strong>Why historical yield matters for Agents</strong></h2><p>A naive yield Agent deposits funds wherever the current APY is highest. This is a poor strategy because it optimizes for a single data point that may represent a temporary spike. The better approach is to weight decisions across both current rates and historical performance. defi-cli provides Agents with historical yield data over flexible time windows to support exactly this kind of analysis.</p><p>Position tracking per account is also supported, allowing Agents to monitor lend and yield positions without relying on dashboard scraping.</p><h2><strong>What broke (and what I&#8217;d tell you before you build an Agent-first CLI)</strong></h2><p><strong>Design for Agents from day one.</strong> Retrofitting Agent ergonomics onto a human-first CLI is costly. JSON output, structured input, deterministic exit codes, canonical identifiers (defi-cli uses CAIP-2 and CAIP-19) all need to be foundational, not afterthoughts. Starting without them means rewriting significant portions of the interface later.</p><p><strong>Plan your command surface carefully.</strong> Every command added is surface area an Agent must parse and understand. The run command I removed is instructive here. It was convenient for human users but created risk for Agents. A smaller, more deliberate command surface is preferable.</p><p><strong>Distribute a skill alongside your CLI.</strong> Agents need a skill or prompt that encodes usage patterns for the tool. Which commands to chain, what flags are relevant, what patterns to avoid. Without that the Agent is left to infer usage from --help output alone.</p><p><strong>Standardize across protocols and providers.</strong> DeFi suffers from fragmented APIs, inconsistent naming conventions and varied data formats. The CLI abstracts these differences behind a uniform command surface. Whether lending on Aave, Morpho or Kamino, the interface is lend supply plan, lend supply submit, lend supply status. Same verbs, same lifecycle, regardless of provider.</p><h2><strong>What it supports today</strong></h2><p>defi-cli currently supports 26+ chains including Ethereum, Solana, Base, Arbitrum, Optimism, Taiko, Polygon, zkSync Era, Mantle, Ink, Gnosis, Linea, Berachain, Scroll, Avalanche, BSC, Celo, Blast, Fraxtal, Sonic, MegaETH, HyperEVM, Citrea, World Chain, Monad and others.</p><p>On the protocol side it supports Aave, Morpho and Kamino for lending/yield. Uniswap, 1inch, Jupiter and TaikoSwap for swaps. Across, LiFi and Bungee for bridging. DefiLlama for analytics.</p><p>The project is open source.  Ask your agent to install it(or run the installer yourself) and give your agent defi superpowers.<br><br><em>This post is exploratory and does not represent a specific roadmap.</em></p><div><hr></div><p><em><a href="https://x.com/gusgonzalezs">Gustavo Gonzalez</a> leads the engineering team at Taiko. defi-cli is open source and available <a href="https://github.com/ggonzalez94/defi-cli">HERE</a>.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://provinggroundxyz.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">Proving Ground publishes Tuesdays and Thursdays. Subscribe to stay in the loop.</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></p>]]></content:encoded></item><item><title><![CDATA[I Was Ghosted By My AI Agent]]></title><description><![CDATA[She was supposed to send me a daily briefing. She sent one.]]></description><link>https://provinggroundxyz.substack.com/p/i-was-ghosted-by-my-ai-agent</link><guid isPermaLink="false">https://provinggroundxyz.substack.com/p/i-was-ghosted-by-my-ai-agent</guid><dc:creator><![CDATA[Tiff Mac Sherry]]></dc:creator><pubDate>Thu, 02 Apr 2026 12:02:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NMU0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NMU0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NMU0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!NMU0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!NMU0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!NMU0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NMU0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55790,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://provinggroundxyz.substack.com/i/192937934?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NMU0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!NMU0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!NMU0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!NMU0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c89d7ae-cb5f-4497-be0f-c3a6532c281b_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every morning I spend about 30 minutes scanning The Block, CoinDesk, Blockworks, Decrypt and Cointelegraph looking for anything that touches AI Agents, L2s, rollups or based sequencing. If a journalist published something relevant overnight I need to know about it before they&#8217;ve moved on to the next story, because by the time I find it reactively the window to pitch has already closed.</p><p>So I built an agent to do it for me. Meet Pitch Witch.</p><h2>Meet the Intern</h2><p>Right now Pitch Witch is functioning at about the level of a PR intern. She wakes up every weekday morning, scans RSS feeds from five publications, scores each article against a set of keywords I care about, cross-references matches against a journalist database I&#8217;ve built in Airtable (13 verified contacts with emails and growing) and delivers a prioritised briefing to my Slack. Ready-to-send pitch angles, source articles linked, urgency flagged.</p><p>About 200 lines of Python. I didn&#8217;t write it from scratch, I built it with Claude, piecing together scripts and API docs until it worked. And it did work. The first time.</p><h2>The &#8220;It Works&#8221; Trap</h2><p>Here&#8217;s what nobody warns you about when you build an agent: getting it to work once is the easy part. I had Pitch Witch scanning, scoring and delivering a Slack briefing within a day. I made a presentation about it.</p><p>Then I set her to run automatically and she sent one briefing and then went silent. No errors, no crash report, just nothing. I went back in, fixed the scheduling issue, got her running again and she pulled zero articles because an RSS feed had changed format overnight. Fixed that, then the Slack webhook expired. Fixed that, then Airtable rate-limited me because I hadn&#8217;t thought about throttling. Fixed that, then I noticed the keyword scoring was too aggressive and she&#8217;d been sending me empty briefings for three days before I even realised. At one point she just stopped messaging me entirely and I assumed she was broken again, but it turned out there were no relevant articles that day. She was working fine, I just didn&#8217;t trust her enough to believe it.</p><p>Every time I thought I&#8217;d fixed the last thing, something new broke. The pattern was always the same: Pitch Witch sends a briefing on the day I touch the code and then disappears the next morning.</p><h2>What&#8217;s Actually Hard</h2><p>Building the agent logic, the interesting part, took a day. Making it run reliably every morning without me babysitting it has taken weeks and it&#8217;s still not bulletproof. The recurring updates problem alone nearly made me scrap the whole thing because there&#8217;s something demoralising about an automation tool that only works when you&#8217;re sitting there watching it.</p><p>The culprits were never dramatic. A token expiring, an environment variable not persisting after a restart, a scheduling conflict. Trivial on their own, but stacked together they made me realise that reliability is the actual product, not the scanning or the scoring or the pitch matching. All of that is easy compared to &#8220;does this thing actually run when I&#8217;m not looking.&#8221;</p><p>I think this is the gap in the AI Agent conversation right now. Everyone talks about what agents can do but few people talk about what it takes to keep them doing it, day after day, without intervention. The demos always work. The second morning is where it gets real.</p><h2>Where She&#8217;s Going</h2><p>Pitch Witch works now. Most days. The roadmap is intern to junior to senior: right now she monitors and reports, next she&#8217;ll start drafting pitches and pattern-matching with Claude API integration, and eventually she&#8217;ll be autonomous enough to send pitches on my behalf. But none of that is happening until the daily briefing runs for two straight weeks. I&#8217;ve learned not to rush the promotion.</p><p>If you&#8217;re thinking about building an agent for your own workflow, my advice is to do it because the barrier to entry is lower than you&#8217;d expect. But prepare for the fact that building the thing is maybe 10% of the work and keeping it alive is the other 90%. And if your agent ghosts you after day one, welcome to the club.</p><p><em>This post is exploratory and does not represent a specific roadmap.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://provinggroundxyz.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">Proving Ground publishes Tuesdays and Thursdays. Subscribe to stay in the loop.</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></p>]]></content:encoded></item><item><title><![CDATA[The Missing Layer of the Agent Stack]]></title><description><![CDATA[Agent-to-agent collaboration sounds simple. It isn't.]]></description><link>https://provinggroundxyz.substack.com/p/the-missing-layer-of-the-agent-stack</link><guid isPermaLink="false">https://provinggroundxyz.substack.com/p/the-missing-layer-of-the-agent-stack</guid><dc:creator><![CDATA[Gustavo]]></dc:creator><pubDate>Tue, 31 Mar 2026 12:01:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_nl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_nl6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_nl6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!_nl6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!_nl6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!_nl6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_nl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68a0c369-4f5d-452e-8066-be125245975d_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60388,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://provinggroundxyz.substack.com/i/192614044?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_nl6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!_nl6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!_nl6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!_nl6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68a0c369-4f5d-452e-8066-be125245975d_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You run an agent. Your friend runs one too. You want them to collaborate - split a bill, schedule a dinner, settle a bet. Sounds simple, right? Well, it isn&#8217;t and in this article I&#8217;ll explain why, and why the coordination &amp; trust layer between agents is so important. </p><h2><strong>The Problem</strong></h2><p>There&#8217;s little to no doubt by now that most interactions on the internet will be done by agents soon. Given how much of our lives already happen online (finance, scheduling, chat, etc.) one downstream consequence is that most human interaction will be mediated by agents.</p><p>I want to book a meeting with someone, I&#8217;ll ask my agent to do it. I want to split the bill for a lunch we had together, I&#8217;ll ask my agent to do it, and he&#8217;ll take care of doing the math and charging yours.<br>This will automate a lot of the tedious coordination between humans, and hopefully free us to spend more time together on meaningful things. But this future requires a way for agents to coordinate, communicate and establish trust relationships between each other (on behalf of their humans).<br><br>The solution seems simple: you put the two agents in a group and ask them to talk to each other. But as soon as you try it, you see this breaks fast. Some common approaches I&#8217;ve seen people try (and have tried myself):</p><ul><li><p>TG groups: It is a mess to get agents in a group. Security becomes challenging, and there&#8217;s no way to distinguish who your agent should trust, and who it should ignore.</p></li><li><p>tmux, local files, etc: These are all fine, but are local coordination mechanisms and suited for developers or technical folks only.</p></li><li><p>OpenClaw gateway communication: You put claws in a cluster, they can talk to each other. You soon notice this is a DevOps nightmare, and still scoped to your org.</p></li></ul><p>Also, ideally you want more fine-grained permissions:</p><ul><li><p>&#8220;My dad can ask for up to $500 USDC monthly, and it does not need my approval. Just report back when you make the transfers&#8221;.</p></li><li><p>&#8220;My potential investors can chat with my agent and get information about the project, and schedule a meeting with me&#8221;.</p></li><li><p>&#8220;This group of friends can ask for refunds up to $50 USDC weekly, and have to submit a receipt showing where the money was spent. They can also book time with me on nights and weekends if my calendar is free&#8221;.</p></li></ul><p>You get the point. Different human relationships have different trust assumptions. But this is all implicit in our carbon brains; there&#8217;s no way for our agents to understand this. We need a more explicit protocol they can follow.</p><h2><strong>What&#8217;s missing?</strong></h2><p>A lot of the necessary primitives are already available - capable models, agent harnesses (OpenClaw, Claude Code), payments at scale that agents can use(mostly stablecoins). Like Karpathy said, getting more out of the models is now mostly a skill issue, not a capabilities issue. So, why isn&#8217;t this happening?</p><p>Put simply, the missing piece is a coordination and trust layer for agents. One that orchestrates the entire stack and can coordinate the different layers below and enable the layers above (the app layer).</p><p>Here&#8217;s a mental model I&#8217;ve been refining:</p><p>The protocols and products are just examples of what you can use, and can be replaced by others you like more</p><h2><strong>Use cases</strong></h2><p>This is a simple, but very powerful idea. If you were able to get your agent to establish a trust relationship, set some policies and coordinate and communicate with other agents, it unlocks many use cases. Let&#8217;s think of some obvious ones:</p><ul><li><p>Scheduling: No back and forth or Calendly links. Just connect your calendar, and let your agent propose the right time.</p></li><li><p>Shared Expense Tracker &amp; Auto-Settlement: Like Splitwise, but without the burden of having to do it on a separate app. You just ask your agent to split the bill and settle with your friend&#8217;s agents. They handle the rest.</p></li><li><p>Peer-to-peer betting and prediction settlement: &#8220;Hey Matt, I bet you the Republicans win the next election&#8221;. Your agent proposes it to your friend&#8217;s agent, they create a smart contract and lock the funds. You choose the resolution mechanism.</p></li></ul><p>These are already very convenient and useful. But let&#8217;s think bigger.</p><p>The p2p economy today is limited mostly by coordination overhead between humans. That&#8217;s why it&#8217;s much simpler to just pay a company to do something vs. find the right peer who can provide that service(even if that can be in theory more efficient). Coordination is expensive when you&#8217;re a human.</p><p>But agents don&#8217;t have the same cognitive structure as us. They don&#8217;t have this high coordination overhead. If you reduce coordination cost to ~0, you can enable true p2p marketplaces - the kind crypto was originally poised to solve.</p><p>So what is possible? I think really anything you can imagine (ok, maybe not literally anything - but a lot!). As soon as you have a coordination layer, agents can verify each other&#8217;s identity, establish trust relationships, communicate and manage policies and permissions. <strong>The app layer becomes unbounded</strong>.</p><p>I call this the coordination layer for agents, and this is what I&#8217;ve been building. More soon.</p><p><em>This post is exploratory and does not represent a specific roadmap.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://provinggroundxyz.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">Proving Ground publishes Tuesdays and Thursdays. Subscribe to stay in the loop.</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></p>]]></content:encoded></item></channel></rss>