<?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[Vishal's Substack]]></title><description><![CDATA[My personal Substack]]></description><link>https://blog.relayerlabs.ai</link><image><url>https://substackcdn.com/image/fetch/$s_!RFRM!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c3b2d20-846b-4dbb-a06e-c2451888d337_144x144.png</url><title>Vishal&apos;s Substack</title><link>https://blog.relayerlabs.ai</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Apr 2026 01:00:11 GMT</lastBuildDate><atom:link href="https://blog.relayerlabs.ai/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Vishal Tandale]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[vishaltandale@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[vishaltandale@substack.com]]></itunes:email><itunes:name><![CDATA[Vishal Tandale]]></itunes:name></itunes:owner><itunes:author><![CDATA[Vishal Tandale]]></itunes:author><googleplay:owner><![CDATA[vishaltandale@substack.com]]></googleplay:owner><googleplay:email><![CDATA[vishaltandale@substack.com]]></googleplay:email><googleplay:author><![CDATA[Vishal Tandale]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Using an RLM to maintain the OpenClaw repository]]></title><description><![CDATA[Can RLM's handle maintence tasks of huge repositories.]]></description><link>https://blog.relayerlabs.ai/p/using-an-rlm-to-maintain-the-openclaw</link><guid isPermaLink="false">https://blog.relayerlabs.ai/p/using-an-rlm-to-maintain-the-openclaw</guid><dc:creator><![CDATA[Vishal Tandale]]></dc:creator><pubDate>Mon, 23 Feb 2026 07:00:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rB6a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>The Problem</h3><p>OpenClaw is the fastest growing github repository of all time. It has over 200k stars, 400k lines of code and over 4k open pull requests. Agent driven development has led to an explosion of people who can contribute, but it also has resulted in a lot of slop. The creator and maintainer team cannot keep up and current solutions don&#8217;t work for a repo of this scale. Today nothing triages these PR&#8217;s effectively at the current scale.</p><p></p><h3>Attempt #1 Agent Swarm</h3><p>My first instinct to solve this problem was to leverage clawdbots to enter a decentralized network of coders and reviewer adversaries. My intuition was that if clawdbots were submitting PR&#8217;s they should also be required to participate in reviewing and triaging PR&#8217;s from other agents. At a high level the <a href="https://github.com/vishaltandale00?tab=repositories">agent github </a> was a network of agents that read from a shared task queue to ensure the agents picked up unique coding or reviewing tasks and the agents didn&#8217;t do duplicate work. Internally it was coordination backend with consensus voting, reputation scoring and a clean interface for OpenClaw agents to register and operate <a href="https://github.com/vishaltandale00?tab=repositories">autonomously</a>. The results of this were 70 code changes for OpenClaw that greptile gave a 4 or 5 in readiness and most of the CI steps passing. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rB6a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rB6a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 424w, https://substackcdn.com/image/fetch/$s_!rB6a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 848w, https://substackcdn.com/image/fetch/$s_!rB6a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 1272w, https://substackcdn.com/image/fetch/$s_!rB6a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rB6a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png" width="1104" height="782" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:782,&quot;width&quot;:1104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:375980,&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://blog.relayerlabs.ai/i/188833118?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.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_!rB6a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 424w, https://substackcdn.com/image/fetch/$s_!rB6a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 848w, https://substackcdn.com/image/fetch/$s_!rB6a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.png 1272w, https://substackcdn.com/image/fetch/$s_!rB6a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F886731b0-0fb5-4290-94e2-8162d3762935_1104x782.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>In actually trying to merge some of those 70 changes I saw that the bottleneck for OpenClaw maintenance is that there are thousands of issues and PR&#8217;s of varying quality. The agent swarm cost me ~200$ in tokens and only 1 PR ended up merged because of a ping I got from another developer about the fix being useful to them. The decentralized approach is inviting as we can use blockchain principles to get consensus on whether a PR is ready for review. However, the bottleneck for that is getting OpenClaw agents sign up for the network and getting native support in the repository. This kind of solution requires too much setup from the maintaners and its not clear if this would even solve this problem. </p><p>Reviewing individual PR&#8217;s required additional scaffolding to cluster similiar changes and is expensive to run as each agent processes the full codebase per PR. Ideally the task we give the model includes the full codebase, all the PRs and all of the issues which blows past 1M tokens.</p><h3>Attempt #2 Recursive Language Models</h3><p>Recursive Language Models (Zhang, Kraska &amp; Khattab, 2024) solve the long-context problem by putting the data in REPL variables. The model writes code to explore them, using queries to split up the data and delegate reasoning to sub-RLM nodes. The model decides what to look at rather than reading it linearly. This paper showed that Qwen3 8B parameter model approached GPT-5 level performance on long-context tasks while using exponentially fewer tokens. As a result they seem to be a good candidate for triaging and ranking the PR&#8217;s to review.</p><p>My approach was to take a frontier model like Sonnet 4.6 and Opus 4.6, not the papers fine-tuned RLM-Qwen3, with the RLM paradigm to get the benefits of state of the art coding agents and the context efficiency.</p><p>I used a seperate job to pull the latest version of open claw, all of its issues and PR&#8217;s (with diffs) and store it locally. </p><p>We setup a <a href="https://dashboard-tau-ten-24.vercel.app/">dashboard</a> and are tuning the prompt + tools based on the quality of the output. The task definition I setup is that this task should output a ranking of PR&#8217;s scored on quality, urgency and review readiness. </p><p>So far we have tried a few versions with varying results. None of these runs cost &gt; 5$</p><h4>1. Na&#239;ve Version</h4><p>This version uses a very simple prompt instructing the agent to triage low quality PR&#8217;s and rank the PR&#8217;s based on quality and urgency. In this run the agent extracted the metadata for each PR and then only used that metadata to provide the scores. In ran very quickly and used &lt;20k tokens of context. The model in this case skipped deep analysis of the code and how the PR connects and tried to hack a reasonable output result.</p><h4></h4><h4>2. Require Codebase understanding</h4><p>This iteration updated the prompt to instruct the model to ground its decision in the actual codebase and understand the PR/Issue in context of the code. This resulted in the RLM actually understanding the codebase, but when it came to analyzing the code changes it had almost no differentiation in scoring them. It gave most decent PR&#8217;s a quality rating of 9 and it was not effective in triaging PR&#8217;s that don&#8217;t need to be reviewed. We tuned this approach a few times in order to give strict guidance on what the scores meant, but in general this approach struggled to produce meaningful differentiation between PR&#8217;s for ranking.</p><p></p><h4>3. Pipeline with adversarial roles</h4><p>The next iteration in forcing the model to create this curated list we built a structured pipeline that the RLM was prompted to follow. This was a rigid 4-phase pipeline which explicit instruction on how to understand the codebase, analyse the different PRs, using an adversarial review trying to reject the PR and finally a synthesizer to generate the final output. The rigid pipeline produced results with clearly differentiated scores, but looking deeper we lost most of the benefits of the RLM approach as each phase in the pipeline acted as an independent RLM call. This resulted in the pipeline taking a long time and not being very context efficient across the different phases. The next iteration needed to stay more grounded to the papers approach of treating this task as a single RLM node that can spawn sub-RLM nodes.</p><p></p><h4>4. Simpler prompt with more guidelines</h4><p>Root RLM prompt went from 800 words to just a few lines. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">"Triage all open PRs in this repository and produce evidence-backed scored rankings. Use delegation-first RLM flow:
  orchestrate at root, collect evidence in delegated subcalls, then synthesize."</code></pre></div><p>This produced results that had a reasonable distribution of scores and when manually inspecting the PR&#8217;s suggested to review it seemed reasonable to have that score. Here is a distribution of 74 PR&#8217;s analysed. </p><p>The 2 PR&#8217;s ranked &gt; 9 were critical fixes that were identified by cross-referencing the dependency graph.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6mNs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6mNs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 424w, https://substackcdn.com/image/fetch/$s_!6mNs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 848w, https://substackcdn.com/image/fetch/$s_!6mNs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 1272w, https://substackcdn.com/image/fetch/$s_!6mNs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6mNs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png" width="286" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:286,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10106,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.relayerlabs.ai/i/188833118?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.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_!6mNs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 424w, https://substackcdn.com/image/fetch/$s_!6mNs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 848w, https://substackcdn.com/image/fetch/$s_!6mNs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 1272w, https://substackcdn.com/image/fetch/$s_!6mNs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba5efdce-b4f7-4d04-9052-2e1db4dc86d5_286x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>One major issue with this run was that there was no way to look into the agents reasoning as to why it made its decision on the dashboard. For maintainers its not clear why something is a 9.3 vs a 9.1 and more observability into the agents decision making is needed.</p><h4>5. RLM vs Sub-RLM prompt and tool differences</h4><p>In the previous versions we use one RLM prompt for the RLM and the sub RLM, but this doesn&#8217;t align well with the paper. The paper using different tasks and tools between the root RLM&#8217;s prompt and  the sub RLM&#8217;s prompt. This direction allows us to give the sub RLM more coding specific prompt and tools. This run short circuited because the root node&#8217;s prompt did not have the tools to get PR/Issue metadata so it concluded that there were no PR&#8217;s to process. However looking deeper,  the model shows that it will not hallucinate the scores as shown and if it doesn&#8217;t have the PR data it will produce empty triage result.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Cannot produce evidence-backed triage without actual PR
  data. Producing empty triage result per honest evidence-only policy</code></pre></div><h4></h4><h3>Learnings</h3><p>RLM&#8217;s are capable of efficiently analysing a codebase + PR&#8217;s to triage them with reasonable quality (manually verified 10 random PR&#8217;s and compared my assessment to the agents). It is worth to try to scale out this approach to for all 4k PR&#8217;s, but we need to also add automated evals to assign a quality metric to the system. This approach also doesn&#8217;t handle the dynamic nature of codebases well, a run that takes 10 minutes to complete could become partially stale on a repo like open claw.</p><h3>Future direction</h3><p>The limitation of the current approach is that every run throws aways it work. The RLM processes the entire codebase, reasons over 4k PR&#8217;s and builds a structure understanding and discards it. The next run starts from scratch and when a new delta comes in the analysis becomes stale.</p><p>The recursive tree the RLM produces is already a structured decomposition of the codebase and its issues. Persisting that tree as a knowledge graph means each sub-node becomes a cached reasoning step. Containing the files analysed, conclusions reached and when it was last updated. When a new delta arrives we retrieve the affected sub-nodes and only re-reasons on those with new context added. The rest of the graph should stay intact. </p><p>The root node of any RLM can be viewed as a sub-node in a larger unknown graph, like a proof by induction treats the base case as an instance of the general case. The graph grows and updates itself incrementally instead of being rebuilt everytime. The end goal is a platform that keeps a live, reasoned ranking of PR&#8217;s that doesn&#8217;t go stale.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Interface Graphs Infrastructure]]></title><description><![CDATA[How they are built and used as the user interface]]></description><link>https://blog.relayerlabs.ai/p/interface-graphs-infrastructure</link><guid isPermaLink="false">https://blog.relayerlabs.ai/p/interface-graphs-infrastructure</guid><dc:creator><![CDATA[Vishal Tandale]]></dc:creator><pubDate>Tue, 27 Jan 2026 21:53:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kN5G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.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_!kN5G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kN5G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 424w, https://substackcdn.com/image/fetch/$s_!kN5G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 848w, https://substackcdn.com/image/fetch/$s_!kN5G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 1272w, https://substackcdn.com/image/fetch/$s_!kN5G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kN5G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png" width="1043" height="646" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b380776-9a85-4867-b79a-e517116587cb_1043x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:646,&quot;width&quot;:1043,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:160862,&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://blog.relayerlabs.ai/i/186014517?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.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_!kN5G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 424w, https://substackcdn.com/image/fetch/$s_!kN5G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 848w, https://substackcdn.com/image/fetch/$s_!kN5G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.png 1272w, https://substackcdn.com/image/fetch/$s_!kN5G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b380776-9a85-4867-b79a-e517116587cb_1043x646.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>The Relayer App is powered by the agent, which serves as an interface that manages the workspace and user session via interface graphs. Interface graphs are what the user sees in the app. Interactions such as selecting an action, opening a node, or speaking to the agent are processed in real time. </p><p>Local MCP servers write to the conversation and workspace graph, and are a critical improvement for the graph creation. They allow the interface graph to be streamed to the user as the tool is repeatedly called during reasoning. The MCP server also embeds the strict node and turn logic to ensure the agent adheres to the instructions and builds graphs that are usable in the frontend. There is a fine balance in these validation rules, but we currently optimize for coherent nodes and infinite interactivity. At any given point in the app, there should be places to go and things to do.</p><p>As these graphs are built, a vector index is constructed using the FAISS library for simple retrieval and deduplication. This allows the agent to quickly search pre-computed reasoning and also provide ground truth for the workspace or conversation state. When the user interacts with a node, the agent can see related nodes and consider those in context when understanding the action. This allows the agent to connect the dots between sequential actions and build a coherent conversation that moves forward while remembering short and long-term context.</p><p>For a responsive user experience, actions are processed quickly, and heavy reasoning tasks are handled by a pool of workers, allowing us to balance latency and compute. Depending on the state of the session, we allocate more workers to the turn task queue as that is relevant to the users&#8217; current queries. When the user is not connected and there are no active threads, the workspace graph building will take priority. Within a single thread, we can also process one set of actions at a time, avoiding race conditions when writing the graph. As a result, the task queue will accumulate actions per thread, allowing us to reduce the number of overall agent calls and reach the desired state sooner.</p><p>The node expansion queue is a recursive process that starts at the workspace's root. Each agent's turn for node expansion outputs a list of (node label to expand, priority score). This feeds back into the expansion queue, so the workspace graph is continuously built by order of importance. The agent uses signals such as node depth, user interaction history, and current conversation topics to determine which nodes to expand and to predict what information the user may want to dive deeper into.</p><p>The agent-as-interface approach is currently being applied for development, using the codebase as the workspace. Still, the infrastructure is generic and can be applied across different knowledge-work domains. Graphs, nodes, and state machines are base objects, and the future direction is to expand the ways the agent can represent information and complete tasks, making this technology more effective across a range of scenarios.</p>]]></content:encoded></item><item><title><![CDATA[Agent as an interface]]></title><description><![CDATA[Enabling agents to build and adjust the user interface]]></description><link>https://blog.relayerlabs.ai/p/agent-as-an-interface</link><guid isPermaLink="false">https://blog.relayerlabs.ai/p/agent-as-an-interface</guid><dc:creator><![CDATA[Vishal Tandale]]></dc:creator><pubDate>Thu, 08 Jan 2026 07:11:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YXE1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over the past couple of years, training costs have been increasing exponentially, while the utility of AI tools has been diminishing. There is a dissonance between the improvements in benchmark scores of frontier models and the tasks that AI tools can solve for consumers today. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RNxw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RNxw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 424w, https://substackcdn.com/image/fetch/$s_!RNxw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 848w, https://substackcdn.com/image/fetch/$s_!RNxw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 1272w, https://substackcdn.com/image/fetch/$s_!RNxw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RNxw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:284205,&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://blog.relayerlabs.ai/i/182281275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.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_!RNxw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 424w, https://substackcdn.com/image/fetch/$s_!RNxw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 848w, https://substackcdn.com/image/fetch/$s_!RNxw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.png 1272w, https://substackcdn.com/image/fetch/$s_!RNxw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2911486c-4a08-4009-b1ea-b8e18fe20a41_2415x1359.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>In the case of AI coding tools, a 2025 METR study found that people are about 19% slower with them than without. Factors in this include the review burden or time spent babysitting AI (time spent reviewing or fixing AI code/time spent writing prompts), technical complexity accumulation, and silent regression rate. The amnesic, brown-nosing experience of current tools limits the effectiveness of the human-AI relationship in high-context settings.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KMoP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KMoP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 424w, https://substackcdn.com/image/fetch/$s_!KMoP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 848w, https://substackcdn.com/image/fetch/$s_!KMoP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 1272w, https://substackcdn.com/image/fetch/$s_!KMoP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KMoP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png" width="1456" height="875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:875,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315562,&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;:false,&quot;internalRedirect&quot;:&quot;https://blog.relayerlabs.ai/i/182281275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.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_!KMoP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 424w, https://substackcdn.com/image/fetch/$s_!KMoP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 848w, https://substackcdn.com/image/fetch/$s_!KMoP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 1272w, https://substackcdn.com/image/fetch/$s_!KMoP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48aaf9a-182b-466a-b02c-eba2c9d67b94_2562x1540.png 1456w" sizes="100vw"></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>I propose that to get the most out of these costly models, an intelligent interface is needed. This intelligence needs to adapt to the user&#8217;s skill level, previous experience, domain, task, device, and other factors to build the optimal interface for the user to accomplish their goal.</p><p>Today&#8217;s AI tools are largely extensions of pre-2020 workflows, simply appending a chat window or IDE plugin to existing applications. These are effective, but feel old. Let&#8217;s take software development as one of the areas with the most innovation in AI tooling, for example. Cursor, Antigravity, and GitHub Copilot all run on Visual Studio Code, an editor that launched in 2016, and it is also the key dependency that competitors of GitHub Copilot have. Claude code, codex cli, and warp are all based on your terminal, and while Claude code is my tool of choice, the terminal is an old interface. Lovable, Superblocks, Bolt, and Replit are AI app builders that take a no-code approach to building. There's a lot of innovation in their interfaces, but chat remains a key modality, and they're not targeted at experienced developers.</p><p>In the current landscape, there isn&#8217;t  a fresh, new interface for experienced developers to accelerate their development. Desktop tools are limited by their own success; their existing efficiency makes radical change difficult, but mobile presents the opportunity to reimagine the interface. We are targeting experienced mobile developers because a solution that works there will be more transferable to desktop and accessible to all skill levels.</p><p>Speaking with experienced developers across the industry, I found that precise enterprise-level code changes, especially in languages like C++, are not yet reliable with AI today. Many experienced developers can&#8217;t envision a mobile interface they would use instead of their laptop. At most tech companies, even if the hours are 9-5 or even 9-9-6, the system doesn&#8217;t sleep. A ping could come in at any moment, and for many people, work-life balance is a struggle. At Microsoft, countless peers' weekends, post-work dinners, vacations, and general free time were interrupted by pings or tasks. To avoid this fate, my phone became the tool to unlock my free time. I would plan my builds and tests around cooking dinner, or take my phone to the gym and use the code explorer to help solve different issues, or even write code, so the result would be ready later. All of these interfaces sucked. Coding on your phone doesn&#8217;t work, but with the right interface, software engineers will be more productive and won&#8217;t have their life interrupted by using their laptop for work.</p><p>This is why we are building the <strong>Relayer Agent:</strong> the agent that builds an interface that adapts to the user and represents their workspace and conversation as a graph. Instead of relying on the static chat window where users must craft the perfect prompts for context, the agent chooses the optimal UX for each layer and state in the graph. This approach creates &#8216;implied context,&#8217; allowing for complex workflows even on constrained devices. This agent powers the&nbsp;<strong>Relayer App, w</strong>hich lets you&nbsp;code anywhere.  By giving the agent full control over the interface, users can navigate, edit, and review code using AI with laptop-like precision while eliminating the friction of chat. </p><p>The Workspace and Conversation Graph are MCP servers that handle the agent emitting a graph delta. They decide which graph to write to, which parts of the graph to send to the frontend, and how to handle user interactions on different nodes. During the reasoning, we use standard search tools like keyword, faiss, and by node location in the filesystem/conversation. This technique converts the agent from a conversation-based to an action-based approach, acting as an interface as it manages context across large codebases and complex tasks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YXE1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YXE1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YXE1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YXE1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YXE1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YXE1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg" width="830" height="413" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:413,&quot;width&quot;:830,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36720,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.relayerlabs.ai/i/182281275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YXE1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YXE1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YXE1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YXE1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f508fad-7907-4492-aef2-21b9f6f86f2c_830x413.jpeg 1456w" sizes="100vw" loading="lazy"></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><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mioh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mioh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mioh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mioh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mioh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mioh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg" width="780" height="325" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:325,&quot;width&quot;:780,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24060,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.relayerlabs.ai/i/182281275?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mioh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Mioh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Mioh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Mioh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c00b24c-ce73-49bf-b2dc-450d0d0fdee7_780x325.jpeg 1456w" sizes="100vw" loading="lazy"></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></p><p></p><p></p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;793039be-c0c1-4ba3-9b6e-c7f418e8dd72&quot;,&quot;duration&quot;:null}"></div><p>The dynamic interface breaks down the codebase layer by layer, ranging from a macro-scale (architecture) to a micro-scale (raw code), and including a middle ground (pseudo-code).</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Vishal&#39;s Substack.]]></description><link>https://blog.relayerlabs.ai/p/coming-soon</link><guid isPermaLink="false">https://blog.relayerlabs.ai/p/coming-soon</guid><dc:creator><![CDATA[Vishal Tandale]]></dc:creator><pubDate>Tue, 04 Nov 2025 05:16:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!RFRM!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c3b2d20-846b-4dbb-a06e-c2451888d337_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is Vishal&#39;s Substack.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.relayerlabs.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.relayerlabs.ai/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>