<?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[Dev Shorts]]></title><description><![CDATA[A newsletter about developers and open source]]></description><link>https://www.devshorts.in</link><image><url>https://substackcdn.com/image/fetch/$s_!c2er!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d87ed5-d2dc-4e24-937f-a69cd15aee86_1280x1280.png</url><title>Dev Shorts</title><link>https://www.devshorts.in</link></image><generator>Substack</generator><lastBuildDate>Sat, 12 Sep 2026 08:42:17 GMT</lastBuildDate><atom:link href="https://www.devshorts.in/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Aravind Putrevu]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[devshorts@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[devshorts@substack.com]]></itunes:email><itunes:name><![CDATA[Aravind Putrevu]]></itunes:name></itunes:owner><itunes:author><![CDATA[Aravind Putrevu]]></itunes:author><googleplay:owner><![CDATA[devshorts@substack.com]]></googleplay:owner><googleplay:email><![CDATA[devshorts@substack.com]]></googleplay:email><googleplay:author><![CDATA[Aravind Putrevu]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to Create Voice Mode as a Plugin in Deepseek Harness ]]></title><description><![CDATA[All about DeepSeek Harness]]></description><link>https://www.devshorts.in/p/how-to-create-voice-mode-as-a-plugin</link><guid isPermaLink="false">https://www.devshorts.in/p/how-to-create-voice-mode-as-a-plugin</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 28 Aug 2026 12:30:39 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/42a0ebf3-b0c3-4dd8-bded-6fd2c418f527_3640x2020.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We keep hearing about Harness Engineering. But many of us do not know what Harness actually is. We know that a good model alone can not make a good agent. The setup around the model is important.</p><p>In this blog, let us see about Harness, DeepSeek Harness, and how to create our own plugin for DeepSeek Harness.</p><h2>What is Harness</h2><p>The LLM API call is a part of an agent. We still need to provide context, expose tools, maintain memory, manage permissions, plan the steps, write retry loops, error handling, and output validation. All of them together is called a Harness.</p><p>So, a good harness makes a good agent.</p><p>I have read some articles about Harness Engineering. Attaching a few of them here for more details.</p><ul><li><p><a href="https://walkinglabs.github.io/learn-harness-engineering/en/">Learn Harness Engineering</a></p></li><li><p><a href="https://harness-books.agentway.dev/en/book2-comparing/">Harness Design of Claude Code and Codex</a></p></li><li><p><a href="https://harness-books.agentway.dev/en/book1-claude-code/">Harness Engineering: A Design Guide to Claude Code</a></p></li></ul><p>Here is a video explaining what Harness is.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;bc4ed32c-f622-4bf0-9f1d-fc4061a4ec40&quot;,&quot;duration&quot;:null}"></div><p>Now, let us see about DeepSeek Harness.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>DeepSeek Harness</h2><p>DeepSeek AI has released <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a>, an open-source agent harness. The interesting part is its architecture. It treats everything as a plugin. Those plugins can be loaded, unloaded dynamically. Let us see how it works, how to set it up, and how to create our own plugin.</p><ol><li><p>Why Everything is a Plugin</p></li><li><p>How DeepSeek Harness Works</p></li><li><p>How to Set Up and Use DeepSeek Harness</p></li><li><p>How to Create Our Own Plugin </p></li></ol><h2>1. Why Everything is a Plugin</h2><p>DeepSeek Harness uses <a href="https://github.com/cordiverse/cordis">Cordis</a> as the underlying framework. Cordis manages plugins, their dependencies, and the changes they make to the application. </p><p>Cordis provides a shared context for all the plugins. A plugin can add a service, listen to an event, or add some behaviour to the agent. When we remove the plugin, the changes added by that plugin are also removed. This is how DeepSeek Harness can load, unload, and replace plugins dynamically.</p><p>For example - Even the Web UI is built as a plugin. For example, the sidebar is a plugin. We can disable it from the configuration, reload the Web UI, and the sidebar will be removed. We can enable it again without making any changes to the core application.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1ZA7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1ZA7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1ZA7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1ZA7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1ZA7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1ZA7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1513859,&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://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.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_!1ZA7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1ZA7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1ZA7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1ZA7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a23c0b-66b8-4d29-93d9-fe8194dba924_1536x1024.png 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 aria-hidden="true" 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><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>Lets now see how it works</p><h2>2. How DeepSeek Harness works</h2><p>When we start DeepSeek Harness, it loads a profile. The profile decides which bundles and plugins should be loaded. </p><p>DeepSeek Harness has two main profiles:</p><ul><li><p>web profile starts with the Web UI.</p></li><li><p><code>The </code>headless profile runs it from the terminal without the Web UI.</p></li></ul><p>Each profile brings a set of related plugins. For example, the Web one loads the plugins needed for the Web UI. This way, DeepSeek Harness loads only the parts required for the selected profile.</p><p>Once the profile is loaded, we can start a session and send a message.</p><p>Here is how the message flows inside harness.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wlZy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wlZy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 424w, https://substackcdn.com/image/fetch/$s_!wlZy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 848w, https://substackcdn.com/image/fetch/$s_!wlZy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 1272w, https://substackcdn.com/image/fetch/$s_!wlZy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wlZy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg" width="1456" height="531" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:531,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41327,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/svg+xml&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wlZy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 424w, https://substackcdn.com/image/fetch/$s_!wlZy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 848w, https://substackcdn.com/image/fetch/$s_!wlZy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 1272w, https://substackcdn.com/image/fetch/$s_!wlZy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4a0715d-669d-4918-ae16-48f517abb15f_1480x540.svg 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 aria-hidden="true" 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><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>We can see all these details inside the Trajectory tab. It shows steps, tool calls, and  results returned to the model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gysh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gysh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 424w, https://substackcdn.com/image/fetch/$s_!Gysh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 848w, https://substackcdn.com/image/fetch/$s_!Gysh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 1272w, https://substackcdn.com/image/fetch/$s_!Gysh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gysh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png" width="1456" height="555" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b84204b1-c470-4691-9876-33dd471d1378_3010x1148.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:555,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:437954,&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://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.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_!Gysh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 424w, https://substackcdn.com/image/fetch/$s_!Gysh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 848w, https://substackcdn.com/image/fetch/$s_!Gysh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 1272w, https://substackcdn.com/image/fetch/$s_!Gysh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb84204b1-c470-4691-9876-33dd471d1378_3010x1148.png 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 aria-hidden="true" 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><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><h2>3. How to Set Up and use DeepSeek Harness </h2><p>We need Node.js to run DeepSeek Harness. Once Node.js is installed, run this command</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;54627f9a-49dd-45da-97d2-59404a1435f5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">npx @deepseek-ai/dsh web</code></pre></div><p>But above command did not work properly for me. So, I cloned the repository and ran it from the source.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;20ce49b5-6295-45f3-a522-5ff5ee541f73&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
</code></pre></div><p>pnpm dsh web - will open the web UI in the browser at http://localhost:3080</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cff7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cff7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 424w, https://substackcdn.com/image/fetch/$s_!Cff7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 848w, https://substackcdn.com/image/fetch/$s_!Cff7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 1272w, https://substackcdn.com/image/fetch/$s_!Cff7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cff7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp" width="1456" height="537" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:537,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17812,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Cff7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 424w, https://substackcdn.com/image/fetch/$s_!Cff7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 848w, https://substackcdn.com/image/fetch/$s_!Cff7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 1272w, https://substackcdn.com/image/fetch/$s_!Cff7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd912abb3-e1e0-43f8-9506-1d7ab0594aa3_1456x537.webp 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 aria-hidden="true" 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><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>Now we can plugin the model we want. Go to settings and change the model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TXic!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TXic!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 424w, https://substackcdn.com/image/fetch/$s_!TXic!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 848w, https://substackcdn.com/image/fetch/$s_!TXic!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 1272w, https://substackcdn.com/image/fetch/$s_!TXic!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TXic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp" width="1456" height="1358" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1358,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:47004,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TXic!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 424w, https://substackcdn.com/image/fetch/$s_!TXic!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 848w, https://substackcdn.com/image/fetch/$s_!TXic!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 1272w, https://substackcdn.com/image/fetch/$s_!TXic!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31f9e85e-9149-4511-b7a7-23b39eb4b499_1456x1358.webp 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 aria-hidden="true" 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><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>Check Plugins tab, and you can see loaded plugins.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FzT1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FzT1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 424w, https://substackcdn.com/image/fetch/$s_!FzT1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 848w, https://substackcdn.com/image/fetch/$s_!FzT1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 1272w, https://substackcdn.com/image/fetch/$s_!FzT1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FzT1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png" width="1432" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1432,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:485737,&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://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf81801b-6bbf-4fab-86cd-88d8596daf7a_1432x816.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_!FzT1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 424w, https://substackcdn.com/image/fetch/$s_!FzT1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 848w, https://substackcdn.com/image/fetch/$s_!FzT1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 1272w, https://substackcdn.com/image/fetch/$s_!FzT1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b5eb039-bc6b-4483-a201-e07252981a39_1432x816.png 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 aria-hidden="true" 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><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><figcaption class="image-caption"><strong>Plugins loaded by the DeepSeek Harness web profile</strong></figcaption></figure></div><h2>4. How to Create Our Own Plugin</h2><p>We can create plugins in two ways. </p><ol><li><p>Create plugin Manually ( by writing plugin code )</p></li><li><p>Use Creator Mode in the Web UI and ask the agent to create it for us.</p></li></ol><p>Creator Mode will create the plugin and load it into the current session. We do not need to do any coding.</p><h3>Creating voice mode as a plugin- Creator Mode</h3><p>For example, there is no voice input option in the DeepSeek Harness Web UI. So, let us ask Creator Mode to add a microphone button near the prompt field. The voice should be converted into text and added to the prompt field. We should also be able to edit the text before sending it.</p><p><strong>Step 1:</strong> Open a Web session and select Creator Mode. I gave this prompt.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;be6c7463-74f2-4d99-aa0c-c1b327cce753&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">There is no voice input in the Web UI. Can you add it as a plugin?

Add a microphone icon near the prompt box. When I click it and speak, the voice should come as text in the prompt box. Do not send it directly. Let me check and edit the text before sending.</code></pre></div><p>It started creating the plugin. Once done, it loaded the plugin into the session. You can check the video below to see how the plugin was created and loaded.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;f6d98d43-0711-4d04-bc8d-a07a72db5a65&quot;,&quot;duration&quot;:null}"></div><h3>Creating voice mode as a plugin- Manual Mode</h3><p>Now, we will create the same Voice Input plugin by writing the code. You can <a href="https://deepseek-harness.github.io/deepseek-harness/en/develop/cordis-tutorial/01-first-plugin">refer docs for creating your own plugin</a>.</p><p>Inside the cloned DeepSeek Harness repository, I created a folder named <code>voice-input-plugin</code>. It contains four files. The folder structure is,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;0c1638d3-d35a-40f0-bf2b-b1bb8be525db&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">deepseek-harness
&#9500;&#9472;&#9472; apps
&#9500;&#9472;&#9472; packages
&#9500;&#9472;&#9472; voice-input-plugin
&#9474;   &#9500;&#9472;&#9472; package.json
&#9474;   &#9500;&#9472;&#9472; index.js
&#9474;   &#9500;&#9472;&#9472; client.js
&#9474;   &#9492;&#9472;&#9472; cordis.patch.yml
&#9492;&#9472;&#9472; package.json</code></pre></div><p>We can store a plugin anywhere, but i just keep it inside the repository.</p><p>In DeepSeek Harness, a plugin is a module with an <code>apply</code> function. Cordis calls this function while loading the plugin and provides the <code>ctx</code> context object.</p><p>For our Voice Input plugin, the core part looks like this. Its in client.js</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;javascript&quot;,&quot;nodeId&quot;:&quot;55f6de9e-0603-499a-86aa-dec34b6d97ca&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-javascript">function apply(ctx) {
  ctx.slots.inject('conversation.input.right', () =&gt;
    ctx.slots.register(
      {
        name: 'conversation.input.right',
        id: 'voice-input',
      },
      VoiceInputButton,
    ),
  )
}

module.exports.name = 'voice-input-plugin'
module.exports.inject = ['slots', 'sessions']
module.exports.apply = apply</code></pre></div><p>Here, the plugin uses the <code>conversation.input.right</code> slot to add the microphone button near the prompt field. The <code>VoiceInputButton</code> handles microphone access and converts the voice into text using the browser Speech Recognition API.</p><p>The <code>index.js</code> file is only the main plugin entry:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;7c1a2e2d-ddda-47fb-80cf-768388f0cdfa&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">export const name = 'voice-input-plugin'

export function apply() {}</code></pre></div><p>Next, we need to tell DeepSeek Harness to load this plugin. For that, create a <code>cordis.patch.yml</code> file inside the <code>voice-input-plugin</code> folder.  </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;yaml&quot;,&quot;nodeId&quot;:&quot;c4c4e203-873c-4ed4-9f41-9776dbcc046d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-yaml">- insert:
    - id: manual-voice-input
      name: dsh-manual-voice-input-plugin</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;ce29f890-37df-4903-90c2-1d7774e62bf8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">dsh plugin --profile web add /absolute/path/to/voice-input-plugin</code></pre></div><p>And you can see the cordis.patch.yml under web now has the plugin entry.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!frZw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!frZw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 424w, https://substackcdn.com/image/fetch/$s_!frZw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 848w, https://substackcdn.com/image/fetch/$s_!frZw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 1272w, https://substackcdn.com/image/fetch/$s_!frZw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!frZw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png" width="1124" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:266,&quot;width&quot;:1124,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182801,&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://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F344fd082-89f6-4ad1-9e76-e01e673d8a4a_1124x266.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_!frZw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 424w, https://substackcdn.com/image/fetch/$s_!frZw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 848w, https://substackcdn.com/image/fetch/$s_!frZw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 1272w, https://substackcdn.com/image/fetch/$s_!frZw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa39f0cfc-5d8d-4fb5-b39a-e28076fb8b2e_1124x266.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Now run,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;eebf9393-6b7c-4f4f-86e4-9ec8d51dfad8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">pnpm dsh web</code></pre></div><p>See the voice mode plugin created , using creator mode as well as <a href="https://github.com/devgotomarket/voice-input-plugin">manual mode</a>. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jv5r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jv5r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 424w, https://substackcdn.com/image/fetch/$s_!jv5r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 848w, https://substackcdn.com/image/fetch/$s_!jv5r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 1272w, https://substackcdn.com/image/fetch/$s_!jv5r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jv5r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png" width="3010" height="1148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1148,&quot;width&quot;:3010,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:342402,&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://www.devshorts.in/i/211720093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2419747e-2e43-4a32-b3e1-b171b2614332_3010x1148.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_!jv5r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 424w, https://substackcdn.com/image/fetch/$s_!jv5r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 848w, https://substackcdn.com/image/fetch/$s_!jv5r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 1272w, https://substackcdn.com/image/fetch/$s_!jv5r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1aa28d7-15d8-4c1d-a8e2-2c6547a378fb_3010x1148.png 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 aria-hidden="true" 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><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>We can enable or disable any plugin from the Cordis configuration by setting disabled: true or false, like below. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;yaml&quot;,&quot;nodeId&quot;:&quot;57b04508-83e7-4873-a953-516f8a397ddf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-yaml">- insert:
    - id: manual-voice-input
      name: dsh-manual-voice-input-plugin
      disabled: true</code></pre></div><h2>Conclusion:</h2><p>That is what I explored about DeepSeek Harness.</p><p>Voice Mode plugin creation was interesting. We created it using Creator Mode and also tried the manual way. </p><p>There will be many more use cases like this. </p><p>Let us try to build more plugins and contribute to the community.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-create-voice-mode-as-a-plugin?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-create-voice-mode-as-a-plugin?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/how-to-create-voice-mode-as-a-plugin?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Kimi K3 - Everything you need to know!]]></title><description><![CDATA[Technical Details, Components of Kimi K3, Task & Cost Comparison with Other Frontier Models]]></description><link>https://www.devshorts.in/p/kimi-k3-everything-you-need-to-know</link><guid isPermaLink="false">https://www.devshorts.in/p/kimi-k3-everything-you-need-to-know</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 14 Aug 2026 13:04:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aPSW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>DeepSeek&#8217;s arrival in January 2025 created a wave across the AI industry. It&#8217;s not just because DeepSeek performed equally to OpenAI and Anthropic models. It was because of the lower training and inference costs.</p><p>Now, <a href="https://www.kimi.com/blog/kimi-k3">Kimi K3</a> is getting similar attention.</p><p>The model is competing with some of the best models from OpenAI and Anthropic, especially in coding and long-running agentic tasks.</p><p>One reason could be its size. Kimi K3 has 2.8T params, so it has a lot of capacity. But the main thing is that it is an <a href="https://huggingface.co/blog/moe">MoE model</a>. It doesn&#8217;t activate all its parameters for every token. During inference, it uses only a small part of the model.</p><p>This is what makes Kimi K3 interesting. It is a bigger model, but it uses sparse activation. It also comes with a 1M token context window.</p><p>In this blog, let us see how Kimi K3 is built, how it is different from other MoE models, and how it performs compared to other frontier models.</p><ol><li><p>Kimi K3 - Technical Details</p></li><li><p>Kimi K3 - A Large Model with a Small Expert Selection</p></li><li><p>The Three Main Components Behind Kimi K3</p></li><li><p>What the Kimi K3 Benchmarks Show</p></li><li><p>How to Use Kimi K3 in Claude Code and Codex</p></li><li><p>Kimi K3 vs Opus 5 and GPT-5.6: Quality, Speed, and Cost</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Kimi K3 - Technical Details </h2><p>Before we get into the architecture, let us first compare Kimi K2 and Kimi K3.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DWHD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DWHD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!DWHD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!DWHD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!DWHD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DWHD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png" width="1672" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1672,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2215095,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd6490ae-e10c-4342-8cae-bb5024446850_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!DWHD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!DWHD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!DWHD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!DWHD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06aebee7-1090-43cc-9781-bd30cb7bfeed_1672x941.png 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 aria-hidden="true" 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><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>As you can see, Kimi K2 has 1T params, while Kimi K3 has 2.8T params. Moonshot also increased the number of experts and layers. It changed the attention system and extended the context window.</p><p>Here is a quick technical overview of Kimi K3.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eT_B!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eT_B!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 424w, https://substackcdn.com/image/fetch/$s_!eT_B!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 848w, https://substackcdn.com/image/fetch/$s_!eT_B!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!eT_B!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eT_B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png" width="1456" height="791" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:791,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:369886,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!eT_B!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 424w, https://substackcdn.com/image/fetch/$s_!eT_B!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 848w, https://substackcdn.com/image/fetch/$s_!eT_B!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 1272w, https://substackcdn.com/image/fetch/$s_!eT_B!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802f1e7d-8c4b-4aa7-a4ae-a5057e97de72_2392x1300.png 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 aria-hidden="true" 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><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>Kimi K3 supports a 1M token context window. It uses Kimi Delta Attention and Gated MLA layers to handle such a long context. Let us see how these attention layers work in the next section.</p><p>Kimi K3 is also a native multimodal model. It can take text, images, and video as input. For visual inputs, it uses MoonViT V2, a vision encoder with 401M params. This encoder converts the visual content into a format that the main model can understand.</p><p>Kimi K3 uses MXFP4 for its weights and MXFP8 for its activations. Both are lower-precision formats. So, they help reduce the memory and compute needed during training and inference.</p><p>Moonshot started quantization-aware training from the supervised fine-tuning stage itself. So, the model was trained to work with these lower-precision formats.</p><h2>2. Kimi K3 - A Large Model with a Small Expert Selection</h2><p>Kimi K3 is an MoE model. So, it doesn&#8217;t use all its 2.8T params for every token. It has a large pool of experts, and a router decides which experts need to handle the token.</p><p>Kimi K3 has 896 routed experts. The router selects 16 of them for each token. Apart from this, two shared experts are always active.</p><p>So, Kimi K3 selects only around 1.8% of its routed expert pool for every token.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aPSW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aPSW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 424w, https://substackcdn.com/image/fetch/$s_!aPSW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 848w, https://substackcdn.com/image/fetch/$s_!aPSW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 1272w, https://substackcdn.com/image/fetch/$s_!aPSW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aPSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png" width="1672" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:1672,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1293189,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc5c0183-2d53-47e3-bffc-c4620afd54f4_1672x941.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_!aPSW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 424w, https://substackcdn.com/image/fetch/$s_!aPSW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 848w, https://substackcdn.com/image/fetch/$s_!aPSW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 1272w, https://substackcdn.com/image/fetch/$s_!aPSW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F98d11174-3a88-4e6f-9306-e907dc627abd_1672x778.png 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 aria-hidden="true" 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><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>Here, the 1.8% can be a little confusing. It is the percentage of routed experts selected. It doesn&#8217;t mean that only 1.8% of the model&#8217;s total params are active.</p><p>In terms of parameters, Kimi K3 activates around 104B out of its total 2.8T params for every token.</p><p>The comparison below will make this easier to understand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RIPv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RIPv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!RIPv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!RIPv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!RIPv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RIPv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.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;:1210119,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.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_!RIPv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!RIPv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!RIPv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!RIPv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11bbf6a4-2959-4a13-897d-3bba8d522095_1672x941.png 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 aria-hidden="true" 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><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>Kimi K2 selected 8 out of 384 routed experts, which is around 2.1%. Kimi K3 selects 16 experts from a much bigger pool of 896. So, even though K3 selects more experts, the percentage is lower at around 1.8%.</p><p>Since these experts are spread across many GPUs, there are two problems to handle. First, the data needs to move between the GPUs. Second, some experts may get more work than others. Moonshot uses Stable LatentMoE and Quantile Balancing to handle these problems. Let us see how they work in the next section.</p><h2>3. The Three Main Components Behind Kimi K3</h2><p>Kimi K3&#8217;s architecture has three main components. Let us start with Stable LatentMoE.</p><h4>1. Stable LatentMoE</h4><p>As we saw earlier, Kimi K3&#8217;s experts are spread across many GPUs. Whenever a token is sent to an expert, the data also needs to move between the GPUs. This adds extra communication cost.</p><p>Stable LatentMoE helps to reduce this data movement. It compresses the token data into a smaller size before sending it to the selected experts. After the experts process the data, the result is expanded back to the model&#8217;s original size.</p><p>There is also one more thing to handle. Some experts may get selected too often, while others may get less work. Kimi K3 uses Quantile Balancing to spread the tokens across its expert pool.</p><h4>2. Kimi Delta Attention</h4><p>The second component is Kimi Delta Attention. Kimi K3 supports a 1M token context window. If it used full attention in every layer, it would need a lot of memory and compute.</p><p>KDA avoids this by keeping earlier information in a fixed-size memory. When a new token comes in, it updates the memory. The Model decides what to keep and what to forget.</p><p>Kimi K3 doesn&#8217;t use KDA in every layer. It has 69 KDA layers and 24 Gated MLA layers. KDA handles most of the long context, while the Gated MLA layers use full attention at regular intervals. This allows the model to look across the complete context when needed.</p><h4>3. Attention Residuals</h4><p>Kimi Delta Attention handles the context length. Attention Residuals works on a different problem. It handles the model&#8217;s depth.</p><p>Kimi K3 has 93 layers. Usually, each layer gets the output from the layer before it. When information moves through many layers, some details from the earlier layers may become weak.</p><p>Attention Residuals allows each layer to look back at the earlier layer outputs and pick the information it needs. So, it doesn&#8217;t depend only on the information passed from one layer to the next.</p><p>The diagram below shows how these three components fit into the input-output flow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LrPU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LrPU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 424w, https://substackcdn.com/image/fetch/$s_!LrPU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 848w, https://substackcdn.com/image/fetch/$s_!LrPU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 1272w, https://substackcdn.com/image/fetch/$s_!LrPU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LrPU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png" width="1456" height="750" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:750,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1340362,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!LrPU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 424w, https://substackcdn.com/image/fetch/$s_!LrPU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 848w, https://substackcdn.com/image/fetch/$s_!LrPU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 1272w, https://substackcdn.com/image/fetch/$s_!LrPU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2af9df06-e099-47bd-9a09-35d8929ebe3e_1747x900.png 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 aria-hidden="true" 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><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><blockquote><p>In simple terms, Stable LatentMoE reduces the amount of data moved between GPUs. Kimi Delta Attention handles the long context. Attention Residuals helps each layer retrieve useful information from earlier layers.</p></blockquote><p>Moonshot says these changes made Kimi K3 - 2.5 times more efficient at scaling than Kimi K2. This refers to the overall improvement across the architecture and training.</p><h2>4. What the Kimi K3 Benchmarks Show</h2><p>When I checked the <a href="https://arena.ai/leaderboard/">Arena rankings</a>, Kimi K3 Max was among the top models.</p><p>In the WebDev leaderboard, it ranked second. It was just behind Claude Opus 5 Max and ahead of several models from OpenAI, Anthropic, and Alibaba.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iyHY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iyHY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 424w, https://substackcdn.com/image/fetch/$s_!iyHY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 848w, https://substackcdn.com/image/fetch/$s_!iyHY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!iyHY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iyHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png" width="1942" height="1284" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1284,&quot;width&quot;:1942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:314336,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc621817f-c009-4748-b2f4-192d085d4949_1942x1284.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_!iyHY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 424w, https://substackcdn.com/image/fetch/$s_!iyHY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 848w, https://substackcdn.com/image/fetch/$s_!iyHY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 1272w, https://substackcdn.com/image/fetch/$s_!iyHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb0c0363-929c-4b10-9147-0c99c54c54da_1942x1284.png 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 aria-hidden="true" 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><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 Agent Arena, Kimi K3 Max ranked fifth. This leaderboard looks at how well models complete real-world agentic 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_!_R5g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_R5g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 424w, https://substackcdn.com/image/fetch/$s_!_R5g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 848w, https://substackcdn.com/image/fetch/$s_!_R5g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 1272w, https://substackcdn.com/image/fetch/$s_!_R5g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_R5g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png" width="2426" height="1324" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1324,&quot;width&quot;:2426,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:406288,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44515ae2-df53-4ca8-8036-52027caf2b58_2426x1324.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!_R5g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 424w, https://substackcdn.com/image/fetch/$s_!_R5g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 848w, https://substackcdn.com/image/fetch/$s_!_R5g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 1272w, https://substackcdn.com/image/fetch/$s_!_R5g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96c450c5-230c-48cc-8376-8331ef630e47_2426x1324.png 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 aria-hidden="true" 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><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>These rankings may change when more models and results are added. But at the time I checked, Kimi K3 was near the top in both web development and agentic tasks.</p><h2>5. How to Use Kimi K3 in Claude Code and Codex</h2><p>I am using Kimi K3 through <a href="https://fireworks.ai/">Fireworks</a>. I used <a href="https://docs.fireworks.ai/ecosystem/fireconnect/overview">Fireconnect</a> to connect it with Claude Code and Codex.</p><p>First, we need to install Fireconnect and login.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;014bfebc-e720-43c0-883a-5e3e920b9679&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh | bash

fireconnect login</code></pre></div><p>If you want to check all the available models in Fireworks then run,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;55c3b00d-603e-46d2-a15f-2820d83ae85b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">fireconnect model list</code></pre></div><h4>Use Kimi K3 in Claude Code</h4><p>You can run this command to connect Kimi K3 from fireworks to Claude Code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;217292ea-b6c5-4582-a62c-3aca9605e65f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">fireconnect claude on --model kimi-k3</code></pre></div><p>Now open Claude Code and use <code>/model</code> and check whether Kimi K3 is selected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vrie!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vrie!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 424w, https://substackcdn.com/image/fetch/$s_!vrie!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 848w, https://substackcdn.com/image/fetch/$s_!vrie!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 1272w, https://substackcdn.com/image/fetch/$s_!vrie!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vrie!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png" width="1266" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d400824c-f896-4256-85d3-65deffe13cc0_1266x614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:1266,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110851,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F745b9e7e-2283-4eb2-bf0d-2b833d56a276_1266x614.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_!vrie!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 424w, https://substackcdn.com/image/fetch/$s_!vrie!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 848w, https://substackcdn.com/image/fetch/$s_!vrie!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 1272w, https://substackcdn.com/image/fetch/$s_!vrie!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd400824c-f896-4256-85d3-65deffe13cc0_1266x614.png 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 aria-hidden="true" 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><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><h4>Use Kimi K3 in Codex</h4><p>For Codex, run:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;0b4632d3-f18d-4965-aa8b-13de8188bfaf&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">fireconnect codex on --model kimi-k3</code></pre></div><p>Open Codex and check the model selection. You should see Kimi K3 as the active model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wmVW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wmVW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 424w, https://substackcdn.com/image/fetch/$s_!wmVW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 848w, https://substackcdn.com/image/fetch/$s_!wmVW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 1272w, https://substackcdn.com/image/fetch/$s_!wmVW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wmVW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png" width="1266" height="488" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:488,&quot;width&quot;:1266,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85245,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.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_!wmVW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 424w, https://substackcdn.com/image/fetch/$s_!wmVW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 848w, https://substackcdn.com/image/fetch/$s_!wmVW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 1272w, https://substackcdn.com/image/fetch/$s_!wmVW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F601aca1e-f3ea-4b82-bc2b-196aff7cf971_1266x488.png 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 aria-hidden="true" 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><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>That&#8217;s it. Claude Code and Codex work as the coding harness, while Kimi K3 runs through Fireworks.</p><h2>6. Kimi K3 vs Opus 5 and GPT-5.6: Quality, Speed, and Cost</h2><p>Now let us see how Kimi K3 performs in a real web development task.</p><p>For this test, I gave the same web development prompt to Kimi K3, Claude Opus 5, and GPT-5.6 Sol.</p><p>I asked each model to build a web app called Skywatch. We can select a date in the app and see the sky events happening on that day.</p><p>The app should have an animated landing page, date navigation, and details about each event. For now, I asked the models to use mock data. Later, it can be replaced with a real API.</p><h4>Kimi K3</h4><p>Kimi K3 built the app with HTML, CSS, and JavaScript. It didn&#8217;t use any external dependencies.</p><p>The UI came out clean and animated. It was also easy to use. Kimi opened the app in the browser and tested the UI visually.</p><p>Kimi K3 took 16 minutes and 45 seconds to complete the task. The usage page showed a cost of around $2.49.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;dfbbea6f-fc47-432a-ba25-0ad8bdd82eea&quot;,&quot;duration&quot;:null}"></div><h4>Claude Opus 5</h4><p>I then gave the same prompt to Opus. It built the app with React, TypeScript and Vite. It added more features like an interactive calendar, event filters, and a separate section for moon-phase details. It also added accessibility support and handled different UI states.</p><p>I checked the usage and it had used more tokens and cache reads. It worked around 24 mins and the cost was around $13.38.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;1784f991-bb29-405d-b6a6-c76363e62223&quot;,&quot;duration&quot;:null}"></div><h4>GPT-5.6 Sol</h4><p>GPT-5.6 Sol produced the strongest visual design in this test. The cinematic hero section, animation, spacing, and overall visual hierarchy made the app feel more polished.</p><p>It also finished the fastest, taking 11 minutes and 42 seconds. The estimated cost was around $3.67.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;237de770-b3ef-47e9-a9d7-dde3c4b0014d&quot;,&quot;duration&quot;:null}"></div><p>Here is the complete comparison.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!syrM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!syrM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!syrM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!syrM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!syrM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!syrM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1713227,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/208948196?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!syrM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!syrM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!syrM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!syrM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5794f0c-0593-4ed1-8624-344467696dd8_1536x1024.png 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 aria-hidden="true" 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><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>As you see in the table above, Kimi finished the task faster and the cost was very lower when compared to Opus.</p><p>Opus built the app in a more detailed and interactive way. I would say it built a complete app. But cost was higher. </p><p>Among the three GPT 5.6 Sol was faster and lower cost. And the UI built by GPT-5.6 Sol was really amazing when compared to other two.</p><h2>Conclusion</h2><p>Hope you now got a good idea about Kimi K3 and how it works.</p><p>Kimi K3 is a big model. But size is not the only interesting part here. Moonshot built a 2.8T model and still kept the inference cost lower.</p><p>In my coding test also, Kimi performed well. Almost equal to Opus, but faster and much cheaper.</p><p>So yes, Kimi K3 is worth trying. </p><p>Happy Building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/kimi-k3-everything-you-need-to-know?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/kimi-k3-everything-you-need-to-know?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/kimi-k3-everything-you-need-to-know?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 117] - Meta's Coding Agent, Qwen3.8-Max, Self Improving Harness, TM's Inkling-Small, Cloudflare's Computer, Local Gemma Translator, Pokee-Isaac -10M token -Context Window Model & More!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 07 Aug 2026 12:41:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9eede54d-6f1b-45e4-92fa-1d2041243d16_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 117th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://www.devshorts.in/p/devshorts-conversations-the-goal">DevShorts Conversations - The Goal Was Never CI - With Rob Zuber</a></p></li><li><p><a href="https://www.devshorts.in/p/how-to-run-custom-models-in-codex">How to Run Custom Models in Codex</a></p></li><li><p><a href="https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code">GLM 5.2 vs Opus 4.8 in Claude Code</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://research.meta.ai/blog/introducing-muse-code-and-muse-spark-1-2">Meta has released Muse Code and Muse Spark 1.2</a>. Muse Code is a terminal coding agent powered by Muse Spark 1.2. Meta co-trained the model and agent for long coding tasks. Muse Code includes skills for planning, testing, and completing the task. If it crashes, it can resume exactly where it stopped. Check Meta&#8217;s post for more details.</p></li><li><p><a href="https://qwen.ai/blog?id=qwen3.8">Qwen has released Qwen3.8-Max</a>. It is a 2.4T-parameter MoE model. It supports text, images, video, and a 1M-token context window. Qwen says it can work autonomously on coding projects for more than 10 days. Its open weights will be released next week. Check Qwen&#8217;s post for more details.</p></li><li><p><a href="https://x.com/PrimeIntellect/status/2085086999267144083">Prime Intellect has introduced Prime Agent, a self-improving harness for coding</a> and long-running tasks. It is designed to use tokens efficiently. It supports tool calls and communication between agents. It can also update its harness state while working. Check Prime Intellect&#8217;s post for more details.</p></li><li><p><a href="https://x.com/Pokee_AI/status/2084682445648216383">Pokee AI has released Pokee-Isaac 28B, an agentic model with a 10M-token context window</a>. Pokee AI says it performed well on benchmarks for tool use, agentic tasks, and security. Check Pokee AI&#8217;s post for more details</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p>This week, <a href="https://github.com/yc-software/qm">we are featuring QM</a>. It is an open source agent harness designed for startups. Each employee gets an isolated workspace with their own memory, files, and permissions. Employees can work independently without affecting others. They can also collaborate with the agent in Slack channels and projects. QM supports Pi, OpenCode, Codex, and Claude Code. Check the GitHub repo for setup details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vEqd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vEqd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 424w, https://substackcdn.com/image/fetch/$s_!vEqd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 848w, https://substackcdn.com/image/fetch/$s_!vEqd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 1272w, https://substackcdn.com/image/fetch/$s_!vEqd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vEqd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png" width="880" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:880,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:184836,&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://www.devshorts.in/i/210167574?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.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_!vEqd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 424w, https://substackcdn.com/image/fetch/$s_!vEqd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 848w, https://substackcdn.com/image/fetch/$s_!vEqd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 1272w, https://substackcdn.com/image/fetch/$s_!vEqd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F39de348d-2c67-40f1-a5b1-00a2554b9fcf_880x762.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to Know</strong></h2><ul><li><p><a href="https://x.com/ETtech/status/2084539544440086830">Anthropic plans to offer in-country inference for Claude in India</a>, according to ETtech. Claude requests will be processed on servers in India. This will allow the data to stay within the country. ETtech says this will be available in the coming weeks. Check ETtech&#8217;s post for more details.</p></li><li><p><a href="https://x.com/OpenAI/status/2082878156483219672">OpenAI has reduced the API prices for GPT-5.6 Luna and Terra</a>. Luna is now 80% cheaper, while Terra is 20% cheaper. <a href="https://openai.com/index/improving-gpt-5-6-sol-in-chatgpt">In ChatGPT, Luna is becoming the default for Free and Go users, while Plus and Pro users get the updated Sol</a>. Check OpenAI&#8217;s posts for more details.</p></li><li><p><a href="https://github.com/cloudflare/cloudflare-os">Cloudflare has open sourced Cloudflare OS</a>. It was originally built for its own employees to use AI at work. It is not a traditional computer OS. It includes an agent chat interface, sandboxes for building apps, and a security framework for controlling access. Check the GitHub repo for setup details.</p></li><li><p><a href="https://huggingface.co/mistralai/Shieldstral-1.0-3B">Mistral AI has released Shieldstral 1.0 3B</a>, an open-weight model for content moderation. Developers can describe a safety policy in natural language. The model then checks text and images against that policy. You can change the policy without retraining the model. Check the <a href="https://mistral.ai/news/shieldstral/">Mistral&#8217;s post</a> for more details.</p></li><li><p><a href="https://github.com/firecrawl/anydoc">Firecrawl has released AnyDoc</a>, an open source Rust library that converts documents into Markdown. It supports Word, PowerPoint, Excel, and text-based PDF files. It also ships as a skill for coding agents. Check the GitHub repo for setup details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://github.com/google-gemma/gemma-translator">Gemma Translator</a> is an open source voice translator built by Google. It listens to speech, translates it using Gemma 4, and speaks the result in another language. It runs fully offline after setup. It is designed for a Raspberry Pi 5 with 8 GB of RAM. Check the GitHub repo for setup details.</p></li><li><p><a href="https://thinkingmachines.ai/news/inkling-small/">Thinking Machines Lab has released Inkling-Small</a>, a smaller open-weights version of Inkling. The MoE model has 276B total parameters and 12B active parameters. It supports text, images, audio, and a 1M-token context window. Thinking Machines says it offers similar performance to Inkling with less compute. Check Thinking Machines&#8217;s post for more details.</p></li><li><p><a href="https://bfl.ai/blog/flux-3-video">Black Forest Labs has released FLUX 3 Video</a>. It can create videos from text or images. It generates clips up to 20 seconds with dialogue, sound effects, and ambient sounds. It also supports keyframes and can continue an existing video. Check Black Forest Labs&#8217;s post for more details.</p></li><li><p><a href="https://x.ai/news/grok-voice-think-fast-2">SpaceXAI has released Grok Voice Think Fast 2.0</a>, its latest speech-to-speech voice model. It improves transcription, conversations, and tool use. SpaceXAI says it starts responding in about 0.7 seconds. It is also built to handle background noise and phone audio. Check SpaceXAI&#8217;s post for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/models-and-research/google-labs/lyria-3-5/">Google has released Lyria 3.5</a>, its latest music generation model. It improves melodies, lyrics, vocals, and pronunciation. Users can also control the tempo and duration of generated tracks. It is available in Google Flow Music. Check Google&#8217;s post for more details.</p></li><li><p><a href="https://blog.cloudflare.com/cloudflare-computer">Cloudflare has introduced @cloudflare/computer</a>, an open source runtime for AI agents. It gives filesystem and tools to agents to work with its files. Simple tasks run in a Worker. Complex tasks run in a container. Both environments use the same files, so the agent can switch between them without losing its work. Check Cloudflare&#8217;s post for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-117-metas-coding-agent?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[DevShorts Conversations - The Goal Was Never CI - With Rob Zuber]]></title><description><![CDATA[A conversation with CircleCI CTO Rob Zuber on agents, CI, sandboxes, and software process]]></description><link>https://www.devshorts.in/p/devshorts-conversations-the-goal</link><guid isPermaLink="false">https://www.devshorts.in/p/devshorts-conversations-the-goal</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 31 Jul 2026 12:31:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/df107d56-f555-4352-9be8-5e035dd6c428_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI has made code generation easier. But software engineering processes like standups, sprints, PRs, story points, and planning were designed when writing code was expensive. </p><p>Now code can be generated faster, but CI, PR review, testing and approvals are still catching up. This became the central theme of my conversation with Rob Zuber.</p><p>Rob has led engineering at <a href="https://circleci.com/">CircleCI</a> for more than a decade. In that time, he has helped rebuild the platform through major shifts in software development, including Rails monoliths on Heroku, mobile-first development, Docker, Kubernetes, and now AI agents.</p><p>CircleCI is seeing this shift from close range. Teams are generating more code and running more builds, but that does not always mean more software is getting merged into the main branch. Engineering teams are also burning CI cycles discovering broken builds from agent-generated code.</p><p>But I did not want this conversation to be only about a report or a product update. I wanted to understand how software engineering itself changes. What happens to CI as a category? What happens to the pull request as an artifact? And what happens to the role of the engineer?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UH3K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UH3K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!UH3K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!UH3K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!UH3K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UH3K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.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;:1583675,&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://www.devshorts.in/i/206965526?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.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_!UH3K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!UH3K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!UH3K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!UH3K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2e5fb28-848c-4e4e-b7e7-987ecebd6eb0_1672x941.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 aria-hidden="true" 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><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="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Key points from Rob</h2><p>Rob joined from San Francisco, and the conversation went in many directions. </p><p>A few things he said kept coming back to me after the call.</p><ul><li><p>Engineering leaders are seeing their hard-earned credibility get &#8220;rapidly devalued.&#8221; For Rob, staying close to the code is how that credibility stays real. That is why he still contributes to core codebases and was on call the week we spoke.</p></li><li><p>CI should move from catching failures first to confirming that the code is ready. By the time code reaches the pipeline, it should be expected to pass.</p></li><li><p>Many of our processes exist because we are still afraid to write code. When the cost of writing code changes, the process built around that old cost should change too.</p></li><li><p>Sandbox companies are &#8220;a dime a dozen,&#8221; but just having a new compute layer does not replace the full CI business.</p></li><li><p>Directed feedback to agents can reduce token spend by 60 to 80 percent. Sometimes, even stripping junk out of test output makes a big difference.</p></li><li><p>Two-person review is just one way we chose to manage risk. It is not the only possible way. We can build better controls for the new workflow.</p></li></ul><p>This is the first in a new Dev Shorts series of conversations with people building developer tools. The transcript below is edited for length and clarity.</p><h2>1. &#8220;I&#8217;m on call this week&#8221;</h2><p>Aravind: You run engineering at a company whose customers are engineers. AI is also changing how engineering teams work. How has your own job changed?</p><p>Rob: </p><p>There are two parts to it.</p><p>One part is product. Our customers are very technical, so our product strategy is deeply informed by how our own engineers work.</p><p>The other part is leadership. I am leading engineers who are working very differently from how I worked as an IC.</p><p>I think a lot of engineering leaders are reaching a point where the expertise and credibility they built over many years is being devalued very quickly. The way I have done this work over the years is changing.</p><p>For me, I cannot think about engineering work without doing some engineering work myself. I cannot just say, &#8220;I bet it works like this&#8221; and be credible. So I have had to sit down and do proper work. Not the kind of work where I build a side project over the weekend and then ask, &#8220;Why can&#8217;t everyone get this done?&#8221;</p><p>I mean actually contributing to core codebases within the platform, so I can understand the challenges our customers and our engineers face. I am not putting myself in the blocking path, but I am trying to stay close to the experience.</p><p><strong>I&#8217;m on call this week, actually.</strong></p><div><hr></div><p>Aravind: And what has that hands-on time changed about how you see the tools?</p><p>Rob: </p><p>We went through a transition. Early on, people said these tools were great for prototyping, but we would still do the serious work ourselves. That view matched what the models could do at the time. It also made engineers feel better. But that changed really quickly.</p><p>Now the question is different. Production work has more risk than prototype work. It needs more stability, better design, and stronger checks. So yes, I am still going to use generative AI. For production work, I will use it inside a harness that helps keep the quality high. </p><p>For low-risk prototypes, I can use it in the most &#8220;YOLO, who cares&#8221; way. I just want a functioning prototype as fast as possible, and I do not care if it scales. <strong>Risk management is the big thing right now</strong>. You need to know which activity is low risk and which activity is high risk, and choose how to work accordingly.</p><p>Honestly, the models are overqualified for some of this at this point. The bigger conversation everyone is having is how to drive down token cost, because all my engineers are using Fable to write hello-world apps. </p><p>We are industrializing. That is the process we always go through. Things start extremely expensive, hard, out of reach, but motivating. Then, if they are valuable enough, we learn how to optimize them. We are in that optimization phase right now.</p><div><hr></div><h2>2. The goal was never CI</h2><p>Aravind: CircleCI has been the leader in this category for a long time. I do not want to ask what is new in agentic CI, because everyone is already discussing that. I want the strategic view. How is your thinking about the company itself changing, even if it changes every three months?</p><p>Rob: </p><p>Three months is a lifetime in this space. But strategically, I am a fan of Simon Sinek&#8217;s &#8220;start with why.&#8221; Continuous integration is the category name. We can debate whether using &#8220;CI&#8221; in the name in 2011 was a great idea or a terrible idea. <strong>But the important point is that the goal was never just to build CI. The goal is to help our customers get their software into the hands of their customers as quickly as possible, with high confidence.</strong></p><p>We used to think speed and quality were a tradeoff. Then we learned that moving faster, when done right, makes you better. If you tune your process for speed with proper checks, you get quality too. If you tune it for quality with fast feedback, you get speed too.</p><p>If that is the goal, CircleCI has already been through many versions of it. We started in 2011 with Rails monoliths deployed on Heroku. The typical customers then were startup teams building from garages around Palo Alto. Then came mobile-first around 2013. Then Docker shipped. Everyone started containerizing. Microservices became popular. Everyone started building on Kubernetes. Then came Rust, Go, TypeScript everywhere, and Next.js. The way people build and ship software has changed many times. We have kept rebuilding the platform to serve the same goal.</p><p>Now take that pattern into the AI SDLC, or whatever we end up calling it. The question becomes this. If people are primarily building with agents, how are they going to build with high confidence and ship quickly? A core part of our thesis is that <strong>we need to get feedback directly to the agent. The agent needs to know what it is building and whether it is on the right track, because everything else is too late.</strong></p><p>What we see today is a lot of branch builds. Teams are using CI to validate their agent-generated code. But more branch builds do not always mean more code reaches the main branch. There is a lot of activity. Maybe not the same amount of productivity.</p><div><hr></div><p>Aravind: So where does the pipeline itself end up?</p><p>Rob: </p><p>I think there is still a final gate before things go to production. Otherwise, we will all be in a very dark place. But by the time something gets to CI, you should assume it is going to pass. All of that feedback can be given much earlier. We already know how to validate software. We should just do that in a very different place.</p><p>Is that still CI, capital C, capital I, Martin Fowler-approved, the one true way to build software? I doubt it. Everything we have built over the last 25-plus years has evolved around how humans think and work. <strong>If that is not who is driving the process anymore, we have to fundamentally rethink it.</strong></p><div class="callout-block" data-callout="true"><p>A note from me: This is the most interesting admission an incumbent CTO can make. CI still has a role, but it moves from being the main workbench to being the final validation step. The interesting work, in Rob&#8217;s framing, happens before the commit exists.</p></div><div><hr></div><h2>3. Software Process Assumes Code Is Expensive</h2><p>Rob: </p><p>Rethinking the software process is hard because we are not good at big leaps. As an industry, and honestly as a society, we usually move in small steps. I believe in process engineering. I believe in the theory of constraints. But if you look at the software engineering process, we have built many assumptions over the years around the cost of creating software.</p><p>The time we spend on user research, planning, breaking epics into stories, and breaking stories into tickets all comes from one assumption. Writing software is expensive. We invented Agile around 25 years ago, and the first thing we did after that was create rigid processes and call them Agile. That meant sprint planning on Monday morning, daily stand-ups, and story-point poker. If you do not do those things, people say you are not Agile. That created a way for people to write books, run workshops, and build consulting businesses around &#8220;how to do Agile.&#8221; But they were not the real spirit of Agile.</p><p><strong>Part of the reason we created those processes is that we were still afraid to write code, because writing code was expensive</strong>. If that cost changes, and generative AI has changed it, then the process built around the old cost is probably not the right process anymore.</p><p>Yes, we are still concerned about tokens, but open-weight models are already good enough for a lot of this work. So the cost of creating software has still shifted. This is not just about PRs becoming a little more expensive, or merging becoming a little more expensive. The real question is different. What process should we design when software is much easier to build?</p><p>The Agile Manifesto is four lines. One of them is working software over comprehensive documentation.</p><p>We may finally be at a point where I can say, &#8220;Build me a thing that does this,&#8221; and get something working. It may not be production-ready. It may just be a high-fidelity prototype. But that is enough to start a real conversation about what we are actually building.</p><p>That changes how a lot of engineers think about their role. Many of us have been oriented around being the implementer. Someone else figures out the business requirements, and the engineer implements them. But when implementation becomes as easy as typing a couple of sentences, the value shifts. <strong>Engineers are moving more and more toward product and strategy. That is what we promised ourselves out of Agile and then fought against by burying it in process.</strong></p><div><hr></div><h2>4. Sandboxes are a primitive, not a business</h2><p>Aravind: Validation is clearly moving into the inner loop, and that is where the sandbox companies live. I never imagined a Docker container becoming a category, but here we are. MicroVM sandboxes are becoming the new substrate for agent execution. Do sandboxes eat CI?</p><p>Rob: </p><p>CI has always been a layer of value built on top of commodity infrastructure. You could buy some EC2 VMs and run your own CI on top of them. I can assure you, I  have a business. The numbers say we have a business, because people do not want to run CI infrastructure themselves.</p><p>Sandboxes are a slightly different primitive. Many of them are Firecracker microVMs running on someone&#8217;s infrastructure. But my customers do not care whether I run their workloads in a microVM, an EC2 VM, or a Docker container. <strong>What they care about is how much that environment looks like their production environment, and how fast we execute.</strong></p><p>New technologies like microVMs can help us run things faster and cheaper, with better margins, at the same or better quality of service. But does a different compute primitive destroy the CI business? I do not think it does.</p><p>Where sandboxes are getting most of their value right now is in constraining agents. I have an untrusted entity, and I do not want to approve every action manually. I want an environment where the default is yes, and I know that environment is safe. That is real.</p><p><strong>On the other hand, sandbox companies are a dime a dozen. I could name 25 of them right away. Running Firecracker on someone else&#8217;s box is not a defensible moat. It is a piece of technology anyone could spin up in an afternoon.</strong></p><p>So what we will probably see is a split, with some companies moving beyond basic infrastructure and focusing on specific problems. Fly.io, for example, is offering infrastructure to run production-like environments. I think of them as competing more with Vercel than with CircleCI. Daytona is doing more in agent execution.</p><p>Will people try to build CI solutions with sandboxes? Maybe. But they will not become much better or meaningfully different just because they use sandboxes underneath. The value will come from what problem the product solves on top of it.</p><p>We use similar technology under <a href="https://circleci.com/blog/chunk-sidecars/">Chunk Sidecars.</a> Sidecars are an attempt to solve a specific problem for a specific user, not to provide an infrastructure primitive.</p><div><hr></div><h2>5. The Token Bill Comes Due</h2><p>Aravind: Here is the pressure I keep hearing about. CI used to stop. There were nightly builds. Now teams ship 500 PRs a week, the pipeline never sleeps, and nobody is sure the checks are even meaningful. What happens to the cost model?</p><p>Rob: </p><p>CI performance and CI cost are absolutely becoming more important as people build more. There are two parts to it. One option is to run less CI, but that usually means batching changes and slowing down. So the better answer is to run faster CI, and do less compute for each result.</p><p>Running faster CI means continuing to invest in wall-clock time and parallelization. Using less compute is the more interesting part. <a href="https://circleci.com/blog/chunk-sidecars/">Chunk Sidecars</a> run the smallest possible piece of work next to the agent, so by the time the full CI job runs, it is probably going to pass. Fewer failed builds means teams spend less for each shipped change.</p><p>Inside the CI job, Smarter Testing looks at the change and picks the most useful tests to run first. That way, teams can build confidence with smaller pre-checks instead of running the full test suite every time. Then, at the final gate before production, run all the tests and security scans. We believe in the value of spending money on CI. I just want people spending it on the high-value parts.</p><p>On tokens specifically, if your costs are climbing but your productivity and delivered value are climbing more, you are fine. You are making more money as a business. If that is not true, that is the thing to fix.</p><p>There are also practical ways to reduce token spend. <strong>When we give the agent, directed and specific feedback early in the cycle, about whether it is on the right path, we sometimes see a 60 to 80 percent reduction in token spend.</strong> The agent is not waiting for a human to say, &#8220;No, try again, maybe try this.&#8221; It gets to the right outcome faster.</p><p>There is also a very tactical piece. When you run tests, you get back a giant pile of output. Whitespace, control characters, and junk all get consumed as tokens. We know what an error message looks like. We know what the agent is actually looking for. We have been reading this output for fifteen years. So we compress the output and send back only the useful part. The agent does not have to burn tokens scanning through noise to find what matters.</p><div><hr></div><h2>6. Convince Me With Your Tests</h2><p>Aravind: Let us talk about the human role. The contract used to be like, Everything is green, then a peer checks the business logic. In a world where agents write first and merge fast, what is the artifact a human actually verifies? Model companies, agent companies, everyone is arguing for something different.</p><p>Rob: </p><p>We are very motivated by this question right now, internally and for customers. Start with how I read a PR today. The PR interface gives me a list of changed files in alphabetical order. I go through them in order, and halfway through I realize the change is too big to hold in my head.</p><p>So I look for the key changes. I try to understand their context. And then, because I am a human and not a computer, <strong>I ask, where is the test that proves this does what the author intended?</strong></p><p>That is my mental model of the artifact, even without AI. What gives me confidence, today and in the future, that this change does what the author intended?</p><p>So often, there are no tests. Or there is one test proving the most obvious case, while complex logic is not really tested. My review feedback becomes, convince me with your tests that this works the way you expect.</p><p>The problem is that we have had a basic understanding of test quality. Code coverage is better than nothing, but it can also be a distraction. It can tell you the wrong things. I have spent days writing bad code just to hit a coverage number.</p><p>Test quality is the more interesting pursuit. We have done some work around mutation testing, which is a very old and very simple idea. Take the code and make a small change that should break it. Flip a sign. Then see whether the tests catch it. If I modify the code in a way that should break it and everything still stays green, then I do not have real coverage.</p><p>We built something to try this because we happen to have arbitrary fast compute. Take a small codebase, run a mutation analyzer across it, and you get 2,500 mutations. Now you need to run the test suite 2,500 times to find the gaps. That is suddenly feasible.</p><p>It is algorithmic and it sits below intent, but it is a start. <strong>It gives me a real measure of how good my validation is, so I can actually trust the green checkmark.</strong></p><div><hr></div><p>Aravind: And beyond the checkmark? PRs are getting bigger, not smaller. </p><p>Rob: </p><p>Right. We can now do so much work very quickly. But if we try to keep every PR to ten lines, we may end up shipping thousands of PRs a day. That breaks the rest of the system.</p><p>So within a larger change, there are logical components. Code is often written chronologically, through many iterations. But the change can be repartitioned into sensible slices. These components feed this function. That function provides this capability. I do not need your false starts in the Git history.</p><p>Once you have slices, you can identify which ones are low risk and which ones are high risk. A structural component that follows all our standard patterns, has no security surface, and has no embedded tokens can flow through. Another slice probably needs human review.</p><p>If you reject every fifth PR for human review, and that PR is 10,000 lines, the human is back to reading files in alphabetical order. They are hunting for a needle in a haystack that algorithms already found. Just show me the risk.</p><p>One part I do not have a great answer to yet is semantic understanding of the change. When we talk about systems, we draw diagrams. But when we talk about changes to systems, the only tool we usually have is reading lines of code. For a five-line change, that is fine. Show me the code. But for a large change, can you show me the difference semantically? Can you help me understand what is evolving, and where the risk is concentrated?</p><p>Then you still need the audit trail, because someone in compliance will ask who the second person to sign off was. But here is the thing. <strong>The requirement to have two humans read every piece of code does not exist anywhere. It is just the control we chose to reduce risk. Then auditors copied it across organizations. We can build new controls. We just have to build them.</strong></p><div class="callout-block" data-callout="true"><p>A note from me: Most of what we defend as &#8220;engineering rigor&#8221; is actually one control that fit one cost structure. The need for rigor is real. But the ritual can change.</p></div><div><hr></div><h2>7. Finally doing the original Agile</h2><p>Aravind: Parting thought. People will keep planning and keep validating, but the day-to-day of writing and reading code is dissolving. If we had to write the manifesto for this era, what does it say?</p><p>Rob: </p><p>The really interesting thing is that <strong>I think we might finally do the original Agile.</strong> I have had this conversation a few times recently.</p><p>Working software over comprehensive documentation. Functioning code is now cheap enough that it makes sense to build the system and evolve it. We do not have to itemize every requirement upfront before we start.</p><p>Some of the original Agile Manifesto authors recently did a 25th-anniversary revisit of the manifesto in Utah. And going back to &#8220;start with why,&#8221; the intent was there. The intent was good. The intent was right.</p><p>I do not know that I would rewrite the intent. But I would certainly question many of the actions we have taken as a result of it.</p><div><hr></div><h2>8. What AI companies get wrong</h2><p>Aravind: Last one. What is one thing AI companies are doing terribly wrong, on both sides: the foundation labs and the AI-forward builders?</p><p>Rob: </p><p>I will take the builders first. When we have a new thing, we often think everything has to be new. Software development is fundamentally changing, but we have already solved a lot of problems in software development. Mutation testing is from the 1970s. A lot of useful ideas already exist. But because things look different on the surface, we reinvent them and later realize the problem was already solved. That gets expensive. <strong>Absolutely innovate. Absolutely bring those ideas into the current context. But do not assume everything has to be net new.</strong></p><p>Interestingly, it goes both ways. In the early 2010s, there was a big wave of reinventing organizational structure in software companies. Most of it eventually got thrown out. Everyone eventually said, Peter Drucker solved this 50 years ago. Let us have normal management. But now the leverage from agents really is forcing us to rethink team shapes. Smaller teams can be more productive, and the communication cost of adding nodes is high. Back then, people were doing it because someone wrote a blog post and it seemed fun. Now the underlying constraint has actually moved.</p><p>On the foundation labs, it is easy to make lofty statements, so I will not. But here is what I am genuinely curious about. The major model companies ended up targeting software engineering as the vertical. That is the classic Crossing the Chasm move. Own one vertical completely, then replicate. Developers, or at least their bosses, were willing to pay to optimize an expensive manual process. I understand why Claude Code wins and why Codex wins. They control the fundamental component at the heart of the system. The most important thing a coding agent can do is have a great model interaction.</p><p>But now they are pursuing the rest of the SDLC. Cursor has pre-announced that they are building their own version control and moving off GitHub. Obviously, I have a dog in this fight, and so do you. <strong>I do not know that they have unique value to bring to those pieces of the puzzle once the model is not the key ingredient</strong>. I also question whether it takes attention away from where their value is highest.</p><p>If I remember Crossing the Chasm correctly, and I read it 23 years ago, the play is to own the vertical and then replicate into other verticals, like design, legal or whatever. Going deeper into software development instead risks exposing you to someone succeeding closer to your core. Then again, they are making hundreds of billions, so they are doing something right that I am not. And I am totally fine with that.</p><div><hr></div><h2>9. Do human things</h2><p>Near the end, we talked about what all of this means for people who are just starting out. </p><p>Rob has two sons, one in college and one about to be.</p><p>Rob:  They ask me, what is the future? And I say, I have no idea, man. But do human things. Be graceful. Think deeply about problems. Learn to problem-solve. Be a good human being. Build relationships. That stuff is never going away. I think there is a future where our craving for human interaction gets stronger as our days become more artificial.</p><h2>Conclusion</h2><p>The conversation was about how software process changes when code becomes cheaper to write. CI, tests, and human judgment still matter. But feedback has to move earlier, review has to become more focused, and the green checkmark has to mean real confidence, not just that the pipeline finished.</p><p>Thanks to Rob Zuber for the conversation, and to the CircleCI team for making it happen.</p><p>You can find Rob&#8217;s team&#8217;s work at <a href="https://circleci.com/">circleci.com</a>, including <a href="https://circleci.com/blog/chunk-sidecars/">Chunk Sidecars</a> and the State of Software Delivery research we touched on.</p><p>This is the first in a series of Dev Shorts conversations with technical leaders shaping how software gets built. If there&#8217;s a leader you want me to sit down with next, reply to this email. I read everything.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/devshorts-conversations-the-goal?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/devshorts-conversations-the-goal?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/devshorts-conversations-the-goal?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 116] - OpenAI & HuggingFace Security Incident, Gemini 3.6 Flash, Qwen3.8, Grok For Excel, Cursor Router, Andrew NG's OpenWorker, CoWork's feature - Record a Skill, OpenShip and more! ]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 24 Jul 2026 12:30:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c98ace0c-da8b-4701-b6a3-ccfbf9a573bf_5416x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 116th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://www.devshorts.in/p/how-to-run-custom-models-in-codex">How to Run Custom Models in Codex</a></p></li><li><p><a href="https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code">GLM 5.2 vs Opus 4.8 in Claude Code</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p>Last week, <a href="https://huggingface.co/blog/security-incident-july-2026">Hugging Face disclosed a security incident</a>. An AI agent had compromised its infrastructure. <a href="https://openai.com/index/hugging-face-model-evaluation-security-incident">OpenAI later found that its models were behind the incident</a>. It happened during an internal cybersecurity test. The models found a way to access the internet from the isolated environment. They then accessed Hugging Face&#8217;s systems to get benchmark answers. Check OpenAI&#8217;s post for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-6-flash-3-5-flash-lite-3-5-flash-cyber/">Google has released three new Gemini models</a>. Gemini 3.6 Flash is built for coding, knowledge work, and multimodal tasks. It uses fewer output tokens than previous model. Gemini 3.5 Flash-Lite is built for fast, high-volume tasks. Gemini 3.5 Flash Cyber works with CodeMender to find and fix security vulnerabilities. Check Google&#8217;s post for more details.</p></li><li><p><a href="https://x.com/qwen_cloud/status/2078758151390953489">Qwen has announced Qwen3.8</a>, an upcoming 2.4T-parameter model. Qwen says the model will be released with open weights soon. Qwen3.8-Max-Preview is already available through selected Qwen platforms. Check Qwen&#8217;s post for more details.</p></li><li><p><a href="https://x.com/claudeai/status/2079595988998554047">Anthropic has added an interesting feature to Claude Cowork</a>. There is a feature named Record a Skill. You can now record your screen while completing a task and explain the steps. Claude turns the recording into a reusable skill. It can use the skill to repeat the task later. Check Claude&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p>This week, we are featuring <a href="https://github.com/oblien/openship">Openship</a>. It is an open source, self-hosted platform for deploying apps. You point it to a repository, and it detects the stack, builds the app, and deploys it. You do not need to prepare configuration files, pipelines, or YAML files. It also manages databases, domains, SSL, and backups. Check the GitHub repo for setup details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9E_x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9E_x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 424w, https://substackcdn.com/image/fetch/$s_!9E_x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 848w, https://substackcdn.com/image/fetch/$s_!9E_x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 1272w, https://substackcdn.com/image/fetch/$s_!9E_x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9E_x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png" width="1456" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:464,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118710,&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://www.devshorts.in/i/208187707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.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_!9E_x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 424w, https://substackcdn.com/image/fetch/$s_!9E_x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 848w, https://substackcdn.com/image/fetch/$s_!9E_x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 1272w, https://substackcdn.com/image/fetch/$s_!9E_x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbde15701-87ec-4201-b9c8-dd26458e1e05_1656x528.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to Know</strong></h2><ul><li><p><a href="https://x.com/SakanaAILabs/status/2080448772778373586">Sakana AI has released Fugu-Ultra v1.1</a> and <a href="https://sakana.ai/fugu-cyber-release/">Fugu-Cyber</a>. Fugu-Ultra v1.1 is built for coding, agentic tasks, and advanced reasoning. Fugu-Cyber is a multi-agent system that can analyze vulnerabilities and create detection rules. Access to Fugu-Cyber requires approval. Check Sakana AI&#8217;s posts for more details.</p></li><li><p><a href="https://huggingface.co/blog/nvidia/cosmos3edge">NVIDIA has released Cosmos 3 Edge</a>, a 4B-parameter model for robots and vision AI agents. It can understand scenes and generate robot actions on edge devices. Developers can adapt it for their own robot policies. Check NVIDIA&#8217;s post for more details.</p></li><li><p><a href="https://blogs.cisco.com/ai/introducing-antares-the-most-efficient-open-weight-ai-models-for-vulnerability-localization">Cisco has released Antares-350M and Antares-1B</a>. These open-weight models can find files that may contain vulnerabilities. They run locally, so sensitive code stays within the environment. Check Cisco&#8217;s post for more details.</p></li><li><p><a href="https://poolside.ai/blog/introducing-laguna-s-2-1">Poolside has released Laguna S 2.1</a>, an open-weight coding model. It has 118B total parameters, 8B active parameters, and a 1M-token context window. It is built for long coding and agentic tasks. Check Poolside&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://x.ai/grok/excel">XAI has released Grok for Excel</a>, an AI assistant that works inside Excel. You can now complete Excel tasks using simple prompts. It can write formulas, answer questions about selected data, create charts, and rerun scenarios. Check SpaceXAI&#8217;s post for more details.</p></li><li><p><a href="https://github.com/andrewyng/openworker">Andrew Ng has released OpenWorker</a>, an open source AI coworker that runs on your desktop. You can give it a task, and it completes the work for you. You can connect it to models from different providers or run local models with Ollama. Check the GitHub repo for setup details.</p></li><li><p><a href="https://cursor.com/blog/router">Cursor has launched Cursor Router</a>. It routes each coding request to the right model. Simple tasks go to lower-cost models, while harder tasks go to stronger reasoning models. This helps teams reduce token costs. Check Cursor&#8217;s post for more details.</p></li><li><p><a href="https://x.com/UnslothAI/status/2079207457788952944">Unsloth now supports AMD hardware</a>. Developers can train and run more than 500 AI models on AMD GPUs. It works on Windows, WSL, and Linux. Some Qwen and Gemma models can be trained with 3 GB of VRAM. Check Unsloth&#8217;s post for more details.</p></li><li><p><a href="https://qwen.ai/blog?id=qwen-image-3.0">Qwen has released Qwen-Image 3.0</a>, its latest image generation model. It can create detailed layouts such as newspapers, storyboards, and UI designs. It can generate small readable text and supports 12 languages. Check Qwen&#8217;s post for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-116-openai-and-huggingface?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div><p></p>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up #115]- Kimi K3, Grok 4.5, Bonsai 27B, Thinking Machine's Inkling, GPT-Live, Clawk-disposable VMs for Agents, SWE-1.7, Meta's Muse Spark 1.1, grok-build,Agent Teams in Antigravity & more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 17 Jul 2026 12:31:33 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/feee4d59-bb48-45bf-b857-eadca67d715d_8196x5464.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 115th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://www.devshorts.in/p/how-to-run-custom-models-in-codex">How to Run Custom Models in Codex</a></p></li><li><p><a href="https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code">GLM 5.2 vs Opus 4.8 in Claude Code</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://x.com/Kimi_Moonshot/status/2077830229968683203">Moonshot AI has released Kimi K3</a>, a 2.8T-parameter model. It is built for coding and agentic tasks. It supports native vision and a 1M-token context window. The full model weights will be released by July 27, 2026. Check Kimi&#8217;s post for more details.</p></li><li><p><a href="https://thinkingmachines.ai/news/introducing-inkling/">Thinking Machines Lab has released Inkling</a>, a new open-weights model. The MoE Model has 975B total params, 41B active params. It can work with text, images, and audio. It supports 1M-token context window. <a href="https://huggingface.co/thinkingmachines/Inkling">The weights are on Hugging Face</a>. Check Thinking Machines Lab&#8217;s post for more details.</p></li><li><p><a href="https://x.ai/news/grok-4-5">SpaceXAI has launched Grok 4.5.</a> SpaceXAI says this is its strongest model so far. It was trained alongside Cursor. It is built for coding, agentic tasks, and real engineering tasks. The model is good at creating well-designed, end-to-end apps. Check SpaceXAI&#8217;s post for more details.</p></li><li><p><a href="https://prismml.com/news/bonsai-27b">PrismML has released Bonsai 27B,</a> a compressed multimodal model based on Qwen3.6. Its 3.9 GB 1-bit version can run on an iPhone 17 Pro, while the 5.9 GB version targets laptops. Both versions support reasoning, vision, and tool calls on local devices. Check PrismML&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/clawkwork/clawk">This week, we are featuring Clawk.</a> It is an open source tool that gives coding agents a disposable Linux VM. It works with Claude Code, Codex, and shell sessions. The agent gets root access inside the VM. Your keychain and unmounted files stay outside it. Network access is controlled through an allow-list. Check the GitHub repo for setup details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!psRZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!psRZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 424w, https://substackcdn.com/image/fetch/$s_!psRZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 848w, https://substackcdn.com/image/fetch/$s_!psRZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 1272w, https://substackcdn.com/image/fetch/$s_!psRZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!psRZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png" width="1456" height="740" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:740,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288848,&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://www.devshorts.in/i/207376767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.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_!psRZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 424w, https://substackcdn.com/image/fetch/$s_!psRZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 848w, https://substackcdn.com/image/fetch/$s_!psRZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 1272w, https://substackcdn.com/image/fetch/$s_!psRZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20d4c00e-3806-4d1a-b61e-23dee0d35b99_1700x864.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to Know</strong></h2><ul><li><p><a href="https://x.com/antigravity/status/2076720528937611363">Google Antigravity has added Agent Teams</a> as a research preview. The /teamwork-preview command starts a team of specialized subagents. They work together to plan, build, and verify coding tasks in parallel. This feature is limited to Google AI Ultra users. Check Antigravity&#8217;s post for more details.</p></li><li><p><a href="https://x.com/p0/status/2076690147144503390">Parallel has launched Search Turbo</a>, a new fast mode for its web search API. It returns web results that AI models can use directly. This can be useful for applications that need fast web search. Check Parallel&#8217;s post for more details.</p></li><li><p><a href="https://x.com/AIatMeta/status/2074577662840832382">Meta has launched Muse Image and Muse Video</a>. Muse Image can edit images and combine elements from multiple references. It can search the web for current information and improve its own output. Muse Video can generate videos with native audio. Check Meta&#8217;s post for more details.</p></li><li><p><a href="https://github.com/bug0inc/passmark">Passmark is an opensource Playwright library</a>. It covers end-to-end browser testing. You can write browser test steps in natural language. It uses AI models to execute those steps through Playwright. Check the GitHub repo for setup details.</p></li><li><p><a href="https://blog.reve.com/posts/the-reve-api/">Reve has launched the Reve 2.1 API</a>. It can create and edit native 4K images. It also includes experimental APIs for working with layouts. A layout splits an image into editable regions. Developers can change one region without changing the rest of the image. Check Reve&#8217;s post for more details.</p></li><li><p>We are covering more resources on harness engineering. Here is another one on <a href="https://lilianweng.github.io/posts/2026-07-04-harness/">harness engineering by Lilian Weng</a>. The guide covers workflow automation, file-based memory, subagents, and self-improving harnesses. Read the full post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://openai.com/index/introducing-gpt-live/">OpenAI has launched GPT-Live</a>, a new voice model for natural conversations. It can listen and speak at the same time. For harder questions, it can send search and reasoning tasks to GPT-5.5 while the conversation continues. The API is planned for a later release. Check OpenAI&#8217;s post for more details.</p></li><li><p><a href="https://cognition.com/blog/swe-1-7">Cognition has released SWE-1.7</a>, its most capable coding model so far. It is built for long-running software engineering tasks. When the model approaches its context limit, it summarizes its current work and continues from that summary. Check Cognition&#8217;s post for more details.</p></li><li><p><a href="https://x.com/SpaceXAI/status/2077494535387828644">SpaceXAI has open sourced Grok Build</a>, its coding agent harness and terminal UI. It shows how it assembles context, handles model responses, and runs tool calls. It also includes support for skills, plugins, hooks, MCP servers, and subagents. Check the <a href="https://github.com/xai-org/grok-build">GitHub repo</a> for more details.</p></li><li><p><a href="https://ai.meta.com/blog/introducing-muse-spark-meta-model-api/">Meta has released Muse Spark 1.1</a>, a multimodal reasoning model for agentic tasks. It has a 1M-token context window. It can compact older work while keeping important steps. It also supports planning and parallel subagents. Check Meta&#8217;s post for more details.</p></li><li><p><a href="https://github.com/generative-computing/mellea">Mellea</a> is an open source Python library for building structured LLM workflows. It turns Python functions into LLM calls. Docstrings become prompts, and type hints define the output format. It checks the result and retries if the requirements are not met. Check the GitHub repo for setup details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-115-kimi-k3-grok-45?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[How to Run Custom Models in Codex]]></title><description><![CDATA[The complete guide on connecting Codex to local models and other third-party models.]]></description><link>https://www.devshorts.in/p/how-to-run-custom-models-in-codex</link><guid isPermaLink="false">https://www.devshorts.in/p/how-to-run-custom-models-in-codex</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 10 Jul 2026 13:30:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EOoE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Codex is not locked to OpenAI&#8217;s cloud models. It can connect to almost any model out there. You can connect a local model running on your own machine, or point it to other models from different providers.</p><p>Nowadays, most coding agents like Claude Code and Codex support custom models. That opens up options. You could choose a model based on cost, privacy, or just wanting to try something new.</p><p>In this guide, we will cover:</p><ol><li><p>Codex App and CLI</p></li><li><p>Connect Local Models in Codex through Ollama, LM Studio, Unsloth, and llama.cpp</p></li><li><p>Connect Custom Models in Codex through OpenRouter</p></li><li><p>Four points to remember while integrating custom models</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Codex App and CLI</h2><p>OpenAI ships Codex as a <a href="https://chatgpt.com/codex">desktop app</a> and a <a href="https://learn.chatgpt.com/docs/codex/cli">CLI</a>. Both let you bring your own model. The desktop app gives you a full interface, multi-agent runs, worktrees, and an in-app browser. The CLI runs right in your terminal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EOoE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EOoE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 424w, https://substackcdn.com/image/fetch/$s_!EOoE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 848w, https://substackcdn.com/image/fetch/$s_!EOoE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 1272w, https://substackcdn.com/image/fetch/$s_!EOoE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EOoE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png" width="1456" height="604" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:604,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74841,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.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_!EOoE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 424w, https://substackcdn.com/image/fetch/$s_!EOoE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 848w, https://substackcdn.com/image/fetch/$s_!EOoE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.png 1272w, https://substackcdn.com/image/fetch/$s_!EOoE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4594d5b4-54fb-430d-962c-c13e800924d8_1504x624.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 aria-hidden="true" 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><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><h2>2. Connect Local Models in Codex through Ollama, LM Studio, Unsloth, and llama.cpp</h2><p>There are a few ways to run a model on your own machine and connect it to Codex. </p><p>Ollama is the easiest place to start, so we will begin there.</p><h3>Codex App with Ollama:</h3><p>Ollama can connect with the Codex Mac app, as well as the Codex terminal.</p><ol><li><p>Install <a href="https://ollama.com/">Ollama</a>, then pull a model.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;49104c7b-e607-4bb7-8b44-4042e2f1e0f2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">brew install ollama          # macOS
curl -fsSL https://ollama.com/install.sh | sh   # Linux

# pull the model

ollama pull qwen3.5:4b</code></pre></div></li></ol><ol start="2"><li><p>Once you&#8217;ve pulled the model, start the Codex app with,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;cc1777b9-2f84-45d1-9985-17d99f27f072&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">ollama launch codex-app

# If you have more than one model pulled locally, point it at the one you want
ollama launch codex-app --model qwen3.5:4b</code></pre></div></li><li><p>This opens the Codex app already pointed at your local model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nr5t!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nr5t!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 424w, https://substackcdn.com/image/fetch/$s_!nr5t!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 848w, https://substackcdn.com/image/fetch/$s_!nr5t!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!nr5t!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nr5t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png" width="1044" height="1028" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1028,&quot;width&quot;:1044,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:75326,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb15ee9ef-d412-4439-b8db-8b8eea2a1a65_1044x1038.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_!nr5t!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 424w, https://substackcdn.com/image/fetch/$s_!nr5t!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 848w, https://substackcdn.com/image/fetch/$s_!nr5t!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 1272w, https://substackcdn.com/image/fetch/$s_!nr5t!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffab4c0a3-8dc6-44ae-9a80-420343be1c12_1044x1028.png 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 aria-hidden="true" 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><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></li><li><p>To switch back to your previous codex setup, run,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;76db1b1d-46e4-407b-95fe-fafe0b8edb08&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">ollama launch codex-app --restore</code></pre></div></li><li><p>Ollama restores your old settings, and saves a backup under <code>~/.ollama/backup/codex-app/</code> before it changes anything.</p></li></ol><blockquote><p>Note: Use a model that supports tool calling, since Codex depends on tool calling for everything it does. For example, <code>gemma3:4b</code> does not support tools at all, and it will fail the moment Codex tries to use one.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zMYO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zMYO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 424w, https://substackcdn.com/image/fetch/$s_!zMYO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 848w, https://substackcdn.com/image/fetch/$s_!zMYO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 1272w, https://substackcdn.com/image/fetch/$s_!zMYO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zMYO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png" width="1456" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32308,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zMYO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 424w, https://substackcdn.com/image/fetch/$s_!zMYO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 848w, https://substackcdn.com/image/fetch/$s_!zMYO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 1272w, https://substackcdn.com/image/fetch/$s_!zMYO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F709a6972-ca94-49f1-9ff0-42f2b184801d_1710x374.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></blockquote><h3>Codex CLI with Ollama</h3><ol><li><p>Ollama connects to the Codex CLI too. Once you have pulled the model, you can launch codex cli with below commands.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;3170dcef-e44f-46dc-98f5-09df240975f2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">ollama launch codex

# If you have more than one model pulled locally, point it at the one you want
ollama launch codex --model qwen3.5:4b

# You can also skip the launcher and use the --oss flag directly,
codex --oss -m qwen3.5:4b
</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iFlE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iFlE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 424w, https://substackcdn.com/image/fetch/$s_!iFlE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 848w, https://substackcdn.com/image/fetch/$s_!iFlE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 1272w, https://substackcdn.com/image/fetch/$s_!iFlE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iFlE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png" width="2902" height="586" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:586,&quot;width&quot;:2902,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:488696,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3212c102-6acd-46e2-a25a-59815db3c252_2902x586.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_!iFlE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 424w, https://substackcdn.com/image/fetch/$s_!iFlE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 848w, https://substackcdn.com/image/fetch/$s_!iFlE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 1272w, https://substackcdn.com/image/fetch/$s_!iFlE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb3e38ca-75ae-41f1-958b-fb82979cc413_2902x586.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></li></ol><h4>Profile based setup</h4><p>You can also do a  profile based setup to connect ollama with codex cli.</p><ol><li><p>Create ~/.codex/ollama-launch.config.toml.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;baceae27-0e19-4b46-b818-86018eb1867a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">model = "gpt-oss:120b"
model_provider = "ollama-launch"
model_catalog_json = "/Users/you/.codex/model.json"

[model_providers.ollama-launch]
name = "Ollama"
base_url = "http://localhost:11434/v1/"
wire_api = "responses"</code></pre></div></li><li><p>Then run this,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;2456b6ee-84b7-43ba-8fb7-5b527a4d4e08&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">codex --profile ollama-launch</code></pre></div></li></ol><h3>Codex CLI with LM Studio:</h3><p>LM Studio gives you a simple interface for downloading and running models.</p><ol><li><p>Install <a href="https://lmstudio.ai/">LM Studio</a>.</p></li><li><p>Once installed, you will be asked to download a model. Choose the one you want.</p></li><li><p>Go to the Developer tab. Before loading the model, check the context length. LM Studio often sets this low by default, sometimes 8192. Increase it to 32k or higher, if your machine can handle it. Codex adds tool definitions and instructions to every message behind the scenes, on top of what you actually type, so a small context window fills up fast.</p></li><li><p>Load the model, and turn the server on. Confirm the status shows as running.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oj6y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oj6y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 424w, https://substackcdn.com/image/fetch/$s_!oj6y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 848w, https://substackcdn.com/image/fetch/$s_!oj6y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 1272w, https://substackcdn.com/image/fetch/$s_!oj6y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oj6y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png" width="2386" height="1094" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1094,&quot;width&quot;:2386,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:288221,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F365f33a8-faf5-4fee-bf83-3c3cc36a6b26_2386x1094.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_!oj6y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 424w, https://substackcdn.com/image/fetch/$s_!oj6y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 848w, https://substackcdn.com/image/fetch/$s_!oj6y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 1272w, https://substackcdn.com/image/fetch/$s_!oj6y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd556e752-2633-49e1-91f5-e544e98c07e0_2386x1094.png 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 aria-hidden="true" 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><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></li><li><p>Before touching Codex, check what actually loaded:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;08e58cc8-4a24-4e91-9c92-8a4a611e5f96&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl http://localhost:1234/v1/models</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t_6c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t_6c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 424w, https://substackcdn.com/image/fetch/$s_!t_6c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 848w, https://substackcdn.com/image/fetch/$s_!t_6c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 1272w, https://substackcdn.com/image/fetch/$s_!t_6c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t_6c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png" width="1102" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:1102,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:206623,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65c094c4-ec04-4f8b-b3df-f922e762f811_1102x466.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_!t_6c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 424w, https://substackcdn.com/image/fetch/$s_!t_6c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 848w, https://substackcdn.com/image/fetch/$s_!t_6c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 1272w, https://substackcdn.com/image/fetch/$s_!t_6c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6a06cab-08c3-4b99-b7a5-2cee220b250d_1102x457.png 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 aria-hidden="true" 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><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></li><li><p>Now connect Codex. It connects a local model with the <code>--oss</code> flag, and use <code>-m</code> to pick a specific model.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;fc60f744-2f9e-489e-bb3a-c87259fcd42c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">codex --oss -m google/gemma-4-e4b</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EuB8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EuB8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 424w, https://substackcdn.com/image/fetch/$s_!EuB8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 848w, https://substackcdn.com/image/fetch/$s_!EuB8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!EuB8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EuB8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png" width="1942" height="1096" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1096,&quot;width&quot;:1942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:767097,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee932e71-2614-410e-a09d-a1053915e266_1942x1096.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!EuB8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 424w, https://substackcdn.com/image/fetch/$s_!EuB8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 848w, https://substackcdn.com/image/fetch/$s_!EuB8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 1272w, https://substackcdn.com/image/fetch/$s_!EuB8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9823e88a-178d-4e32-80b9-4de72e1f03c2_1942x1096.png 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 aria-hidden="true" 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><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></li><li><p>If you have more than one local server running at the same time, running codex --oss shows a picker, asking which one to use. Select the one you want, and it connects to that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oD34!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oD34!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 424w, https://substackcdn.com/image/fetch/$s_!oD34!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 848w, https://substackcdn.com/image/fetch/$s_!oD34!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 1272w, https://substackcdn.com/image/fetch/$s_!oD34!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oD34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png" width="828" height="454" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:454,&quot;width&quot;:828,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152441,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.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_!oD34!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 424w, https://substackcdn.com/image/fetch/$s_!oD34!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 848w, https://substackcdn.com/image/fetch/$s_!oD34!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 1272w, https://substackcdn.com/image/fetch/$s_!oD34!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F878667e4-30dd-4d10-8f88-9a2a8851e838_828x454.png 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 aria-hidden="true" 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><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></li></ol><h4>Profile based setup</h4><ol><li><p>If you want this LM Studio setup saved as a profile, add this to ~/.codex/config.toml. Name the provider lmstudio_local. If you name it just lmstudio, Codex will reject it, that name is already reserved for its own internal use.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;9551ec0c-c384-4532-95aa-fe5b03f93fb3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">[model_providers.lmstudio_local]
name = "LM Studio"
base_url = "http://localhost:1234/v1"
wire_api = "responses"</code></pre></div></li><li><p>Profiles live in their own file. Create ~/.codex/lmstudio.config.toml:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;e818885b-3b97-43c5-87f1-597164c5c9c9&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">model_provider = "lmstudio_local"
model = "google/gemma-4-e4b"
</code></pre></div></li><li><p>Launch it with,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;ae1728ad-095b-47b9-81f6-0ead3190fe97&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">codex --profile lmstudio</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;5a80f7fa-2683-4db6-83fc-c56292c3cd80&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">/status</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KvHq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KvHq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 424w, https://substackcdn.com/image/fetch/$s_!KvHq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 848w, https://substackcdn.com/image/fetch/$s_!KvHq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 1272w, https://substackcdn.com/image/fetch/$s_!KvHq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KvHq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png" width="1324" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1324,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:501237,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0def3fa-d7a7-4a84-a14c-e4063272603b_1324x824.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!KvHq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 424w, https://substackcdn.com/image/fetch/$s_!KvHq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 848w, https://substackcdn.com/image/fetch/$s_!KvHq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 1272w, https://substackcdn.com/image/fetch/$s_!KvHq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2746f219-cb6f-4c27-ad51-60cb4a75f756_1324x819.png 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 aria-hidden="true" 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><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></li></ol><h3>Codex CLI with Unsloth</h3><p>Unsloth is another local option. It has a web interface and some automatic tool-calling fixes built in.</p><ol><li><p>Install <a href="https://unsloth.ai/docs/basics/codex#unsloth-tutorial">Unsloth</a></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;f1eb9514-790c-4f93-8a1d-cc3e1ea7af86&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl -fsSL https://unsloth.ai/install.sh | sh</code></pre></div></li><li><p>This starts Studio on port 8888. Open http://127.0.0.1:8888 in your browser and set a password.</p></li><li><p>Load a model from the dropdown, for example unsloth/gemma-4-26B-A4B-it-GGUF, and test the model is working.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZOO0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZOO0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 424w, https://substackcdn.com/image/fetch/$s_!ZOO0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 848w, https://substackcdn.com/image/fetch/$s_!ZOO0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 1272w, https://substackcdn.com/image/fetch/$s_!ZOO0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZOO0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png" width="1456" height="256" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:256,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107453,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.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_!ZOO0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 424w, https://substackcdn.com/image/fetch/$s_!ZOO0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 848w, https://substackcdn.com/image/fetch/$s_!ZOO0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 1272w, https://substackcdn.com/image/fetch/$s_!ZOO0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F067e957b-18b8-4345-aad8-cb6c5a5668a0_2902x510.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></li><li><p>Once you test the model inference in unsloth studio, you can start the codex, </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;a6298820-6814-49af-82aa-e617d8497a98&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">unsloth start codex</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KIZZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KIZZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 424w, https://substackcdn.com/image/fetch/$s_!KIZZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 848w, https://substackcdn.com/image/fetch/$s_!KIZZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 1272w, https://substackcdn.com/image/fetch/$s_!KIZZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KIZZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png" width="2778" height="806" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:2778,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:743049,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7716a159-3f3d-4fa7-9cbc-6f0f27a7dfe3_2778x806.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_!KIZZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 424w, https://substackcdn.com/image/fetch/$s_!KIZZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 848w, https://substackcdn.com/image/fetch/$s_!KIZZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 1272w, https://substackcdn.com/image/fetch/$s_!KIZZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb072e508-3042-4901-89f9-32a91c4a90ee_2778x806.png 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 aria-hidden="true" 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><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></li></ol><h4>Profile based setup</h4><p>You can also set profile like below.</p><ol><li><p>Add this to ~/.codex/config.toml.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;2e8c0ce0-1754-4ca6-8758-f0984cf6fcbb&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">oss_provider = "unsloth_api"

[model_providers.unsloth_api]
name = "Unsloth Studio"
base_url = "http://localhost:8888/v1"
env_key = "UNSLOTH_STUDIO_AUTH_TOKEN"
wire_api = "responses"</code></pre></div></li><li><p>Then create ~/.codex/unsloth_api.config.toml.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;61d7a334-e7b8-4902-84a1-58841adcad88&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">model_provider = "unsloth_api"
model = "unsloth/gemma-4-26B-A4B-it-GGUF"</code></pre></div></li><li><p>Grab your API key from Settings&#8594;API, inside Unsloth Studio. Set it.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;58b64ce9-a690-4ae1-b65d-3124bcd8bd38&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">export UNSLOTH_STUDIO_AUTH_TOKEN=your_key_here</code></pre></div></li><li><p>Launch Codex with unsloth api,</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;7d6bf8b6-cda7-4d8f-a845-c69a42075076&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">codex --oss --profile unsloth_api</code></pre></div></li></ol><h3>Codex CLI with llama.cpp</h3><p><a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a> is another way of connecting Local LLMs to the codex.</p><ol><li><p>Install it:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;e6a76a29-0518-4f49-b9b2-b104783e916b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">brew install llama.cpp</code></pre></div><p>If you want to build it from source instead, check <a href="https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md">llama.cpp build page</a>.</p></li><li><p>Download a model. <code>hf</code> is the command Hugging Face's tools use now, the older <code>huggingface-cli</code> name was retired.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;21792e54-9a42-4f7a-9cae-23bf368c2d49&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">pip install -U huggingface_hub hf_transfer
hf download unsloth/gemma-4-e4b-it-GGUF --include "*Q4_K_M*"</code></pre></div><blockquote><p>Some models use chat templates with rules that llama.cpp doesn&#8217;t fully support, and the server will reject every message when that happens. Check this before committing to a model, so you don&#8217;t spend time debugging something that was never going to work.</p></blockquote></li><li><p>Find the actual file path once the download finishes.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;22c3c724-fbac-42e1-9d31-ccf90638eb11&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">ls -lh ~/.cache/huggingface/hub/models--unsloth--gemma-4-e4b-it-GGUF/snapshots/*/</code></pre></div></li><li><p>Start the server. --jinja matters here, it's what turns on tool calling, and Codex needs that to work at all.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;32fc994f-eed6-4aca-9d5b-5401e094dc01&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">./llama-server -m &lt;paste the .gguf path here&gt; -c 32768 --jinja --port 8090</code></pre></div></li><li><p>Add this to your Codex config.toml</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;e979f5a2-6cf0-415b-aaf8-4b552b60545e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">[model_providers.llama_cpp]
name = "llama.cpp"
base_url = "http://localhost:8090/v1"
wire_api = "responses"</code></pre></div></li><li><p>Create ~/.codex/llamacpp.config.toml.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;9e9eb50e-66ab-4fdf-afd9-e332e132933b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">model_provider = "llama_cpp"
model = "gemma-4-E4B-it-Q4_K_M"</code></pre></div></li><li><p>Now start the codex</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;bc9f6f40-9177-4e41-bc2a-b18681477486&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">codex --profile llamacpp</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8kdH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8kdH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 424w, https://substackcdn.com/image/fetch/$s_!8kdH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 848w, https://substackcdn.com/image/fetch/$s_!8kdH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 1272w, https://substackcdn.com/image/fetch/$s_!8kdH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8kdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png" width="1928" height="602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:1928,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:413483,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e7b8351-b7bf-4f0a-80e4-6be312272cd2_1928x602.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_!8kdH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 424w, https://substackcdn.com/image/fetch/$s_!8kdH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 848w, https://substackcdn.com/image/fetch/$s_!8kdH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 1272w, https://substackcdn.com/image/fetch/$s_!8kdH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0990d503-3365-4257-aadd-6f6ddb6382ea_1928x602.png 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 aria-hidden="true" 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><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></li></ol><h2>3. Connect Custom Models in Codex through OpenRouter</h2><p>Everything so far runs on your own machine. You can also point Codex to a custom model from different provider.</p><p><a href="https://openrouter.ai/">OpenRouter</a> is one example, an inference provider that gives you access to models like GLM-5.2 through APIs.</p><ol><li><p>Add this to ~/.codex/config.toml</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;0da7b57a-4773-4e28-9c2e-2eaf7b0c078f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">[model_providers.openrouter]
name = "OpenRouter"
base_url = "https://openrouter.ai/api/v1"
env_key = "OPENROUTER_API_KEY"
wire_api = "responses"</code></pre></div></li><li><p>Then create ~/.codex/openrouter.config.toml.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;toml&quot;,&quot;nodeId&quot;:&quot;a31b3d38-2bd0-48c1-a6f1-8a98e7cbe178&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-toml">model_provider = "openrouter"
model = "z-ai/glm-5.2"</code></pre></div></li><li><p>Set your API key, then run Codex.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;d548b72a-1306-4e8d-a49b-0ab2fdebde1e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">export OPENROUTER_API_KEY="your_key_here"</code></pre></div></li><li><p>Run Codex with this profile.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;ec68a427-ade6-42e5-ad64-4499e679a242&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">codex --profile openrouter</code></pre></div></li><li><p>Check with /status, you should see openrouter listed as the model provider.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TLAf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TLAf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 424w, https://substackcdn.com/image/fetch/$s_!TLAf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 848w, https://substackcdn.com/image/fetch/$s_!TLAf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 1272w, https://substackcdn.com/image/fetch/$s_!TLAf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TLAf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png" width="1096" height="394" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:188308,&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://www.devshorts.in/i/205456838?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.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_!TLAf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 424w, https://substackcdn.com/image/fetch/$s_!TLAf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 848w, https://substackcdn.com/image/fetch/$s_!TLAf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 1272w, https://substackcdn.com/image/fetch/$s_!TLAf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa59c7c47-cdac-4e2f-9ff1-1ef9a22b264d_1096x394.png 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 aria-hidden="true" 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><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></li></ol><h2>4. Four points to remember while integrating custom models</h2><ol><li><p>Only wire_api = "responses" works now. Codex removed wire_api = "chat" support in February 2026. If an old tutorial has you set wire_api = "chat", Codex won't start.</p></li><li><p>Three provider names are reserved: openai, ollama, and lmstudio. You can't use these under [model_providers.x], even for your own custom setup. Use something else, like lmstudio_local.</p></li><li><p>Always set your provider and API keys in ~/.codex/config.toml, your personal config file. Never in a .codex/config.toml sitting inside a project folder, Codex won&#8217;t use them from there anyway.</p></li><li><p>The model name has to match your server exactly, same spelling, same case. Check it with curl http://localhost:PORT/v1/models, and copy the name from there instead of typing it from memory.</p></li></ol><h2>Conclusion</h2><p>We covered how to connect local models and custom models to Codex.</p><p>Now you have the option of running local models in your coding agents. If you have enough system requirements, try different models for different tasks. Open source models hold up well for everyday coding work. Running them yourself means you control the cost, and your code stays right there on your machine.</p><p>Try Codex with custom models! Happy building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-run-custom-models-in-codex?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-run-custom-models-in-codex?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/how-to-run-custom-models-in-codex?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 114]- Fable 5 is back, OpenAI's GPT 5.6, Claude Sonnet 5, Nano Banana 2 Lite, Gemini Omni Flash, Lore -Open Source Version Control, Hosted X MCP, Nemotron-Labs-TwoTower and more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-114-fable-5-is-back</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-114-fable-5-is-back</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 03 Jul 2026 12:30:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/280af858-a249-4e29-a4ae-47e0c363af6f_2400x1350.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 114th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code">GLM 5.2 vs Opus 4.8 in Claude Code</a></p></li><li><p><a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Claude Certified Architect Foundations: The Complete Guide - Part 1</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide - Part 2</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://www.anthropic.com/news/redeploying-fable-5">Anthropic is restoring access to Claude Fable 5</a> after export controls were lifted. Fable 5 is now available globally across Claude Platform. Anthropic has also restored Mythos 5 access for some US organizations. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://openai.com/index/previewing-gpt-5-6-sol/">OpenAI has released the GPT 5.6 series</a>. It has three models. Sol as the flagship model, Terra for balanced everyday use, and Luna as the faster and cheaper model. Sol is positioned for harder coding workflows and complex agent tasks. Check OpenAI&#8217;s post for more details.</p></li><li><p><a href="https://www.anthropic.com/news/claude-sonnet-5">Anthropic has released Claude Sonnet 5</a>. It is built for longer agentic tasks, coding, and tool based workflows. Anthropic says it brings more Opus style agent behavior into the Sonnet tier at a lower price. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-omni-flash-nano-banana-2-lite">Google has released Nano Banana 2 Lite and Gemini Omni Flash</a>. Nano Banana 2 Lite is for fast and low cost image generation. Gemini Omni Flash is for video generation and editing. Developers can use both models together to turn images into short videos. Check Google&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/EpicGames/lore">This week we are featuring Lore, an open source version control system</a>. It is built for large projects that mix code with large files, like games and entertainment projects. Lore supports lightweight workspaces, fast branching, and file downloads only when needed. Check the GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xLey!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xLey!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 424w, https://substackcdn.com/image/fetch/$s_!xLey!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 848w, https://substackcdn.com/image/fetch/$s_!xLey!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 1272w, https://substackcdn.com/image/fetch/$s_!xLey!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xLey!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png" width="1456" height="818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:818,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163753,&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://www.devshorts.in/i/204744563?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.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_!xLey!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 424w, https://substackcdn.com/image/fetch/$s_!xLey!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 848w, https://substackcdn.com/image/fetch/$s_!xLey!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 1272w, https://substackcdn.com/image/fetch/$s_!xLey!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6283d3cd-345b-47b9-a9b9-c8ca68cf4ce4_1730x972.png 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 aria-hidden="true" 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><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><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://x.ai/news/grok-voice-agent-builder">xAI has launched Voice Agent Builder</a>. It is a no code platform for building voice agents on Grok Voice. It is used to build voice agents without setting up the full voice stack from scratch. It also supports telephony, knowledge retrieval, tools, guardrails, MCPs, and observability in one place. Check xAI&#8217;s post for more details.</p></li><li><p><a href="https://www.anthropic.com/news/claude-science-ai-workbench">Anthropic has launched Claude Science</a>. Its an AI workbench for scientists. Claude Science is an app that integrates the tools and packages researchers commonly use. It helps with literature review, data analysis, figures, and manuscripts. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://x.com/notebooklm/status/2071987494799716626">NotebookLM has added Short Video Overviews.</a> It turns uploaded sources into 60 second mobile videos. This gives users another way to understand the material, apart from text and audio overviews. Check NotebookLM&#8217;s post for more details.</p></li><li><p><a href="https://ai.meta.com/blog/brain2qwerty-brain-ai-human-communication">Meta has released Brain2Qwerty v2</a>. It turns brain activity into text using non invasive brain recordings. This means the system does not need surgery. Meta is also releasing the training code and the v1 dataset. Check Meta&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://devcommunity.x.com/t/announcing-the-hosted-x-mcp">XAI has announced Hosted X MCP</a>. It is a Streamable HTTP MCP server that lets MCP clients talk to the X API. Developers can use it with their own X account permissions. Check the X Developer Community post for more details.</p></li><li><p><a href="https://code.claude.com/docs/en/advisor">Claude Code has added an experimental advisor tool.</a> When Claude is unsure or gets stuck during a coding task, it can ask a stronger model for help. It can also use the advisor to review its approach before finishing the task. Check Claude Code docs for more details.</p></li><li><p><a href="https://x.com/NVIDIAAI/status/2072394812301480067">NVIDIA Research has released Nemotron-Labs-TwoTower</a>. It is a diffusion language model built from Nemotron 3 Nano 30B. One part keeps the context, and the other generates tokens in parallel. NVIDIA says this keeps most of the original model quality while making generation faster. Check NVIDIA&#8217;s post for more details.</p></li><li><p><a href="https://x.com/meituan_longcat/status/2071783587205308721">LongCat has released LongCat 2.0</a>, an open source model. It is built for agentic coding. It supports long context work and coding tasks across larger codebases. LongCat says the model was trained and served on Chinese chips. Check LongCat&#8217;s post for more details.</p></li><li><p><a href="https://github.com/google/copybara">Google has open sourced Copybara</a>. The tool is used by Google internally. It transforms and moves source code between repositories. This is useful when teams need to keep private and public repositories synced. Check the GitHub repo for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-114-fable-5-is-back?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-114-fable-5-is-back?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-114-fable-5-is-back?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[GLM 5.2 vs Opus 4.8 in Claude Code]]></title><description><![CDATA[Testing GLM 5.2 against Opus 4.8 inside Claude Code, on five real developer tasks.]]></description><link>https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code</link><guid isPermaLink="false">https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 24 Jun 2026 14:18:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3cffe2b6-69aa-4bc2-8707-d0db4b9c08a8_1792x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://x.com/Zai_org/status/2066938937344495629">GLM 5.2</a> dropped recently. And it's been all over my feed since.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!of57!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!of57!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 424w, https://substackcdn.com/image/fetch/$s_!of57!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 848w, https://substackcdn.com/image/fetch/$s_!of57!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 1272w, https://substackcdn.com/image/fetch/$s_!of57!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!of57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png" width="1182" height="680" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:680,&quot;width&quot;:1182,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135903,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.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_!of57!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 424w, https://substackcdn.com/image/fetch/$s_!of57!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 848w, https://substackcdn.com/image/fetch/$s_!of57!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.png 1272w, https://substackcdn.com/image/fetch/$s_!of57!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2edfd911-b971-456b-83d3-53aa73c3476f_1182x680.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 aria-hidden="true" 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><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><a href="https://x.com/simonw/status/2067834436172071342">Simon Willison</a> and <a href="https://x.com/PatrickToulme/status/2068134212587184442">Patrick Toulme</a> were also talking about it.</p><p>People are already comparing it directly with Opus 4.8 on quality. The interesting part is the price. GLM 5.2 is much cheaper per token, so I wanted to test how close it really gets.</p><p>I ran GLM 5.2 and Opus 4.8 inside Claude Code across five real developer tasks. I found some interesting insights in each test. Here is what this post covers.</p><ol><li><p>GLM 5.2 and Opus 4.8: An Overview</p></li><li><p>Setting up GLM 5.2 inside Claude Code</p></li><li><p>GLM 5.2 vs Opus 4.8 in Claude Code</p><ol><li><p>Test 1: One-shot UI build</p></li><li><p>Test 2: Debug a failing test</p></li><li><p>Test 3: Fixing a performance bottleneck</p></li><li><p>Test 4: Refactoring codebase</p></li><li><p>Test 5: A multi-step research task, with sub-agents</p></li></ol></li><li><p>Key Insights from Tests</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. GLM 5.2 and Opus 4.8: An Overview</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s7zc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s7zc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 424w, https://substackcdn.com/image/fetch/$s_!s7zc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 848w, https://substackcdn.com/image/fetch/$s_!s7zc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!s7zc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s7zc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png" width="1456" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:250628,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.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_!s7zc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 424w, https://substackcdn.com/image/fetch/$s_!s7zc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 848w, https://substackcdn.com/image/fetch/$s_!s7zc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!s7zc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F826242a6-dd14-4853-8093-9c03c2efd679_1716x1280.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 aria-hidden="true" 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><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>Knowing the difference, let&#8217;s do the real tests and see how both perform.</p><h2>2. Setting up GLM 5.2 inside Claude Code</h2><blockquote><p>Claude Code is a harness, and any custom model can be set up inside it. </p></blockquote><p>You can use GLM 5.2 from any inference provider. If you are using Z.ai, here is how to set it up in Claude Code. Get an <a href="https://z.ai/manage-apikey/apikey-list">API key from Z.ai's platform</a>. Then edit <code>~/.claude/settings.json</code> and add this. (Full docs <a href="https://docs.z.ai/devpack/tool/claude#manual-configuration">here</a>)</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;4c949c7f-eb25-4993-ba5d-090a59b1a4da&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "your_zai_api_key",
    "ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
    "API_TIMEOUT_MS": "3000000"
  }
}</code></pre></div><p>This gets GLM running inside Claude Code.  But by default it maps to GLM-4.7, not 5.2. To actually run GLM 5.2, with the full 1M context window, add this too.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;5bfcd62e-3194-447f-80be-3334aed231e1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
    "env": {
      "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "1000000",
      "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-5.2[1m]",
      "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-5.2[1m]",
      "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5.2[1m]"
    }
}</code></pre></div><p>A few things to note.</p><ul><li><p>The <code>[1m]</code> suffix enables the full 1M context. Without it, you get the default context window, not 1M.</p></li><li><p>GLM 5.2 uses 3x your quota during peak hours, 2x during off-peak.</p></li><li><p>Run <code>/status</code> in Claude Code to confirm which model you are on.</p></li></ul><p>This setup is for Z.ai. If you are using a different provider, the config will be different.</p><p>If you are using GLM model from Fireworks AI, they have their own way of integrating it, <a href="https://docs.fireworks.ai/ecosystem/fireconnect/claude-code">check their documentation</a>. Same goes for <a href="https://openrouter.ai/docs/cookbook/coding-agents/claude-code-integration">OpenRouter</a>, the steps are different, so follow what your provider docs say.</p><p>For Fireworks AI - GLM 5.2 integration, run below commands.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;778a1596-fff8-48b3-915b-21cf1dffee40&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">curl -fsSL https://raw.githubusercontent.com/fw-ai/fireconnect/main/install.sh | FIREWORKS_API_KEY="fw_xy&#8221;z bash

fireconnect claude on --api-key fw_xyz</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z37m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z37m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 424w, https://substackcdn.com/image/fetch/$s_!Z37m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 848w, https://substackcdn.com/image/fetch/$s_!Z37m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 1272w, https://substackcdn.com/image/fetch/$s_!Z37m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z37m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png" width="1456" height="331" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:331,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98684,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.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_!Z37m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 424w, https://substackcdn.com/image/fetch/$s_!Z37m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 848w, https://substackcdn.com/image/fetch/$s_!Z37m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 1272w, https://substackcdn.com/image/fetch/$s_!Z37m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F040a42cb-53f6-4b03-88c3-a33e07becafb_1776x404.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>3. GLM 5.2 vs Opus 4.8 in Claude Code</h2><p>Now let us get into the tests. I ran both models on the same tasks, same prompt, same codebase. </p><h2>Test-1: One-shot UI build</h2><p>The first test is a one-shot UI build. I gave the same prompt to both models to see what they build, without any follow-ups.</p><h4>Prompt Given:</h4><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;f8907c37-b8e8-4587-b6cf-6edcaac97d2b&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Build a Northern Lights tracker. Purely frontend, mock data is fine. 

It should show the best viewing locations for tonight, visibility forecast by hour, and a KP index indicator. When visibility is high, the interface should feel like it.

The design is the real test here. Auroras are one of the most visually stunning things on the planet. The UI should reflect that. Animations, atmospheric gradients, a dark sky feel. Not a weather app with a green badge. Something that actually makes you want to look up.

Use whatever stack and libraries make sense. Install what you need.

Build it end to end and verify it runs in the browser before stopping. No clarifying questions.</code></pre></div><p>Both built something impressive in one shot. </p><h4>What GLM 5.2 Built</h4><p>GLM built the visually stronger UI. Full-screen aurora waves, bold hero text, rich location cards. It feels alive as you scroll.</p><p>The only thing it needs is a small fix on the hero animation speed. The waves move too fast and the text gets buried. One prompt, and it is right there with Opus.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;4ca3566a-eafa-4f52-9f00-7824fc4ed69a&quot;,&quot;duration&quot;:null}"></div><h4>What Opus 4.8 Built</h4><p>Opus built a clean, functional dashboard. Structured layout, clear hierarchy, each section separated and easy to scan. Complete UI, up and running in one shot.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;5c475110-1ef6-4927-a60c-283ae353e91c&quot;,&quot;duration&quot;:null}"></div><blockquote><h4>What I noticed:</h4><ul><li><p>Both delivered impressive UIs in one shot. </p></li><li><p>Opus was clean and complete with no issues out of the box. </p></li><li><p>GLM was visually stronger but needed one small fix on the animation speed.</p></li><li><p>One thing worth noting. GLM does not support image input, so it could not verify the UI in the browser the way Opus did. Opus used the browser tool to check its own output. GLM had to skip that step.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yFXm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yFXm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 424w, https://substackcdn.com/image/fetch/$s_!yFXm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 848w, https://substackcdn.com/image/fetch/$s_!yFXm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 1272w, https://substackcdn.com/image/fetch/$s_!yFXm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yFXm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png" width="1456" height="393" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:393,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161223,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74c59108-d4ec-4b5f-8f84-e28f2d9f6991_1670x476.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!yFXm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 424w, https://substackcdn.com/image/fetch/$s_!yFXm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 848w, https://substackcdn.com/image/fetch/$s_!yFXm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 1272w, https://substackcdn.com/image/fetch/$s_!yFXm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2572efea-35f0-4666-8aa6-ec84d787a00f_1670x451.png 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 aria-hidden="true" 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><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></li><li><p>On the numbers, GLM used more tokens and took a bit longer than Opus. But the token cost is lower, so the final bill was still significantly cheaper. Almost equal quality to Opus, at a fraction of the price.</p></li></ul></blockquote><p>Now, here is the remaining details</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAlN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAlN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 424w, https://substackcdn.com/image/fetch/$s_!zAlN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 848w, https://substackcdn.com/image/fetch/$s_!zAlN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 1272w, https://substackcdn.com/image/fetch/$s_!zAlN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAlN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png" width="1456" height="979" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:979,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:175659,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.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_!zAlN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 424w, https://substackcdn.com/image/fetch/$s_!zAlN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 848w, https://substackcdn.com/image/fetch/$s_!zAlN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 1272w, https://substackcdn.com/image/fetch/$s_!zAlN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8114d82-fa78-4570-a4ba-604ce9e56620_1476x992.png 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 aria-hidden="true" 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><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><h2>Test 2: Debug a failing Test</h2><p><code>npm test</code> was failing. That was the whole prompt. No hints, no file names, no description of what is wrong.</p><h4>Prompt Given:</h4><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;1ab8a840-9cff-4230-87a1-7196093b0cd2&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">npm test is failing. fix it</code></pre></div><p>The real question here is whether the model can identify the root cause correctly. One failure was a real bug in the implementation. The other was a wrong assertion in the test. Each needed a different kind of fix.</p><h4>What Opus 4.8 did</h4><p>Opus went straight to it. Ran the tests, read the files, fixed both issues correctly. Knew exactly where to look and what to change. Clean and done.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RVHV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RVHV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 424w, https://substackcdn.com/image/fetch/$s_!RVHV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 848w, https://substackcdn.com/image/fetch/$s_!RVHV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 1272w, https://substackcdn.com/image/fetch/$s_!RVHV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RVHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png" width="1049" height="198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:198,&quot;width&quot;:1049,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42023,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052499fd-f3a3-4853-b59c-174b36d762ab_1400x198.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_!RVHV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 424w, https://substackcdn.com/image/fetch/$s_!RVHV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 848w, https://substackcdn.com/image/fetch/$s_!RVHV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 1272w, https://substackcdn.com/image/fetch/$s_!RVHV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7dbef6f4-b6c8-44fb-9854-2df506419586_1049x198.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>What GLM 5.2 did</h4><p>GLM took a more thorough approach. It read more context before acting and ran a shell command to verify the fix before wrapping up. Same correct fixes as Opus, but more steps and time to get there.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-9aF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-9aF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 424w, https://substackcdn.com/image/fetch/$s_!-9aF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 848w, https://substackcdn.com/image/fetch/$s_!-9aF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 1272w, https://substackcdn.com/image/fetch/$s_!-9aF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-9aF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png" width="1476" height="172" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:172,&quot;width&quot;:1476,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39213,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbca34bd2-e006-4af9-ba61-62a021afdefe_1476x176.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_!-9aF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 424w, https://substackcdn.com/image/fetch/$s_!-9aF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 848w, https://substackcdn.com/image/fetch/$s_!-9aF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 1272w, https://substackcdn.com/image/fetch/$s_!-9aF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa32f7b5f-8e11-4d9d-b685-18a7df5c6c85_1476x172.png 1456w" sizes="100vw" loading="lazy"></picture><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_!GCrW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GCrW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 424w, https://substackcdn.com/image/fetch/$s_!GCrW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 848w, https://substackcdn.com/image/fetch/$s_!GCrW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 1272w, https://substackcdn.com/image/fetch/$s_!GCrW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GCrW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png" width="1160" height="952" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:952,&quot;width&quot;:1160,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:152562,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.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_!GCrW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 424w, https://substackcdn.com/image/fetch/$s_!GCrW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 848w, https://substackcdn.com/image/fetch/$s_!GCrW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 1272w, https://substackcdn.com/image/fetch/$s_!GCrW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe0b2a33d-2021-4094-b63f-39bf5768a30a_1160x952.png 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 aria-hidden="true" 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><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><blockquote><h4>What I noticed:</h4><ul><li><p>Opus got there faster and with fewer tokens, clean and direct.</p></li><li><p>GLM found failing tests and fixed them correctly, same as Opus. Same diagnosis, same fixes.</p></li><li><p>GLM read significantly more context, 35.5k input tokens vs Opus 6.5k. It took a more thorough path before committing the fix.</p></li></ul></blockquote><h2>Test 3: Fixing performance bottleneck</h2><p>I gave both models a user complaint and a file path. </p><h4>Prompt Given:</h4><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;22ae21c1-a0cc-4d40-9fff-fec8ba32594f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Users are reporting that the issues list loads slowly when a project has a lot of data. 

The backend entry point is src/services/issueService.ts. 
Find the bottleneck and fix it.</code></pre></div><p>The actual issue was a query doing redundant work for every row it processed, with no indexes to speed it up. Fine on small data, but slow on large ones. Exactly what users were reporting.</p><p>Both models proposed the same two-layer fix. Rewrite the query, add indexes.</p><p>The difference was execution.</p><h4>What GLM 5.2 did</h4><p>GLM diagnosed it correctly and went deep into benchmarking. It even caught that its own rewrite was slower than expected and re-evaluated. But the investigation loops kept going, so I stepped in and asked it to wrap up. It gave the right fix, but burnt more tokens and time.</p><p>Here is where it caught its own mistake.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0S-5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0S-5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 424w, https://substackcdn.com/image/fetch/$s_!0S-5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 848w, https://substackcdn.com/image/fetch/$s_!0S-5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 1272w, https://substackcdn.com/image/fetch/$s_!0S-5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0S-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png" width="1456" height="141" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:141,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46598,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.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_!0S-5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 424w, https://substackcdn.com/image/fetch/$s_!0S-5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 848w, https://substackcdn.com/image/fetch/$s_!0S-5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 1272w, https://substackcdn.com/image/fetch/$s_!0S-5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2b6d62b-aafb-487c-8aac-9c8b476ae80d_1656x160.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>What Opus 4.8 did</h4><p>Opus read the files, wrote the fix, verified it, and wrapped up in 5 minutes. Clean, done.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UZdZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UZdZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 424w, https://substackcdn.com/image/fetch/$s_!UZdZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 848w, https://substackcdn.com/image/fetch/$s_!UZdZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 1272w, https://substackcdn.com/image/fetch/$s_!UZdZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UZdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png" width="1332" height="836" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:836,&quot;width&quot;:1332,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:143623,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.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_!UZdZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 424w, https://substackcdn.com/image/fetch/$s_!UZdZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 848w, https://substackcdn.com/image/fetch/$s_!UZdZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 1272w, https://substackcdn.com/image/fetch/$s_!UZdZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c01a1a5-6213-495b-9350-55abeea4c428_1332x836.png 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 aria-hidden="true" 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><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><blockquote><h4>What I noticed:</h4><ul><li><p>Both models proposed the same fix. Rewrite the query and add indexes. Same diagnosis, same solution.</p></li><li><p>GLM went deeper than needed. It caught that its own rewrite was slower than expected and kept re-evaluating. Good reasoning, but the investigation loops ran too long. I had to step in and ask it to wrap up. Finally it gave the right answer. </p></li><li><p>Opus read the files, wrote the fix, verified it with the sqlite3 CLI, and wrapped up in under 5 minutes.</p></li><li><p>GLM burned significantly more tokens to reach the same conclusion.</p></li></ul></blockquote><h2>Test 4: Refactoring Codebase</h2><p>This test is about giving both models a messy file and seeing how they clean it up, without telling them what is wrong.</p><h4>Prompt given:</h4><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;13922002-3873-4784-b189-8ef66ba87be1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">file issueService.ts is getting messy. Clean it up.</code></pre></div><p>Both models read the file, identified the same problems and refactored the same way.</p><p>The difference was execution speed.</p><h4>What Opus 4.8 did</h4><p>Opus read the file, made the changes, ran the compiler to verify, and wrapped up in 3 minutes 32 seconds. Clean and done.</p><h4>What GLM 5.2 did</h4><p>GLM also cleaned in the same way. But it took more steps and time to get there.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K4un!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K4un!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 424w, https://substackcdn.com/image/fetch/$s_!K4un!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 848w, https://substackcdn.com/image/fetch/$s_!K4un!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 1272w, https://substackcdn.com/image/fetch/$s_!K4un!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K4un!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png" width="1194" height="830" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:830,&quot;width&quot;:1194,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140141,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.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_!K4un!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 424w, https://substackcdn.com/image/fetch/$s_!K4un!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 848w, https://substackcdn.com/image/fetch/$s_!K4un!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 1272w, https://substackcdn.com/image/fetch/$s_!K4un!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b4262a7-52ec-44cd-acda-cef6ea203703_1194x830.png 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 aria-hidden="true" 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><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><blockquote><h4>What I noticed</h4><ul><li><p>GLM 5.2 reasoning is as high as Opus 4.8. Just like every other test, it consumed more token and time. </p></li><li><p>Opus flagged two edge cases it changed that were not part of the original request and asked if you want to keep them. That kind of communication is useful in a real codebase.</p></li></ul></blockquote><h2>Test 5: A multi-step research task, with sub-agents</h2><p>Both models performed really well on this research task.</p><h4>Prompt given:</h4><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;d46ec339-088b-4248-80c2-9525bf5cf160&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Research the latest agentic frameworks that support multi-agent orchestration.

Find:
- Which ones are actively maintained
- What the developer community thinks of each one
- How they compare on ease of use, flexibility, and production readiness

Give me a comparison table and a recommendation on which one to start with.</code></pre></div><h4>What Opus 4.8 did</h4><p>Opus ran 46 web searches, used sub-agents, and came back with a structured comparison table, community sentiment per framework, version numbers, enterprise users, and a clear recommendation with reasoning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HcsA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HcsA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 424w, https://substackcdn.com/image/fetch/$s_!HcsA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 848w, https://substackcdn.com/image/fetch/$s_!HcsA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 1272w, https://substackcdn.com/image/fetch/$s_!HcsA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HcsA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png" width="1456" height="852" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:322126,&quot;alt&quot;:&quot;&quot;,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49d7117a-cd16-408e-a02e-807673a979d6_1850x1124.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!HcsA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 424w, https://substackcdn.com/image/fetch/$s_!HcsA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 848w, https://substackcdn.com/image/fetch/$s_!HcsA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 1272w, https://substackcdn.com/image/fetch/$s_!HcsA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedd0886d-3981-44f1-9f8e-3e82284a2744_1850x1083.png 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 aria-hidden="true" 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><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><h4>What GLM 5.2 did</h4><p>GLM went deeper than Opus. It used more iterations, more tool calls, more web searches, and spawned more sub agents. It consumed significantly more tokens, </p><blockquote><p>But the final result was at Opus level.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VOq6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VOq6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 424w, https://substackcdn.com/image/fetch/$s_!VOq6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 848w, https://substackcdn.com/image/fetch/$s_!VOq6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 1272w, https://substackcdn.com/image/fetch/$s_!VOq6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VOq6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png" width="1456" height="1113" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1113,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331913,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.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_!VOq6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 424w, https://substackcdn.com/image/fetch/$s_!VOq6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 848w, https://substackcdn.com/image/fetch/$s_!VOq6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 1272w, https://substackcdn.com/image/fetch/$s_!VOq6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b050d-5cb2-446d-b9eb-5f8428dd8be3_1552x1186.png 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 aria-hidden="true" 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><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_!uBYy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uBYy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 424w, https://substackcdn.com/image/fetch/$s_!uBYy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 848w, https://substackcdn.com/image/fetch/$s_!uBYy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 1272w, https://substackcdn.com/image/fetch/$s_!uBYy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uBYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png" width="1328" height="918" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d410953f-d36c-41e0-b989-673d4e358008_1328x918.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:918,&quot;width&quot;:1328,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164151,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.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_!uBYy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 424w, https://substackcdn.com/image/fetch/$s_!uBYy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 848w, https://substackcdn.com/image/fetch/$s_!uBYy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 1272w, https://substackcdn.com/image/fetch/$s_!uBYy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd410953f-d36c-41e0-b989-673d4e358008_1328x918.png 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 aria-hidden="true" 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><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><blockquote><h4>What I noticed</h4><ul><li><p>Both reached the same findings, same reasoning, same recommendation.</p></li><li><p>Opus stayed focused and got there efficiently. GLM went wider but arrived at the same place.</p></li><li><p>The cost difference comes down to how each model works, not the quality of the output.</p></li><li><p>For deep research tasks, GLM&#8217;s cheaper token cost is an advantage. It can afford to go wider without the bill getting out of hand.</p></li></ul></blockquote><h2>4. Key Insights from Tests</h2><p>GLM 5.2 is genuinely good. The reasoning is there. The quality is there. In most tests it reached the same answer as Opus. It is really great to see an open weight model performing at this level, matching Opus on quality. </p><p>But it consumes more token, and takes more time for many tasks. It goes wider and deeper than needed. In Test 3, it went so deep into benchmarking its own fix that it took longer than expected.</p><p>Opus, just like always more focused. It builds efficiently and moves on.</p><p>Across five tests, here is how they compare overall.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ul-f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ul-f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 424w, https://substackcdn.com/image/fetch/$s_!ul-f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 848w, https://substackcdn.com/image/fetch/$s_!ul-f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 1272w, https://substackcdn.com/image/fetch/$s_!ul-f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ul-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png" width="1456" height="632" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:632,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:228585,&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://www.devshorts.in/i/202820800?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.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_!ul-f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 424w, https://substackcdn.com/image/fetch/$s_!ul-f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 848w, https://substackcdn.com/image/fetch/$s_!ul-f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 1272w, https://substackcdn.com/image/fetch/$s_!ul-f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a74163e-5516-4535-bc3f-1b8f0cf308a9_2120x920.png 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 aria-hidden="true" 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><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>These results are based on my own tests, not any official claims or vendor comparisons. Your results may vary depending on the task and provider.</p><blockquote><p>One thing worth noting. Every test here was run on high effort. At that level, GLM matched Opus consistently. Whether it holds up the same way on medium effort is still untested. </p></blockquote><p>GLM 5.2 is closer to Opus 4.8 than most people think. And significantly cheaper.</p><p>I hope this blog gives you a clear picture of where GLM 5.2 stands and whether it is worth adding to your workflow. If you are already on a Claude subscription, setting up GLM alongside it takes five minutes. Start with one task and see how it feels.</p><p>Happy building.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/glm-52-vs-opus-48-in-claude-code?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 113]- GLM 5.2, Kimi-K2.7-Code, SpaceX acquires Cursor, Anthropic blocks Fable and Mythos access, Vercel’s Eve-Agent Framework, OpenRouter's Fusion,Cursor's Origin,Zed's DeltaDB & more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 19 Jun 2026 12:30:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8031e392-dce2-448e-a71b-fcc61d2c1e4f_4896x3264.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 113th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Claude Certified Architect Foundations: The Complete Guide - Part 1</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide - Part 2</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://x.com/Zai_org/status/2065704919299235870">Z.AI has released GLM 5.2, its new open weight coding model</a>. It is built for long coding tasks and supports 1M context. It has two thinking effort levels, High and Max. For coding, Z.AI recommends Max for better reasoning. Check Z.AI&#8217;s post for more details.</p></li><li><p><a href="https://x.com/Kimi_Moonshot/status/2065377579130142937">Moonshot AI has released Kimi K2.7 Code</a>. It improves coding and agent performance compared to K2.6. It also uses fewer reasoning tokens, which means less overthinking during coding tasks. The model is available through Kimi API and Kimi Code. Check Kimi&#8217;s post for more details.</p></li><li><p><a href="https://x.com/SpaceX/status/2066873915717136548">SpaceX has decided to acquire Cursor</a>. The goal is to build more useful AI models. A new model is already being trained, and SpaceX says it will be available in Cursor and Grok Build soon. Check SpaceX&#8217;s post for more details.</p></li><li><p><a href="https://www.cartesia.ai/launch">Cartesia has launched Sonic 3.5 and Ink 2 for voice AI</a>. Sonic 3.5 is for text to speech, and Ink 2 is for speech to text. Both are built for real time voice agent use cases. Sonic 3.5 also supports more than 40 languages. Check Cartesia&#8217;s launch post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://vercel.com/eve">This week we are featuring Eve, Vercel&#8217;s framework for building AI agents</a>. Eve lets developers build agents using normal project files and folders. The agent&#8217;s instructions, tools, skills, and schedules are kept in standard folders, so it is easier to understand and update the agent. Check the Vercel Eve page for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4QwH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4QwH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 424w, https://substackcdn.com/image/fetch/$s_!4QwH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 848w, https://substackcdn.com/image/fetch/$s_!4QwH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 1272w, https://substackcdn.com/image/fetch/$s_!4QwH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4QwH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png" width="1456" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb922503-85f2-4267-8854-7586e12b1b48_1732x738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91398,&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://www.devshorts.in/i/202679867?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.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_!4QwH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 424w, https://substackcdn.com/image/fetch/$s_!4QwH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 848w, https://substackcdn.com/image/fetch/$s_!4QwH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 1272w, https://substackcdn.com/image/fetch/$s_!4QwH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb922503-85f2-4267-8854-7586e12b1b48_1732x738.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://www.anthropic.com/news/fable-mythos-access">Anthropic is suspending access to Fable 5 and Mythos 5 after a US government directive</a>. The directive blocks access for foreign nationals, and Anthropic says it is removing access for all users to comply. Other Anthropic models are not affected. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://www.midjourney.com/medical">Midjourney has launched Midjourney Medical</a>. This is not about image generation. They are working on Ultrasonic CT, a full body ultrasound scan using sound and water. Midjourney says the scan can take as little as 60 seconds. The first location is planned in San Francisco by the end of 2027. Check Midjourney Medical&#8217;s page for more details.</p></li><li><p>Many AI products and features get launched, changed, deprecated, or shut down over time. <a href="https://www.killedbyopenai.com/">Killed by OpenAI is a site that tracks OpenAI products, features, and APIs that were shut down, deprecated, or inactive</a>. It also shows the status and shutdown date for each item. Check the site if you want to track OpenAI product changes.</p></li><li><p><a href="https://help.openai.com/en/articles/20001052-file-storage-and-library-in-chatgpt">OpenAI has added Library for files in ChatGPT</a>. Files you upload or create in ChatGPT are saved in Library, so you can find and reuse them later. Library storage is separate from daily chat attachment limits. Check OpenAI&#8217;s help page for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://zed.dev/deltadb">Zed has opened early access for DeltaDB, a version control system built for agentic coding</a>. It records every small code change between commits, so developers can rewind to any point. It also links each code change with the agent conversation that created it. Check Zed&#8217;s DeltaDB page for more details.</p></li><li><p><a href="https://openrouter.ai/blog/announcements/fusion-beats-frontier">OpenRouter has introduced Fusion, a tool to combine outputs from multiple models</a>. It sends the prompt to a group of models and then uses another model to merge the useful responses. OpenRouter says this works better for deep research tasks than calling one model alone. Check OpenRouter&#8217;s post for more details.</p></li><li><p><a href="https://cursor.com/origin">Cursor has introduced Origin, a new code hosting and collaboration platform</a>. It is built for teams using AI agents to code faster. The waitlist is open now. Check Cursor Origin for more details.</p></li><li><p><a href="https://exa.ai/blog/exa-agent">Exa has launched Exa Agent, an API for web research</a>. It can search the web deeply and collect detailed information for a given task. For large tasks, it splits the work into smaller parts and runs subagents in parallel. Check Exa&#8217;s post for more details.</p></li><li><p><a href="https://github.com/tamnd/kage">Kage is a tool for saving websites as offline copies</a>. It renders the site and saves the final page with CSS, images, and fonts. It removes JavaScript, so the saved site can be opened later without scripts or network calls. Check the GitHub repo for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-113-glm-52-kimi-k27?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 112] - Claude Fable 5 and Mythos 5, Gemini 3.5 Live Translate, Kimi Work, DiffusionGemma, Apple's Core AI, Harness Engineering, Xiaomi's MiMoCode, Herdr - Agent Multiplexer and more! ]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 12 Jun 2026 12:30:46 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fbbc68b4-56f7-48d1-adc7-3de4eebcb075_3200x2133.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 112th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Claude Certified Architect Foundations: The Complete Guide - Part 1</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide - Part 2</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://www.anthropic.com/news/claude-fable-5-mythos-5">Anthropic has released Claude Fable 5 and Mythos 5</a>. Fable 5 brings the Mythos model family to general users, but with stricter safeguards. For safety, some sensitive requests are routed to Claude Opus 4.8 instead. Mythos 5 is for trusted users who need more flexibility in areas like cybersecurity. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-live-3-5-translate">Google has released Gemini 3.5 Live Translate</a>. It is a new audio model for live speech to speech translation. It can detect more than 70 languages and translate speech while keeping the speaker&#8217;s tone, pace, and pitch. Check Google&#8217;s post for more details.</p></li><li><p><a href="https://www.kimi.com/products/kimi-work">Kimi has launched Kimi Work</a>, a local desktop AI agent for everyday work. It can connect to your local files and use the browser for tasks. It can also run scheduled tasks and coordinate multiple agents for larger work. Check Kimi&#8217;s page for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/technology/developers-tools/diffusion-gemma-faster-text-generation/">Google has released DiffusionGemma</a>. It is an experimental open model built for faster text generation. It uses diffusion method, which creates blocks of content at once instead of going token by token. Google says it can run up to 4x faster on dedicated GPUs. Check Google&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/ogulcancelik/herdr">This week we are featuring Herdr</a>. It is a terminal based agent multiplexer for running multiple coding agents. You can organize agents in workspaces, tabs, and panes. It also shows whether agents are blocked, working, or done. It supports detach and reattach, so agents can keep running in the background. Check the GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6lVg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6lVg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 424w, https://substackcdn.com/image/fetch/$s_!6lVg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 848w, https://substackcdn.com/image/fetch/$s_!6lVg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 1272w, https://substackcdn.com/image/fetch/$s_!6lVg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6lVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png" width="1456" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:172594,&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://www.devshorts.in/i/201552441?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.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_!6lVg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 424w, https://substackcdn.com/image/fetch/$s_!6lVg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 848w, https://substackcdn.com/image/fetch/$s_!6lVg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 1272w, https://substackcdn.com/image/fetch/$s_!6lVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff9833d-6c87-4c81-8802-a45a5a08fe1a_1762x912.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p>Anthropic has changed how Claude Code billing works after June 15. If you are not sure whether to use Pro, Max, API credits, or Codex, this <a href="https://findskill.ai/blog/claude-code-pricing-after-june-15-decision-table/">pricing breakdown</a> is useful. It explains what is still covered by your Claude plan and what now needs separate credits. Check FindSkill&#8217;s post for more details.</p></li><li><p><a href="https://x.com/ChatGPTapp/status/2064018770839113769">ChatGPT can now generate charts directly inside the chat</a>. You can ask it to turn data or comparisons into simple visuals. The feature is available now on mobile and web. Check ChatGPT&#8217;s post for more details.</p></li><li><p>If you are trying to learn <a href="https://walkinglabs.github.io/learn-harness-engineering/en/">Agent Harness</a>, this course is a good starting point. It explains why AI coding agents fail and how harnesses make them more reliable. It covers rules, state management, testing, observability, and clean handoffs. Check the Harness Engineering course for more details.</p></li><li><p><a href="https://x.com/addyosmani/status/2064127981161959567">Loop Engineering is becoming popular for AI coding agents</a>. Instead of prompting agents step by step, the idea is to design loops that guide the work for them. These loops can use automations, worktrees, skills, connectors, subagents, and memory. Check Addy&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://github.com/XiaomiMiMo/MiMo-Code">Xiaomi has released MiMoCode, an open source AI coding agent</a> for the terminal. It can read and write code, run commands, manage Git, and keep project memory across sessions. It also supports multiple agents, subagents, MCP, and custom model providers. Check the GitHub repo for more details.</p></li><li><p><a href="https://cohere.com/blog/north-mini-code">Cohere has released North Mini Code</a>. It is Cohere&#8217;s first model built for developers. The open source MoE coding model has 30B total parameters, with 3B active. It is built for agentic software engineering. Check Cohere&#8217;s post for more details.</p></li><li><p>We all use AI tools and know they can consume a lot of tokens. <a href="https://github.com/chopratejas/headroom">Headroom is a context compression layer for AI agents</a>. It compresses tool outputs, logs, files, and RAG chunks before they reach the LLM. The repo says it can reduce tokens by 60 to 95 percent. Check the GitHub repo for more details.</p></li><li><p><a href="https://cognition.ai/blog/frontier-code">Cognition has introduced FrontierCode, a new benchmark for coding agents.</a> It checks whether AI generated code is good enough to merge into real production codebases. The benchmark looks beyond correctness and checks tests, scope, style, maintainability, and code quality. Check Cognition&#8217;s post for more details.</p></li><li><p><a href="https://developer.apple.com/documentation/coreai">Apple has introduced Core AI for developers</a>. It lets developers run AI models on Apple silicon. It also includes tools for model preparation, debugging, and inference performance. Check Apple&#8217;s documentation for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-112-claude-fable-5-and?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 111] - MAI Models, Hermes Desktop, Gemma 4, Qwen3.7 Plus, MiniMax M3, Claude Code's dynamic workflows, OpenAI models on AWS, Trackio-wandb alternative, Meta Business Agent and more! ]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-111-mai-models-hermes</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-111-mai-models-hermes</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 05 Jun 2026 13:02:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7f538340-b189-47c6-a55d-66c2eb01ae66_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 111th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Claude Certified Architect Foundations: The Complete Guide - Part 1</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5">Claude Certified Architect Foundations: The Complete Guide - Part 2</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li></ul><p>Join 8900+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://x.com/microsoftai/status/2061887500541366489">Microsoft AI has launched seven models</a>. The new family covers reasoning, code, image, transcription, and voice. Among them, <a href="https://microsoft.ai/wp-content/uploads/2026/06/main_20260602_2.pdf">MAI Thinking 1</a> is a reasoning model trained from scratch for STEM reasoning and coding tasks. Check Microsoft&#8217;s post for more details.</p></li><li><p><a href="https://hermes-agent.nousresearch.com/desktop">Hermes Agent now has a native desktop app</a>. It brings Hermes Agent to a simple desktop app, without needing the terminal. Users still get the same agent, memory, and skills. Check the Hermes Desktop page for download details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/technology/developers-tools/introducing-gemma-4-12B/">Google has released Gemma 4 12B</a>. It is an open weight model built for agentic workflows. It supports text, vision, and native audio inputs. It is laptop ready and can run locally with 16GB memory. Check Google&#8217;s post for more details.</p></li><li><p><a href="https://research.nvidia.com/labs/nemotron/Nemotron-3-Ultra/">NVIDIA has released Nemotron 3 Ultra</a>. It is their most capable Nemotron model so far. It supports up to 1M context and gives better control over reasoning during inference. NVIDIA is also releasing the model checkpoints, training datasets, and recipes. Check NVIDIA&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/0-AI-UG/cate">This week we are featuring Cate</a>. It is an infinite zoomable canvas for coding. You can keep your editor, terminal, browser, docs, and AI agents in one workspace. It helps you work on a project without switching between too many windows. Check the GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K47l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K47l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 424w, https://substackcdn.com/image/fetch/$s_!K47l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 848w, https://substackcdn.com/image/fetch/$s_!K47l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!K47l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K47l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png" width="1456" height="1059" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1059,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:915760,&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://www.devshorts.in/i/200415833?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.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_!K47l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 424w, https://substackcdn.com/image/fetch/$s_!K47l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 848w, https://substackcdn.com/image/fetch/$s_!K47l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!K47l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8377cf81-710b-4a62-b176-65db23a1994d_1652x1202.png 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 aria-hidden="true" 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><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><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://openai.com/index/codex-for-every-role-tool-workflow/">OpenAI is taking Codex beyond coding.</a> Sites are a new canvas where Codex can turn ideas into dashboards. They also shipped plugins for areas like sales, product design, analytics, and finance. Each plugin brings the needed apps, skills, instructions, and workflows together. Check OpenAI&#8217;s Codex post for more details.</p></li><li><p><a href="https://www.anthropic.com/news/claude-opus-4-8">Anthropic released Claude Opus 4.8 last week</a>. Whenever an Opus model gets released, expectations are usually high. Opus 4.8 brings better coding performance, effort control, cheaper Fast mode, and parallel subagents in Claude Code. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://about.fb.com/news/2026/06/meta-business-agent/">Meta has introduced Meta Business Agent</a>. It helps businesses handle customer conversations on WhatsApp, Messenger, and Instagram. It can answer questions, suggest products, and book appointments. It uses AI to give more personalized support to customers. Check Meta&#8217;s post for more details.</p></li><li><p><a href="https://x.com/eastdakota/status/2062212701414187452">Cloudflare cofounder Matthew Prince says bot traffic has now crossed human traffic on the internet</a>. He says this happened faster than he expected because agentic traffic is growing quickly. This shows how AI agents are starting to change web traffic. Check the post for more details.</p></li><li><p><a href="https://x.com/grok/status/2062225080843747351">xAI has rolled out Grok Imagine 1.5 Preview</a>. It is the latest image and video generation model from xAI. It supports up to 2K image output, 10 images per request, and videos up to 15 seconds. Check xAI&#8217;s Imagine API page for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code">Anthropic released dynamic workflows in Claude Code</a>. Claude can now write its own harness on the fly for complex tasks. Since dynamic workflows may use more tokens, it is better to use them only when needed. Check Anthropic&#8217;s blog for example prompts and more details.</p></li><li><p><a href="https://qwen.ai/blog?id=qwen3.7-plus">Qwen has released Qwen3.7 Plus</a>. It is their latest multimodal agentic model. It is built for agentic tasks like screen understanding, GUI tasks, and browser workflows. It can also navigate mobile apps and complete tasks. Check Qwen&#8217;s post for more details.</p></li><li><p><a href="https://www.minimax.io/blog/minimax-m3">MiniMax has released MiniMax M3</a>. It is an open weight model built for coding and agentic tasks. It supports image and video input, computer use, and 1M context. MiniMax says it is the first open weight model to bring all these together. Check MiniMax&#8217;s M3 post for more details.</p></li><li><p><a href="https://huggingface.co/nvidia/Cosmos3-Super-Text2Image">NVIDIA has released the open weight Cosmos3 model</a>. It is a collection of world models built for Physical AI. It can be used for robotics, autonomous vehicles, and smart spaces. Check the Hugging Face model card for more details.</p></li><li><p><a href="https://github.com/gradio-app/trackio">Hugging Face has open sourced Trackio</a>. It is a simple alternative to Weights and Biases. You can run it locally and track your experiments without setting up a hosted tool. Check the GitHub repo for more details.</p></li><li><p><a href="https://openai.com/index/openai-on-aws/">OpenAI models, Codex, and Managed Agents are now available on AWS.</a> AWS customers can use OpenAI models through Amazon Bedrock. This makes it easier for enterprises to use OpenAI inside their existing AWS setup. Check OpenAI&#8217;s post for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-111-mai-models-hermes?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-111-mai-models-hermes?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-111-mai-models-hermes?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Claude Certified Architect Foundations: The Complete Guide - Part 2]]></title><description><![CDATA[CCA-F exam prep - domains, code examples, and practice questions. All in one place.]]></description><link>https://www.devshorts.in/p/claude-certified-architect-foundations-fe5</link><guid isPermaLink="false">https://www.devshorts.in/p/claude-certified-architect-foundations-fe5</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 20 May 2026 14:37:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b4309678-ec02-456d-94a8-2e2e11a4c5b0_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We started this guide with <a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Part 1</a>. We covered agentic architecture, MCP integration, and Claude Code configuration. If you have not read part 1 yet, start there.</p><p>This part covers the remaining domains and how to register for the exam. Here is what we will cover.</p><ol><li><p>Prompt Engineering &amp; Structured Output</p></li><li><p>Context Management &amp; Reliability</p></li><li><p>How to register for the exam</p></li></ol><p>I have also added more practice questions to the <a href="https://github.com/devgotomarket/cca-prep">CCAF GitHub repo</a>. Six sets now, covering all domains.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>1. Prompt Engineering &amp; Structured Output</strong></h2><ul><li><p>Explicit Criteria</p></li><li><p>Few-shot Prompting</p></li><li><p>Structured Output</p></li><li><p>Validation-Retry Loops</p></li><li><p>Multi-pass Review</p></li><li><p>Schema Design</p></li></ul><h4><strong>Explicit Criteria</strong></h4><p>We have to give exact instructions to Claude instead of vague conditions. This is called <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct">explicit criteria</a>. Telling Claude like &#8220;be careful&#8221; or &#8220;report high security issues&#8221; does not work. Claude does not know what that means in practice. </p><p>Tell Claude exactly what to do and what not to do. When you are more specific, Claude makes fewer mistakes.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;5e504cea-e6ff-4980-8254-81bbe5009f51&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; vague, 
system_prompt = """
Review this code and flag any security issues.
Only report high confidence findings.
"""

# Good &#8212; categorical, Claude knows exactly what to flag
system_prompt = """
Review this code for security issues.
Flag a finding ONLY when:
- User input is passed directly to a SQL query without parameterization
- A secret or API key is hardcoded as a string literal
- User-supplied data is rendered in HTML without escaping

Do not flag theoretical risks or best practice suggestions.
"""</code></pre></div><h4><strong>Few-shot Prompting</strong></h4><p>Give Claude examples before asking it to do the task. This is called <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#use-examples-effectively">few-shot prompting</a>. Two to four examples is enough. More than that wastes tokens.</p><p>One thing to keep in mind. Few-shot prompting is probabilistic. Claude will follow the examples most of the time but not always. If you want something to run without fail, put it in a hook.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;a4be0fbb-d757-49f1-a7e2-ccbe69e60f32&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">system_prompt = """
Extract the customer name and order ID from the message below.

Example 1:
Message: "Hi, I am John and my order 1234 has not arrived."
Output: {"name": "John", "order_id": "1234"}

Example 2:
Message: "This is Sarah. Order #5678 is damaged."
Output: {"name": "Sarah", "order_id": "5678"}

Now extract from this message:
"""</code></pre></div><h4><strong>Structured Output</strong></h4><p>If you ask Claude to &#8220;output as JSON&#8221; in the prompt, it will try. But it is not guaranteed. <a href="https://platform.claude.com/docs/en/build-with-claude/structured-outputs">The reliable way is to use structured outputs.</a></p><p><strong><a href="https://platform.claude.com/docs/en/build-with-claude/structured-outputs#json-outputs">Method 1 &#8212; JSON outputs</a></strong></p><ul><li><p>Define the schema in <code>output_config</code> of the <code>client.messages.create()</code> call.</p></li><li><p>Claude returns the answer as JSON text in <code>response.content[0].text.</code></p></li><li><p>Parse it with <code>json.loads()</code> to get the data.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;52bacdb3-edf2-4c37-b406-6263f8a2b0b6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Extract order details from: John's order 1234 is missing"}],
    output_config={ # tells Claude to return structured JSON
        "format": {
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "customer_name": {"type": "string"},
                    "order_id": {"type": "string"},
                    "issue": {"type": "string"}
                },
                "required": ["customer_name", "order_id", "issue"]
            }
        }
    }
)
# Claude returns guaranteed JSON in content[0].text
result = json.loads(response.content[0].text)
# {"customer_name": "John", "order_id": "1234", "issue": "missing"}</code></pre></div><p><strong><a href="https://platform.claude.com/docs/en/build-with-claude/structured-outputs#strict-tool-use">Method 2 &#8212; Strict tool use</a></strong></p><p>This method is used to pass structured input to your tools with guaranteed schema compliance. </p><p>When Claude calls a tool in an agentic workflow, it passes parameters to that tool. Without strict mode, those parameters may not match your schema exactly. With <code>strict: True</code> on the tool definition, Claude is forced to pass parameters that exactly match your <code>input_schema</code>. The structured data Claude fills in is available in <code>block.input</code> on the tool call response.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ce56c18b-8959-4557-92f6-b066eeeae62d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">tools = [{
    "name": "extract_order",
    "description": "Extract order details",
    "strict": True,          # Claude must fill in all fields exactly as defined
    "input_schema": {
        "type": "object",
        "properties": {
            "customer_name": {"type": "string"},
            "order_id": {"type": "string"},
            "issue": {"type": "string"}
        },
        "required": ["customer_name", "order_id", "issue"]
    }
}]

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=tools,
    tool_choice={"type": "tool", "name": "extract_order"},  # force Claude to call this tool
    messages=[{"role": "user", "content": "John's order 1234 is missing"}]
)

for block in response.content:
    if block.type == "tool_use":
        print(block.input)   # structured data Claude filled in
        # {"customer_name": "John", "order_id": "1234", "issue": "missing"}</code></pre></div><h4><strong>Validation-Retry Loops</strong></h4><p>Structured output guarantees the structure. It does not guarantee the values are correct. This is where the validation-retry loop comes in. When Claude returns wrong values, you send the error back with specific details about what went wrong. Claude fixes it and tries again.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;8cc35597-9251-4e3e-a5de-ab1d1acf569c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">
MAX_RETRIES = 3
for attempt in range(MAX_RETRIES):
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        tools=tools,
        tool_choice={"type": "tool", "name": "extract_order"},
        messages=messages
    )

    for block in response.content:
        if block.type == "tool_use":
            result = block.input

            # Validate the result
            if not result.get("order_id").startswith("ORD-"):
                # Send specific error back &#8212; not a generic "try again"
                messages.append({"role": "assistant", "content": response.content})
                messages.append({"role": "user", "content": [{
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": "order_id must start with ORD-. You returned: " + result["order_id"]
                }]})
                break  # go to next attempt

            return result  # valid &#8212; done

raise RuntimeError("Failed to get valid output after max retries")</code></pre></div><blockquote><p>Always send specific error details. Tell Claude which field failed and what you expected. A generic "try again" does not give Claude enough context to fix the issue.</p></blockquote><p>Retry loops fix format errors. But if the data is simply not there in the source, retrying will not help. Claude cannot return something that does not exist.</p><h4>Multi-pass Review</h4><p>When Claude generates something and then reviews it in the same session, it already knows how it was built. It will miss its own mistakes. That is the problem with self-review.</p><p>Multi-pass review fixes this. You use a separate Claude session to review the output. The reviewer session has no memory of how the output was generated. It looks at the result with fresh eyes.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;3507f1cc-b960-4dc1-90c9-92725184b20c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Pass 1 &#8212; generate the code
generation_response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    messages=[{"role": "user", "content": "Write a FastAPI endpoint for processing refunds"}]
)
generated_code = generation_response.content[0].text

# Pass 2 &#8212; review in a separate session
review_response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": f"Review this code for security vulnerabilities:\n\n{generated_code}"}]
)</code></pre></div><blockquote><p>Never use the same session for generation and review. Always use a separate session.</p></blockquote><h4><strong>Schema Design</strong></h4><p>When you define a JSON schema for structured output, each field tells Claude what to extract and in what format. One of those fields can be an enum.  It is a fixed list of allowed values.  For example, if you have an <code>issue</code> field you can restrict it to <code>"missing"</code>, <code>"damaged"</code>, or <code>"wrong_item"</code>, you define it as an enum. Claude can only pick from that list.</p><p>Three things to know in Schema Design:</p><p><strong>Enums</strong> - always add <code>"other"</code> to the list. If Claude sees something that does not fit any of the defined values, it will pick the closest one instead of telling you it does not know. With <code>"other"</code> in the list, Claude has a safe option to fall back to.</p><p><strong>Nullable fields</strong> &#8212; if a field may not always be present, use <code>["string", "null"]</code> instead of <code>"string"</code>. Never mark optional fields as required. Claude will make up a value just to fill it.</p><p><strong>Flat structures</strong> &#8212; avoid deeply nested objects in your schema. Deep nesting makes it harder for Claude to fill the schema accurately. Keep your schema flat. If the data is complex, split it across multiple tool calls.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;2696e9ef-15b2-4181-9918-0d1d678c1c65&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">tools = [{
    "name": "extract_order",
    "description": """Extract order details. Issue must be one of: missing, damaged, wrong_item, other.
    Use other when the issue does not fit the above categories.""",
    "strict": True,  # Claude must follow the schema exactly
    "input_schema": {
        "type": "object",
        "additionalProperties": False,  # no extra fields allowed
        "properties": {
            "customer_name": {"type": "string"},
            "order_id": {"type": "string"},
            # issue must be a string 
            # issue can only be one of these four values &#8212; always include "other" in enum.
            "issue": {
                "type": "string",
                "enum": ["missing", "damaged", "wrong_item", "other"]
            },
            # fill this when issue is "other" &#8212; gives Claude somewhere to put unexpected values
            "issue_detail": {"type": "string"},
            # nullable &#8212; Claude returns null when delivery date is not mentioned in the source
            "delivery_date": {"type": ["string", "null"]}
        },
        # only these fields are required &#8212; issue_detail and delivery_date are optional
        "required": ["customer_name", "order_id", "issue"]
    }
}]</code></pre></div><h2><strong>2. Context Management &amp; Reliability</strong></h2><p>This domain carries 15% of your exam score. It is the smallest domain. But it matters. If you do not manage context well, your agents become unreliable in production.</p><p>Below are the key concepts.</p><ul><li><p>Lost-in-the-Middle Effect</p></li><li><p>Progressive Summarization</p></li><li><p>Tool Result Trimming</p></li><li><p>Escalation and Ambiguity</p></li><li><p>Error Propagation</p></li><li><p>Prompt Caching</p></li><li><p>Message Batches API</p></li></ul><h4><strong>Lost-in-the-Middle Effect</strong></h4><p>Claude can process up to 1 million tokens in a single request. But more context does not always mean better results.</p><p>When you pass a long input, Claude processes the beginning and end reliably. What is in the middle often gets missed. This is called the lost-in-the-middle effect.</p><p>Two things to know</p><ul><li><p>Place critical information at the beginning or end. Never place it in the middle.</p></li><li><p>For large context tasks, delegate to subagents. Each subagent starts fresh with only what it needs.</p></li></ul><h4><strong>Progressive Summarization</strong></h4><p>As an agent runs through multiple turns, the conversation history keeps growing. At some point it gets too large to pass in full on every API call.</p><p>Progressive summarization solves this. Instead of passing everything, you summarize the older turns and keep only the recent ones in full. The summary replaces the old turns in the messages array.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;6cca05bb-295d-45d9-bacb-6d619e80d9c3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># When history gets too long, summarize older turns
summary_response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": f"Summarize this conversation history into key facts only:\n\n{old_turns}"
    }]
)

summary = summary_response.content[0].text

# Replace old turns with the summary
messages = [
    {"role": "user", "content": f"Previous context: {summary}"},
    *recent_turns  # keep the last few turns in full
]</code></pre></div><blockquote><p>When we summarize, we may lose details. Dates, percentages, and numeric values often become vague. If you want anything to stay precise, extract it into a structured state object before summarizing.</p></blockquote><h4><strong>Tool Result Trimming</strong></h4><p>Every tool call adds output to the context. If a tool returns 40 fields but you only need 5, the remaining 35 are wasting tokens. Over multiple turns this adds up fast and fills your context with noise.</p><p>Trim tool results before appending them to the next API messages array. Always keep your context clean. Pass only what Claude needs. Learn more about <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/manage-tool-context">managing tool context here</a>.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;7683b261-c7df-448b-a9d3-d15ffeeb5962&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; full tool result, 40+ fields appended to messages
result = get_customer(customer_id="C-42")
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": block.id,
        "content": json.dumps(result)
    }]
})

# Good &#8212; trim before appending, only what Claude needs
result = get_customer(customer_id="C-42")
trimmed = {
    "id": result["id"],
    "name": result["name"],
    "status": result["status"]
}
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": block.id,
        "content": json.dumps(trimmed)
    }]
})</code></pre></div><h4><strong>Escalation and Ambiguity</strong></h4><p>Not every task should be handled autonomously. Knowing when to escalate to a human is just as important as knowing how to complete a task.</p><p>Three valid reasons to escalate:</p><ul><li><p>When the user explicitly requests a human, escalate immediately. Do not attempt to investigate first.</p></li><li><p>When the agent does not have clear instructions for the situation, escalate. Do not guess.</p></li><li><p>When the agent cannot make meaningful progress, escalate.</p></li></ul><p>When a tool returns multiple matching results, ask the user for more details to narrow it down. Never pick one based on a guess.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;83d9c817-9acd-45c5-81d6-ab5240ba468e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Tool returns escalation signal
@mcp.tool()
def process_refund(order_id: str, amount: float) -&gt; dict:
    if amount &gt; 500:
        return {"requires_human": True, "reason": "Refund above $500 needs approval"}
    return {"success": True, "refund_id": "REF-001"}

# Agent loop checks for it
result = tool_map[block.name](**block.input)

if result.get("requires_human"):
    escalate_to_human(result)
    return</code></pre></div><p><strong>Two common mistakes to avoid.</strong></p><p>Do not escalate just because the user seems frustrated. Frustration does not mean the task needs human intervention. Acknowledge it, try to resolve it, and only escalate if the user explicitly asks for a human.</p><p>Do not use the agent&#8217;s own confidence score as an escalation signal. Models tend to be overconfident even when they are wrong. It is not reliable.</p><h4><strong>Error Propagation</strong></h4><p>In a multi-agent system, when a subagent fails, the coordinator needs to know what went wrong. If the subagent returns a generic error, the coordinator cannot decide what to do next.</p><p>Subagents should always return structured error context. Not a generic failure status.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;981c7293-d1f0-4bee-86c1-84fb99e40c54&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; coordinator has no idea what went wrong
return {"error": True}

# Good &#8212; coordinator knows what failed and what to do next
return {
    "error": True,
    "type": "tool_failure",
    "tool": "lookup_order",
    "reason": "Order not found in database",
    "retryable": False
}</code></pre></div><p>Never suppress errors silently. If a subagent fails without sending a signal, the coordinator assumes success and moves on. That produces wrong results in the next steps.</p><p>Not all errors are the same. A timeout can be retried. A missing record cannot be retried. Tell the coordinator what went wrong so it can decide what to do.</p><p>Also remember, subagents do not share context automatically. If one fails, the coordinator has to pass that information forward explicitly.</p><h4><strong>Prompt Caching</strong></h4><p>Every time you call the Claude API, you send the full context. You send system prompt, conversation history, tool definitions. Claude processes all of it from scratch on every single call. That adds up fast. It becomes more tokens with higher cost. </p><p><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching">With prompt caching we can reduce the cost</a>. You mark the static parts of your prompt with <code>cache_control</code>. Claude caches them on the first call. Instead of paying full price on every call, you pay only 10% for the tokens that are already cached.</p><p>There are two ways to enable it.</p><p><strong>Automatic caching</strong> - You  just add <code>cache_control</code> at the top level of your request. Claude scans your prompt from top to bottom and places the cache breakpoint at the end of the last block that can be cached, which is typically the end of your system prompt or tool definitions.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;642363a2-3c80-4472-a12b-d9561835ffa8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    cache_control={"type": "ephemeral"},  # automatic &#8212; Claude picks the breakpoint
    system="You are a customer support agent.................  ",
    messages=[{"role": "user", "content": user_query}]
)</code></pre></div><p><strong>Explicit caching</strong> - you mark specific content blocks with <code>cache_control</code> directly inside the <code>system</code> array. Claude caches everything before and up to that block. Use this when you want to control exactly where the cache ends.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ca941d48-468b-4ccf-bbbd-5b68c4310617&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {"type": "text", "text": "You are a customer support agent."},
        {
            "type": "text",
            "text": large_document,
            "cache_control": {"type": "ephemeral"}  # cache everything up to here
        }
    ],
    messages=[{"role": "user", "content": user_query}]
)
</code></pre></div><p>Always cache static content only. You can put system prompts, tool definitions, and large documents in cache. Never put dynamic content in cache.</p><p>Every API call checks whether the cached prefix matches exactly. Even a single character difference causes a cache miss and Claude reprocesses everything from scratch.</p><h4>TTL and pricing</h4><p>TTL stands for Time to Live. It is how long the cache stays active. By default the cache expires after 5 minutes. Every cache hit resets the timer. If your requests come in less frequently, you can extend the TTL to 1 hour at 2x the cache write price.</p><ul><li><p>The first call writes to cache and costs 1.25x normal input tokens.</p></li><li><p>Cache read costs 0.1x normal input tokens.</p></li><li><p>You can place a maximum of 4 <code>cache_control</code> breakpoints in a single request. </p></li><li><p>If you use the Batch API and prompt caching together, both discounts apply.</p></li><li><p>The first call costs more because it writes to cache. From the 4th read onwards you start saving money.</p></li></ul><p>To check if caching is working, look at the response usage.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;935f3e34-ee0c-4730-aa33-dc8fe10299b5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">print(response.usage.cache_read_input_tokens)     # tokens read from cache
print(response.usage.cache_creation_input_tokens)  # tokens written to cache</code></pre></div><p>If <code>cache_read_input_tokens</code> is greater than 0, the cache was hit.</p><h4><strong>Message Batches API</strong></h4><p>When you need to process a large number of API requests without needing an immediate response, use the <a href="https://platform.claude.com/docs/en/build-with-claude/batch-processing#message-batches-api">Message Batches API</a>. For example, processing thousands of customer feedback forms overnight, or doing bulk content generation.</p><p>You can submit up to 100,000 requests in one batch. Claude processes them asynchronously. Most batches finish within 1 hour, but they can run up to 24 hours. If they do not complete within 24 hours, they expire. </p><p>The cost is 50% off standard API pricing. The output quality is the same. Only the timing is different.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;909214b1-ed94-49a7-9916-22580bf1c7c5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import anthropic
import time

client = anthropic.Anthropic()

# Create a batch with multiple independent requests
batch = client.messages.batches.create(
    requests=[
        {
            # This custom id will be returned with the result, 
            # so we know this output is for feedback_001
            "custom_id": "feedback_001",
            "params": {
                "model": "claude-sonnet-4-6",
                "max_tokens": 500,
                "system": "You are a support analyst. Summarize customer feedback in 2 short bullet points.",
                "messages": [
                    {
                        "role": "user",
                        "content": "The app is useful, but the login takes too much time."
                    }]
            }},
        {
            # This custom id will be returned with the result
            # so we know this output is for feedback_002
            "custom_id": "feedback_002",
            "params": {
                "model": "claude-sonnet-4-6",
                "max_tokens": 500,
                "system": "You are a support analyst. Summarize customer feedback in 2 short bullet points.",
                "messages": [
                    {
                        "role": "user",
                        "content": "The dashboard is clean, but export to PDF is missing."
                    }]
            }}
    ])

print(f"Batch ID: {batch.id}")

# Wait until the batch completes
while True:
    current_batch = client.messages.batches.retrieve(batch.id)

    if current_batch.processing_status == "ended":
        break

    time.sleep(30)

# Read the results
for result in client.messages.batches.results(batch.id):
    if result.result.type == "succeeded":
        print(f"{result.custom_id}: {result.result.message.content[0].text}")

    elif result.result.type == "errored":
        print(f"Error in {result.custom_id}: {result.result.error}")

    elif result.result.type == "canceled":
        print(f"Canceled: {result.custom_id}")

    elif result.result.type == "expired":
        print(f"Expired: {result.custom_id}")</code></pre></div><p>Three things to know.</p><ul><li><p>Use <code>custom_id</code> to tie each result back to your input. Without it you cannot match results to requests.</p></li><li><p>You can combine the Batch API with prompt caching. Both discounts apply together, so if your requests share the same system prompt, use both for maximum savings.</p></li><li><p>Use the Batch API for async workloads only. If you need a real-time response, use the standard Messages API.</p></li></ul><h2><strong>3. How to Register for the exam</strong></h2><p>The exam is currently available to employees of companies in the Anthropic Partner Network. The Partner Network is free to join. Any company building with Claude qualifies for it.</p><h4><strong>Step 1 &#8212; Join the Partner Network</strong></h4><p>Your company needs to be part of the Anthropic Partner Network. If you are not in the partner network then <a href="https://partnerportal.anthropic.com/s/partner-registration">apply for Claude Partner Network</a>.</p><h4><strong>Step 2 &#8212; Request exam access</strong></h4><p>If you are already in the partner network, then <a href="https://partnerportal.anthropic.com/s/login/">login to the network</a> and take up the exam.</p><h4><strong>Step 3 &#8212; About exam</strong></h4><p>60 questions. 120 minutes. No notes, no AI tools, no external resources are allowed.</p><h4><strong>Free prep resources</strong></h4><p>Free resources are available on <a href="https://anthropic.skilljar.com">Anthropic Academy</a> and open to everyone. Start there regardless of whether you have exam access yet.</p><h4><strong>Certificate validity</strong></h4><p>The certificate is valid for 6 months. After that you need to recertify.</p><h2>Conclusion</h2><p>I hope this gave you a clear picture of what the exam covers. We went through all the domains across both parts. </p><p>I have also added 6 sets of practice questions to the <a href="https://github.com/devgotomarket/cca-prep">GitHub repo</a>. </p><p>These concepts are not just for the exam. Knowing them well will make you a better engineer when building with Claude.</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations-fe5?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations-fe5?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 110] - Google's AI Pointer, Access Codex from Phone, OpenClaw’s Peekaboo,TM's interactive models, Flue- Agent Harness,CodeBurn, Mirage, Claude Code's goal,Google's Agent Skills & more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 15 May 2026 13:16:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9f424bfc-6a7e-4685-8bcb-872b2b83049a_4288x2848.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 110th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Claude Certified Architect Foundations: The Complete Guide - Part 1</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li><li><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Coding with Parallel Agents and Git worktrees</a></p></li></ul><p>Join 8800+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://x.com/googledeepmind/status/2054246119635300451">Google DeepMind has introduced AI Pointer</a>. You can point to something on your screen and ask Gemini to act on it. It understands what you are pointing at, so you don&#8217;t need long prompts. It also supports voice, text, and images. Check Google DeepMind&#8217;s post for more details.</p></li><li><p><a href="https://openai.com/index/work-with-codex-from-anywhere/">OpenAI has brought Codex to the ChatGPT mobile app</a>. You can track tasks, review outputs, and guide Codex from your phone. Your files and credentials stay on the machine where Codex is running, while updates come to your phone in real time. Check OpenAI&#8217;s post for more details.</p></li><li><p><a href="https://github.com/openclaw/Peekaboo">OpenClaw&#8217;s Peekaboo is worth checking if you are exploring screen based agents</a>. It helps AI agents capture screens, understand what is on them, and automate GUI actions. It works as both a CLI and MCP server for Codex, Claude Code, and Cursor. Check the Peekaboo GitHub repo for more details.</p></li><li><p><a href="https://thinkingmachines.ai/blog/interaction-models/">Thinking Machines Lab has introduced interaction models.</a> The idea is to make AI conversations feel more natural and live. The interesting part is the architecture. One model stays responsive during the live conversation, while a background model handles reasoning, search, and tool use. Check Thinking Machines Lab&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/withastro/flue">This week we are featuring Flue</a>. It is an agent harness framework for building headless and programmable agents. Think of it like Claude Code, but without the terminal UI or human operator. It supports sandboxes, sessions, skills, MCP tools, and deployment across runtimes. Check the Flue GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vbiO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vbiO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 424w, https://substackcdn.com/image/fetch/$s_!vbiO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 848w, https://substackcdn.com/image/fetch/$s_!vbiO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 1272w, https://substackcdn.com/image/fetch/$s_!vbiO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vbiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png" width="1456" height="513" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:513,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182512,&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://www.devshorts.in/i/197795200?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.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_!vbiO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 424w, https://substackcdn.com/image/fetch/$s_!vbiO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 848w, https://substackcdn.com/image/fetch/$s_!vbiO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 1272w, https://substackcdn.com/image/fetch/$s_!vbiO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee89d34-952b-4a86-8bfb-804bafb52ae9_1724x608.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://code.claude.com/docs/en/goal">Claude Code now supports /goal</a>. You can give a task with a clear goal. Claude will keep working until that goal is done. A small evaluator model checks the progress after each turn. Check Claude Code docs for more details.</p></li><li><p><a href="https://claude.com/blog/claude-platform-on-aws">Claude Platform is now available directly on AWS</a>. AWS customers can now use more Claude capabilities, beyond Bedrock models. It includes Claude Managed Agents, code execution, web search, Skills, MCP, and more. Check Claude&#8217;s post for more details.</p></li><li><p><a href="https://openai.com/daybreak/">OpenAI has introduced Daybreak for cybersecurity</a>. It brings GPT 5.5 and Codex Security into security workflows. It helps teams review code, find risks, validate patches, and fix issues faster. The goal is to bring AI earlier into secure software development. Check OpenAI&#8217;s Daybreak page for details.</p></li><li><p><a href="https://x.com/trq212/status/2052809885763747935">I came across Thariq&#8217;s post on using HTML instead of Markdown for agent outputs</a>. Markdown works well for simple notes, but large outputs can become hard to read. HTML can show the same content with better visuals and richer information. His collection has <a href="https://thariqs.github.io/html-effectiveness/">20 HTML examples</a> generated by agents. Check the post and collection for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://github.com/google/skills">Google has released Agent Skills for Google products</a>. It includes skills for BigQuery, Cloud Run, Firebase, GKE, and more. It also covers Google Cloud onboarding, authentication, and network observability. Check the Google Skills GitHub repo for more details.</p></li><li><p><a href="https://github.com/getagentseal/codeburn">If you are using AI coding agents and want to know where your tokens are going, check CodeBurn</a>. It shows usage across Claude Code, Codex, and Cursor. It also breaks usage down by task, tool, model, and project. You also get an interactive terminal dashboard for cost visibility. Check the CodeBurn GitHub repo for more details.</p></li><li><p><a href="https://x.ai/news/grok-build-cli">xAI has released Grok Build.</a> It is a coding agent that runs from the terminal. It comes with familiar coding agent features like plans, skills, plugins, hooks, and parallel subagents. Check xAI&#8217;s Grok Build page for more details.</p></li><li><p><a href="https://claude.com/blog/agent-view-in-claude-code">Claude Code now has Agent View</a>. It helps you manage many Claude Code sessions from one place. You can see which agents need input, which are still working, and which are done. It is useful if you run multiple coding agents in parallel. Check Claude&#8217;s blog for more details.</p></li><li><p><a href="https://github.com/strukto-ai/mirage">Mirage is a virtual filesystem for AI agents</a>. It gives agents one common way to access tools like S3, Google Drive, Slack, Gmail, and more. Agents can use simple file commands instead of separate APIs. Check the Mirage GitHub repo for more details.</p></li><li><p><a href="https://x.com/higgsfield_ai/status/2054989169446023181">Higgsfield has released Supercomputer.</a> It is an AI agent for creating ads, product shots, marketing content, and campaigns. You can describe what you want, and it picks the right model for the task and gets the work done. Check Higgsfield&#8217;s post for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-110-googles-ai-pointer?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 109] - Anthropic SpaceX Deal, GPT 5.5 Instant, Anthropic and Perplexity Finance Agents, Deepsec, SubQ-12M Context Model, How to Work and Compound with AI, PaperCopilot and much more! ]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-109-anthropic-spacex</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-109-anthropic-spacex</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 08 May 2026 12:46:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/47e89043-fa77-4779-b314-c7bc912096ee_7952x5304.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 109th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Claude Certified Architect Foundations: The Complete Guide - Part 1</a></p></li><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li><li><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Coding with Parallel Agents and Git worktrees</a></p></li></ul><p>Join 8800+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://www.anthropic.com/news/higher-limits-spacex">Anthropic has signed a compute deal with SpaceX</a>. This will increase Claude&#8217;s compute capacity. Because of this, Claude Code&#8217;s five hour limits are now doubled for paid tiers. Peak hour limit reductions are also removed. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://openai.com/index/gpt-5-5-instant/">OpenAI has released GPT 5.5 Instant as ChatGPT&#8217;s new default model</a>. It is also available in the API. OpenAI says it gives smarter, more accurate, and clearer answers based on your context. Check OpenAI&#8217;s announcement for more details.</p></li><li><p>We have already seen models with 1M context windows. But <a href="https://subq.ai/">SubQ has introduced a model built for 12M token reasoning</a>. It is designed to work across full repos and long context tasks. SubQ says it runs at one fifth the cost of leading LLMs. Check <a href="https://subq.ai/how-ssa-makes-long-context-practical">SubQ&#8217;s post</a> to know how this model works.</p></li><li><p>Claude and Perplexity are moving deeper into finance workflows. <a href="https://x.com/claudeai/status/2051679629488865498">Claude has introduced finance agent templates</a>. <a href="https://x.com/perplexity_ai/status/2051693893473935372">Perplexity has launched Perplexity Computer for Finance.</a> Both show how AI tools are moving from general chat to specific business work. Check their posts for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/vercel-labs/deepsec">This week we are featuring Deepsec</a>. It is an open source security harness from Vercel Labs. It uses coding agents to find vulnerabilities in your codebase. It can scan large repos, investigate issues, and generate findings with recommendations. Check the GitHub repo if you want to try agent based security scanning.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0qmf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0qmf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 424w, https://substackcdn.com/image/fetch/$s_!0qmf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 848w, https://substackcdn.com/image/fetch/$s_!0qmf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 1272w, https://substackcdn.com/image/fetch/$s_!0qmf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0qmf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png" width="1456" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:215136,&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://www.devshorts.in/i/196750222?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.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_!0qmf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 424w, https://substackcdn.com/image/fetch/$s_!0qmf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 848w, https://substackcdn.com/image/fetch/$s_!0qmf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 1272w, https://substackcdn.com/image/fetch/$s_!0qmf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8e3709fa-f871-4727-ac15-f2ecd0ca5966_1756x712.png 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 aria-hidden="true" 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><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><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://eugeneyan.com/writing/working-with-ai/">Eugene Yan has written a practical post on working better with AI</a>. He talks about giving better context, saving your preferences into config, and making output verification easier. Useful if you use AI for writing, coding, or daily work. Check Eugene&#8217;s post for more details.</p></li><li><p><a href="https://papercopilot.com/">Paper Copilot is a useful site for AI and ML papers</a>. It brings papers from different conferences into one place and makes them easier to explore. Useful if you want to track new research without jumping across many sites. Check Paper Copilot for more details.</p></li><li><p><a href="https://x.com/yudDIDit/status/2049888877129707759">Editframe has launched Agent Skills for video</a>. This skill helps coding agents create videos from simple prompts. You can use it with Claude Code, Cursor, or Codex. It can generate a working video or a full interactive GUI from your prompt. Check the Editframe post for more details.</p></li><li><p><a href="https://inworld.ai/blog/realtime-tts-2">Inworld has released Realtime TTS 2</a>. It is built for realtime voice conversations. It understands the full audio context, including tone, pacing, and emotional state. Check Inworld&#8217;s post for more details.</p></li><li><p><a href="https://spaitial.ai/blog/echo-2-release">SpAItial has released Echo 2 for 3D world generation</a>. It can take text or image input and create a 3D world that can be explored in real time. This can be useful for games, digital twins, architecture, and robotics simulation. Check SpAItial&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://openai.com/index/advancing-voice-intelligence-with-new-models-in-the-api">OpenAI has released three new audio models in the API</a>. GPT Realtime 2 brings GPT 5 class reasoning to voice apps. GPT Realtime Translate supports live speech translation, and GPT Realtime Whisper supports live transcription as someone speaks. Check OpenAI&#8217;s announcement for more details.</p></li><li><p>Last time we covered Claude Managed Agents. Now <a href="https://claude.com/blog/new-in-claude-managed-agents">Anthropic has added more features to Claude Managed Agents</a>. It includes dreaming, outcomes, webhooks, and multiagent orchestration. Dreaming reviews past work and improves memory over time. Outcomes checks whether the work meets the expected result. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://x.ai/news/grok-custom-voices">xAI has introduced Custom Voices and Voice Library for Grok</a>. Developers can create their own voice and use it in Grok&#8217;s TTS and Voice Agent APIs. Teams can also browse, preview, and manage voices from the xAI console. Check xAI&#8217;s announcement for more details.</p></li><li><p><a href="https://mimo.xiaomi.com/mimo-v2-5-pro/">Xiaomi has open sourced MiMo V2.5 Pro</a>. It is built for agentic coding, long horizon tasks, and large context work. Xiaomi says it can handle complex workflows with many tool calls and a 1M token context window. Check Xiaomi&#8217;s post for more details.</p></li><li><p><a href="https://claude.com/blog/claude-security-public-beta">Anthropic has released Claude Security for Claude Enterprise customers</a>. It scans code for vulnerabilities and uses Opus 4.7 to generate proposed fixes. It also supports scheduled scans, targeted scans, triage tracking, and exports for audit workflows. Check Claude&#8217;s announcement for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-109-anthropic-spacex?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-109-anthropic-spacex?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-109-anthropic-spacex?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Claude Certified Architect Foundations: The Complete Guide - Part 1]]></title><description><![CDATA[CCA-F exam prep - domains, code examples, and practice questions. All in one place.]]></description><link>https://www.devshorts.in/p/claude-certified-architect-foundations</link><guid isPermaLink="false">https://www.devshorts.in/p/claude-certified-architect-foundations</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Thu, 30 Apr 2026 12:31:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/646665a0-551a-4898-9fa2-0be0e6d7c542_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://anthropic.skilljar.com/claude-certified-architect-foundations-access-request">The Claude Certified Architect Foundations</a> exam was recently launched. It is Anthropic&#8217;s first official technical certification.</p><p>I have been building agentic systems with Claude for a long time. When I heard about the exam, I wanted to understand what it actually tests. </p><p>So I went through the entire exam guide, also took some mock tests to understand what they covered. </p><p>Below are the sections you need to understand to become a Claude Certified Architect.</p><ol><li><p>Agentic Architecture &amp; Orchestration</p></li><li><p>Tool Design &amp; MCP Integration</p></li><li><p>Claude Code Configuration </p></li><li><p>Prompt Engineering &amp; Structured Output</p></li><li><p>Context &amp; Reliability</p></li></ol><p>Each section is detailed enough to be its own blog. We will cover the first three in this part. The remaining sections along with how to register will be in Part 2.</p><p>I have also put together a <a href="https://github.com/devgotomarket/cca-prep">set of practice questions with answers</a> on GitHub. I will keep adding more as I come across them.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Agentic Architecture &amp; Orchestration</h2><p>This section carries 27% of your exam score. It covers Claude Agent SDK, the library you use to build production grade agents. Below are the key Agent SDK concepts, that turn a normal LLM into an agent.</p><ul><li><p>stop_reason</p></li><li><p>Conversation History</p></li><li><p>Loop Termination</p></li><li><p>Multi-Agent Systems</p></li><li><p>Task Decomposition</p></li><li><p>Hooks</p></li><li><p>Session Management</p></li></ul><p>A normal LLM call is simple. You send a message, Claude replies, done. An agent is different. It is multiple LLM calls chained together until the task is fully complete. It includes tool calling, getting results, and deciding what to do next.</p><p>Let us start with stop_reason. It is the core of every agent loop.</p><h3><strong>stop_reason</strong></h3><p>Every Claude API response has a field called stop_reason. It tells you why Claude stopped. This is what decides whether your loop continues or ends. stop_reason has multiple values. The three you need to know for the exam are,</p><p>If <code>stop_reason == "tool_use"</code> then it means Claude wants to call a tool. Then you execute the tool, append the result, and loop again.</p><p>If <code>stop_reason == "end_turn"</code> then Claude is done. We can return the response to the user. Loop ends.</p><p>If <code>stop_reason == "max_tokens"</code> then the response got cut off. This happens when Claude hits the <code>max_tokens</code> limit you set in the API call. </p><p>If the response genuinely needs more tokens, increase <code>max_tokens</code>. If the response is too verbose, then restructure your prompt to produce a shorter output. Never return a cut-off response as it is incomplete.</p><p>Here is the stop_reason with all three options, explained in code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;f285f3e5-4407-4f0a-959b-1fe7feff7ac4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import anthropic
import json

client = anthropic.Anthropic()

class Agent:
    def __init__(self, tools):
        self.tools = tools

    def run(self, task: str) -&gt; str:
        # Every conversation starts with the user task
        messages = [{"role": "user", "content": task}]

        while True:
            # Claude does not remember previous call, 
            # So we pass the full conversation history every time
            response = client.messages.create(
                model="claude-sonnet-4-6",
                max_tokens=1024,
                tools=self.tools,
                messages=messages
            )

            # Check the stop_reason to ensure the Task is complete
            if response.stop_reason == "end_turn":
                return extract_text(response.content)
            
            # If stop_reason is tool_use then execute the tool
            elif response.stop_reason == "tool_use":

                # Step 1 &#8212; save what Claude said, including which tool it wants to call
                messages.append({
                    "role": "assistant",
                    "content": response.content
                })

                for block in response.content:
                    if block.type == "tool_use":

                        # Step 2 &#8212; we execute the tool, not Claude
                        result = tool_map[block.name](**block.input)

                        # Step 3 &#8212; send the tool result back so Claude can continue
                        # tool_use_id tells Claude which tool call this result belongs to
                        messages.append({
                            "role": "user",
                            "content": [{
                                "type": "tool_result",
                                "tool_use_id": block.id,
                                "content": json.dumps(result)
                            }]
                        })
                # Claude now sees the result and decides what to do next

            else:
                # stop_reason == "max_tokens" &#8212; response was cut off, never return incomplete results
                raise RuntimeError(f"Unexpected: {response.stop_reason}")
</code></pre></div><p>The loop runs until Claude returns <code>end_turn</code>. </p><p>Handling stop_reason is one of the most important concepts in agentic workflows. Learn more in the <a href="https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons">official docs</a>.</p><p>Now that you understand stop_reason, let us look at how Claude keeps track of everything that happens in the loop.</p><h3>Conversation History</h3><p>In agentic workflows, Claude has no memory between API calls. Every time you call the API, you have to pass the full conversation history. That is how Claude knows what happened before.</p><blockquote><p>The <code>messages</code> array holds that history. User messages, Claude responses, and tool results all get appended here until the task is done.</p></blockquote><p>So how does the messages array grow?  Every time stop_reason == "tool_use", you append two things.</p><p>First, you append the response Claude just sent. This contains the tool name Claude wants to call and the input values it decided to pass.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;1b3804fe-e180-43a9-84fb-e8d7254d83a0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">messages.append({
    "role": "assistant",
    "content": response.content    # text block + tool_use block
})</code></pre></div><p>Then you execute the tool and append the result back. The <code>tool_use_id</code> in the result must match the one from the response we appended previously. This tells Claude that this result is for the tool call it requested.</p><p>Now you loop again. Claude reads everything in the <code>messages</code> array and decides what to do next.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ccd22067-89e0-4415-a815-fdf6bbd232c4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">for block in response.content:
    if block.type == "tool_use":
        result = tool_map[block.name](**block.input)

        messages.append({
            "role": "user",
            "content": [{
                "type": "tool_result",
                "tool_use_id": block.id,
                "content": json.dumps(result)
            }]
        })</code></pre></div><blockquote><p>Do not add text immediately after tool results. Send tool results directly without additional text</p></blockquote><h3><strong>Loop Termination</strong></h3><p>An agent loop can terminate for different reasons. We need to identify each termination reason and handle it. If we do not, the agent either runs forever, returns incomplete results, or takes actions it should not.</p><p>Here are the three ways we handle it.</p><ul><li><p>stop_reason == "end_turn" - Claude is done. Return the response to the user and exit the loop.</p></li><li><p>result.get("requires_human") == True - escalate to a human and exit the loop.</p></li><li><p>MAX_ITERATIONS = 10 - the loop hit the safety cap. Raise an error and exit.</p></li></ul><p>In all three cases, we handle the termination and never return incomplete results. Here is how all three work together in code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;9854d351-ebfb-4ae8-806b-e1187e1f320f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">MAX_ITERATIONS = 10

def escalate_to_human(result: dict) -&gt; None:
    # Notify your human review system &#8212; ticket, Slack, email etc.
    print(f"Escalating to human: {result}")

def extract_text(content) -&gt; str:
    # Extract the text block from Claude's response
    for block in content:
        if hasattr(block, "text"):
            return block.text

class Agent:
    def __init__(self, tools):
        self.tools = tools

    def run(self, task: str) -&gt; str:
        # Every conversation starts with the user task
        messages = [{"role": "user", "content": task}]

        for i in range(MAX_ITERATIONS):
            # Claude does not remember previous calls
            # So we pass the full conversation history every time
            response = client.messages.create(
                model="claude-sonnet-4-6",
                max_tokens=1024,
                tools=self.tools,
                messages=messages
            )

            # Claude is done &#8212; return the response to the user
            if response.stop_reason == "end_turn":
                return extract_text(response.content)

            elif response.stop_reason == "tool_use":
                # Append Claude's response to history
                messages.append({
                    "role": "assistant",
                    "content": response.content
                })

                for block in response.content:
                    if block.type == "tool_use":
                        # we execute the tool
                        result = tool_map[block.name](**block.input)

                        # Tool requires human intervention &#8212; escalate and exit the loop
                        if result.get("requires_human"):
                            escalate_to_human(result)
                            return

                        # Append tool result so Claude can continue
                        messages.append({
                            "role": "user",
                            "content": [{
                                "type": "tool_result",
                                "tool_use_id": block.id,
                                "content": json.dumps(result)
                            }]
                        })

        # Max iterations reached &#8212; exit with error, never return incomplete results
        raise RuntimeError("Agent hit max iterations without completing")</code></pre></div><h3><strong>Multi-Agent Systems</strong></h3><p>You now know how a single agent works. But some tasks are too complex for one agent to handle alone.</p><p>That is where multi-agent systems come in. You break the work across multiple specialized agents. Each one is the same <code>Agent</code> class we defined in the previous sections, just with different tools and a different responsibility.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;0b3c28db-550e-4352-82b0-c8890ea1413e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">search_agent = Agent(tools=[web_search_tool])
analysis_agent = Agent(tools=[analysis_tool])
report_agent = Agent(tools=[report_tool])</code></pre></div><p>Anthropic uses a pattern called hub-and-spoke to coordinate agents. Think of it like this. One coordinator receives the task, breaks it down, and delegates to specialized agents. Each agent does its part and reports back. The coordinator collects everything and produces the final response.</p><blockquote><p>Now, when do you run agents in parallel and when in sequence?</p></blockquote><p>If the tasks are independent, run them in parallel. If one task needs the output of another, run them in sequence.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;dfd6df01-7311-4167-9c3b-a82f0c7ff965&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import asyncio

# Step 1 &#8212; Independent subagents, run in parallel
search_result, document_result = await asyncio.gather(
    search_agent.run("Search web for competitors"),
    analysis_agent.run("Analyze our internal documents")
)

# Step 2 &#8212; This subagent depends on Step 1, runs after
report_result = report_agent.run("Generate report", search_result, document_result)

# Step 3 &#8212; Coordinator collects all results and produces the final response
final_result = coordinator_agent.run("Finalize", search_result, document_result, report_result)</code></pre></div><p>Every subagent starts with a fresh context. It does not have access to the coordinator's conversation history. The only way to pass context to a subagent is through its prompt. So be specific and detailed in what you pass.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;2db101fd-f0eb-4886-93b7-5ea084a08a21&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Too vague &#8212; subagent does not know enough to do its job well
search_agent.run("Search web for competitors.")

# Right &#8212; give the subagent exactly what it needs
search_agent.run("Search web for competitors in the B2B SaaS space. Focus on pricing and features.")</code></pre></div><p>Agents never talk directly to the user. They always report back to the coordinator. The coordinator owns the task from start to finish.</p><h3><strong>Task Decomposition</strong></h3><p>Task decomposition is an important part of building multi-agent systems. When you build one, remember that your coordinator agent should never delegate a vague task directly to a subagent.</p><p>Take this for example. Your coordinator receives &#8220;Research the competitive landscape for our project management tool.&#8221; If it passes this directly to a subagent, the subagent does not know where to start. You will get different results every run.</p><p>Break it down first.</p><ul><li><p>Search Google for &#8220;Notion vs Linear pricing plans 2026&#8221;</p></li><li><p>Extract pricing tiers, feature limits, and target user segments for both</p></li><li><p>Generate a comparison table showing where your product has an advantage</p></li></ul><p>Each subtask goes to one specialized agent. Each agent has one job and knows exactly what to return.</p><p>The agents are not the problem. Vague instructions are.</p><h3><strong>Hooks</strong></h3><p>When you build an agent, some actions need to be controlled programmatically. You cannot rely on Claude to always follow prompt instructions. That is where hooks come in.</p><p><a href="https://code.claude.com/docs/en/agent-sdk/hooks">Hooks</a> are callback functions you register in the Claude Agent SDK. They fire automatically at specific points during agent execution. No prompts involved.</p><p>Two hooks you need to know for the exam,</p><h4><strong>PreToolUse :</strong></h4><p>It<strong> </strong>fires before a tool executes. Since it runs before, it can block the action. Use it when you want to stop Claude from doing something like blocking <code>rm -rf</code> commands, preventing writes to <code>.env</code>, or requiring human approval before processing a refund above $500.</p><h4><strong>PostToolUse :</strong></h4><p>PostToolUse fires after a tool executes. It cannot block anything since the action already happened. Use it for things like auto-formatting a file after Claude edits it, writing to an audit log after a deletion, or running a linter after every code change.</p><p>Here is a real example. Your agent has a <code>process_refund</code> tool. Any refund above $500 needs human approval before it goes through.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;d9440bb1-e2d4-45fe-9240-0bca16bca71f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from claude_agent_sdk import ClaudeAgentOptions, ClaudeSDKClient, HookMatcher

async def block_large_refunds(input_data, tool_use_id, context):
    tool_name = input_data["tool_name"]
    tool_input = input_data["tool_input"]

    # Only intercept the process_refund tool
    if tool_name != "process_refund":
        return {}  # allow all other tools to proceed

    # Block refunds above $500 &#8212; requires human approval
    if tool_input.get("amount", 0) &gt; 500:
        return {
            "hookSpecificOutput": {
                "hookEventName": input_data["hook_event_name"],
                # deny stops the tool from executing
                "permissionDecision": "deny",
                # this reason is sent back to Claude so it knows why it was blocked
                "permissionDecisionReason": "Refunds above $500 require human approval"
            }
        }

    # Allow refunds under $500 to proceed normally
    return {}

options = ClaudeAgentOptions(
    hooks={
        # PreToolUse fires before the tool executes
        "PreToolUse": [
            # matcher tells the SDK which tool to intercept
            HookMatcher(matcher="process_refund", hooks=[block_large_refunds])
        ]
    }
)

async with ClaudeSDKClient(options=options) as client:
    await client.query("Process a $600 refund for order ORD-999")
    async for message in client.receive_response():
        print(message)</code></pre></div><blockquote><p>The key difference between hooks and prompt instructions is reliability. A prompt instruction like &#8220;never process refunds above $500&#8221; is not guaranteed. Claude may follow it or not. A hook always fires. If you want something enforced without exception, put it in a hook.</p></blockquote><h3><strong>Session Management</strong></h3><p>A session contains the full conversation history. The SDK saves it to disk automatically so you can come back to it later.</p><p>Here is what you need to know.</p><ul><li><p>Session Resumption</p></li><li><p>Session Isolation</p></li><li><p>Session Forking</p></li></ul><h4><strong>Session Resumption</strong></h4><p>Imagine your agent is halfway through a long task and the server crashes. Without session resumption, it starts from scratch. With it, you pass the session ID and the agent continues from where it stopped.</p><p>Here is how you implement it.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;91e78953-c982-4b71-adf3-80ecc235b47c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from claude_agent_sdk import ClaudeAgentOptions, query, ResultMessage

# Start a session and save the session ID
session_id = None
async for message in query("Analyze the refund flow in our codebase"):
    if isinstance(message, ResultMessage):
        session_id = message.session_id

# Resume later &#8212; agent has full context from before
async for message in query(
    prompt="Now fix the bug you found",
    options=ClaudeAgentOptions(
        resume=session_id,
        allowed_tools=["Read", "Edit", "Write", "Glob", "Grep"],
    ),
):
    if isinstance(message, ResultMessage) and message.subtype == "success":
        print(message.result)</code></pre></div><h4><strong>Session Isolation</strong></h4><p>Each user or task gets its own session. If two users share the same session, Claude will mix up their context and produce wrong results. Always create a new session for each user or task.</p><h4><strong>Session Forking</strong></h4><p>Sometimes you want to try a different approach from where you are, without affecting your current session. For example, your agent has analyzed a codebase and you want to try both a REST and a GraphQL implementation. Instead of starting over, you fork the session. Both forks start from the same point. The original stays untouched.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;3d09f20f-732b-4e55-9436-08980b7d6c41&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from claude_agent_sdk import ClaudeAgentOptions, query

# Fork &#8212; original session stays unchanged
options = ClaudeAgentOptions(
    resume=session_id,
    fork_session=True   # new session ID, same history
)

async for message in query("Try a GraphQL approach instead", options=options):
    print(message)</code></pre></div><p>To learn more about working with sessions, check out the <a href="https://code.claude.com/docs/en/agent-sdk/sessions">Claude Agent SDK session guide</a>.</p><h2><strong>2. Tool Design &amp; MCP Integration </strong></h2><p><a href="https://modelcontextprotocol.io/docs/getting-started/intro">MCP stands for Model Context Protocol</a>. It is an open standard for connecting your agent to external services. For example, your agent can query a database, fetch GitHub issues, or send a Slack message through an MCP server.</p><p>If you are new to MCP, check out our <a href="https://www.devshorts.in/p/the-complete-mcp-server-guide">complete MCP Server Guide</a> that covers everything from scratch.</p><p>Below are the key concepts.</p><ul><li><p>MCP Components</p></li><li><p>Tool Descriptions</p></li><li><p>Structured Error Responses</p></li><li><p>Tool Distribution</p></li><li><p>MCP Server Configuration</p></li></ul><h3>MCP Components</h3><p>An MCP server consists of three things.</p><ul><li><p><strong>Tools</strong> are functions exposed by the MCP server. When Claude calls a tool, the MCP server executes that function. Claude decides when to call the tool and what input to send. </p></li><li><p><strong>Resources</strong> are read only data exposed by the MCP server. They give Claude extra context for the task. For example, a resource can be an API spec, database schema, product catalog, or project document. </p></li><li><p><strong>Prompts</strong> are reusable instructions exposed by the MCP server. They tell Claude how to handle a repeated task. In supported clients, prompts can also be triggered as slash commands.</p></li></ul><p>Here is a simple MCP server example. This one connects to PostgreSQL and shows all three components.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;f743c158-a1b3-468c-9927-be517c8d4151&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from mcp.server.fastmcp import FastMCP
import psycopg2
import os

mcp = FastMCP("DatabaseServer")

# Connect to PostgreSQL &#8212; use environment variables for credentials
conn = psycopg2.connect(
    host=os.getenv("DB_HOST"),
    database=os.getenv("DB_NAME"),
    user=os.getenv("DB_USER"),
    password=os.getenv("DB_PASSWORD")
)

# Tool &#8212; model calls this to query the database
@mcp.tool()
def get_order(order_id: str) -&gt; dict:
    """Look up an order by order ID from the database."""
    cursor = conn.cursor()
    cursor.execute("SELECT id, status, item FROM orders WHERE id = %s", (order_id,))
    row = cursor.fetchone()
    
    if not row:
        return {"error": "Order not found"}
    
    return {"id": row[0], "status": row[1], "item": row[2]}

# Resource &#8212; exposes the full product catalog from the database
@mcp.resource("data://product-catalog")
def get_product_catalog() -&gt; str:
    """Returns all products from the database."""
    cursor = conn.cursor()
    cursor.execute("SELECT name, price FROM products")
    rows = cursor.fetchall()
    return "\n".join([f"{row[0]} - ${row[1]}" for row in rows])

# Prompt &#8212; can appear as a slash command in supported clients
@mcp.prompt()
def review_order_prompt() -&gt; str:
    """Template for reviewing an order status."""
    return """You are an order review specialist. 
When reviewing an order:
- Check the current status
- Identify any issues
- Suggest next steps"""

if __name__ == "__main__":
    mcp.run()</code></pre></div><p>Once this MCP server is running and connected to your agent, you can query it directly.</p><p>&#8220;What is the status of order ORD-999?&#8221;</p><p>The agent calls the <code>get_order</code> tool, queries the database in real time, and returns the result.</p><h3>Tool Descriptions</h3><p>When Claude has multiple tools, it uses the tool description to decide which one to call. If the description is vague, Claude may pick the wrong tool.</p><p>A good tool description should clearly say three things.</p><ul><li><p>What the tool does</p></li><li><p>What input it expects</p></li><li><p>When to use it and when not to</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;7548bb2a-89b4-4fed-a011-ac8789d8351a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; too vague, Claude cannot differentiate
@mcp.tool()
def get_order(order_id: str) -&gt; dict:
    """Retrieves order details."""
    ...

# Good &#8212; clear boundaries, Claude knows exactly when to use it
@mcp.tool()
def get_order(order_id: str) -&gt; dict:
    """Look up an order by order ID. 
    Use this when you need order status, items, and shipping details. 
    Do not use this for customer account lookups."""
    ...</code></pre></div><h3><strong>Structured Error Responses</strong></h3><p>When a tool fails, do not return a generic error. Claude needs to know what went wrong so it can decide what to do next.</p><p>In production, return more than just an error. Tell Claude what went wrong, whether it can retry, and what to do next.</p><p>Here are a few common categories.</p><ul><li><p>Transient - If the external service is down or timed out, we return the error as transient. It means the failure is temporary and usually safe to retry.</p></li><li><p>Validation - If the input is missing or invalid, we return the error as validation. It means Claude should fix the input before calling the tool again.</p></li><li><p>Business - If the tool runs, but the action is not allowed by your system rules, we return the error as business. It means there is no point retrying the same request.</p></li><li><p>Permission - If the user or agent does not have access to perform the action, we return the error as permission. It means access should be granted first before retrying.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ea327071-46b2-49b6-bcc7-95c516a3ee80&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">@mcp.tool()
def process_refund(order_id: str, amount: float) -&gt; dict:
    """Process a refund for a given order."""

    # validation &#8212; bad input, no point retrying
    if not order_id:
        return {"error": True, "errorCategory": "validation", "isRetryable": False, "message": "order_id is required"}

    # business &#8212; order is not eligible for refund, refund window has expired
    if order_status == "delivered_over_30_days":
        return {"error": True, "errorCategory": "business", "isRetryable": False, "message": "Refund window has expired. Orders can only be refunded within 30 days of delivery."}
    
    # transient &#8212; service down, safe to retry
    if not payment_service.is_available():
        return {"error": True, "errorCategory": "transient", "isRetryable": True, "message": "Payment service unavailable. Try again."}

    return {"success": True, "refundId": "REF-001"}</code></pre></div><p>Never return a generic error like <code>{"error": "Operation failed"}</code>. The more context you give Claude, the better it recovers. </p><h3><strong>Tool Distribution</strong></h3><p>Give each agent only the tools it really needs. Too many tools can confuse Claude. It may call the wrong tool or take the wrong action.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;485f1a78-3afe-41e7-ad58-c28e00e389f4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; agent has access to tools it should never use
research_agent = Agent(tools=[
    web_search_tool,
    process_refund_tool,    # research agent should never process refunds
    delete_record_tool,     # research agent should never delete records
    synthesis_tool
])

# Good &#8212; agent only gets what it needs
research_agent = Agent(tools=[
    web_search_tool,
    synthesis_tool
])</code></pre></div><p>Use <code>allowed_tools</code> and <code>disallowed_tools</code> in the Claude Agent SDK to control which tools each agent can access.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;be4edd20-eb9a-48d3-95c4-eab80776e70f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">options = ClaudeAgentOptions(
    mcp_servers={"orders": order_server},
    allowed_tools=[
        "mcp__orders__get_order",       # pre-approve read operations
        "mcp__orders__get_customer"
    ],
    disallowed_tools=[
        "mcp__orders__delete_record",   # block delete operations
        "mcp__orders__update_record"    # block write operations
    ]
)</code></pre></div><p>To learn more, check the <a href="https://code.claude.com/docs/en/agent-sdk/permissions#allow-and-deny-rules">official SDK reference</a>.</p><h3><strong>MCP Server Configuration</strong></h3><p>When you add an MCP server to your project, you need to decide where to configure it. <a href="https://code.claude.com/docs/en/settings#what-uses-scopes">There are two scopes</a>.</p><ul><li><p>Project level &#8212; .mcp.json in your repo. It can be shared with the whole team via version control.</p></li><li><p>User level &#8212; ~/.claude.json. It is personal and experimental. It is not shared.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;cf2f3064-2b70-4132-9dc5-27772ae6105f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">// .mcp.json &#8212; project level, committed to the repo
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["@anthropic-ai/mcp-server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"  // never hardcode secrets
      }
    },
    "database": {
      "command": "python",
      "args": ["./mcp_servers/database_server.py"],
      "env": {
        "DB_URL": "${DATABASE_URL}"
      }
    }
  }
}</code></pre></div><p>Use existing community MCP servers for standard integrations like GitHub, Slack, and Jira. Build custom servers only for internal or team-specific workflows.</p><p>Check the <a href="https://code.claude.com/docs/en/agent-sdk/mcp">official docs for MCP and Agent SDK integration</a>.</p><h2><strong>3. Claude Code Configuration &amp; Workflows</strong></h2><p>Claude Code deserves its own blog. We have covered the important concepts that will be useful for your daily development as well as for the exam. </p><ul><li><p>CLAUDE.md</p></li><li><p>Custom Commands and Skills</p></li><li><p>Path-specific Rules</p></li><li><p>Plan Mode vs Direct Execution</p></li><li><p>Headless Mode</p></li><li><p>Hooks</p></li><li><p>Built-in Tools</p></li></ul><h3><strong>CLAUDE.md</strong></h3><p><a href="https://code.claude.com/docs/en/memory#claude-md-files">CLAUDE.md</a> is the first file Claude reads when it starts a session. It tells Claude the project conventions and rules.</p><p>It supports three levels:</p><ul><li><p>User level &#8212; ~/.claude/CLAUDE.md. Applies to all your projects.</p></li><li><p>Project level &#8212; CLAUDE.md in the repo root. Applies to the whole project. Commit this to Git.</p></li><li><p>Directory level &#8212; CLAUDE.md inside a subdirectory. Applies only when Claude is working in that folder.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;41a57f8f-442a-40db-8cdb-08ad5782de59&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">repo/
&#9500;&#9472;&#9472; CLAUDE.md              # applies to everything
&#9500;&#9472;&#9472; frontend/
&#9474;   &#9492;&#9472;&#9472; CLAUDE.md          # applies only in /frontend
&#9492;&#9472;&#9472; backend/
    &#9492;&#9472;&#9472; CLAUDE.md          # applies only in /backend</code></pre></div><p>It can be placed directly in the repo root or inside the <code>.claude/</code> directory. Both work the same way.</p><p>CLAUDE.md is advisory. Claude reads it and tries to follow it. But it is not guaranteed. Claude may not always follow it. If you have a constraint that must always run without exception, put it in a hook. Hooks fire programmatically and always run regardless of what Claude decides. </p><h3><strong>Custom Commands and Skills</strong></h3><p><a href="https://code.claude.com/docs/en/skills">Skills</a> give domain-specific expertise to Claude. You package your team&#8217;s workflows, standards, and best practices into a SKILL.md file. Claude picks them up automatically when the task matches, or you call them directly with a slash command.</p><p>Skills live in two places:</p><ul><li><p>.claude/skills/ &#8212; project level. Shared with the team via Git.</p></li><li><p>~/.claude/skills/ &#8212; user level. Personal, not shared.</p></li></ul><p>Each skill lives in its own subdirectory. For example, a review-security skill would be at .claude/skills/review-security/SKILL.md.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;7fd5253a-6c92-47ef-88b5-c1e8868cdea8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">&lt;!-- .claude/skills/review-security/SKILL.md --&gt;
---
name: review-security
description: Run a security audit on the current file
allowed-tools: Read, Grep
context: fork
argument-hint: [file-path to review]
---

Review this file for SQL injection, XSS, and hardcoded secrets.
Output findings as JSON with severity, line number, and recommendation.</code></pre></div><p>Three fields to know:</p><ul><li><p>allowed-tools - It controls which tools the skill can use. For example, if you set <code>Read, Grep</code>, the skill can only read files and search. It cannot write or run commands.</p></li><li><p>context: fork - It runs the skill in a separate session. Whatever Claude does in that session stays there. Use this when you want Claude to explore something without affecting your main session.</p></li><li><p>argument-hint - It shows a hint when someone types the slash command. It helps the user to understand what input to provide.</p></li></ul><blockquote><p>All fields are optional. But always include <code>description</code> so Claude knows when to load the skill automatically. Check the <a href="https://code.claude.com/docs/en/skills#frontmatter-reference">full frontmatter reference</a> for all available fields.</p></blockquote><p>Custom Commands were the older way to define slash commands in Claude Code. They lived in <code>.claude/commands/*.md</code>. Skills have now replaced them. If you are starting fresh, use Skills.</p><p>You can also find community-built skills at <a href="https://skills.sh/">skills.sh</a>.</p><h3><strong>Path-specific Rules</strong></h3><p>Rules live in <code>.claude/rules/</code> as markdown files. When you want <a href="https://code.claude.com/docs/en/memory#path-specific-rules">path-specific rules</a> for your codebase, you add a <code>paths</code> field in your rules. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;d82809e6-b44b-4525-af70-a3dabd3863bd&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">&lt;!-- .claude/rules/frontend-rules.md --&gt;
---
paths:
  - "frontend/**/*.ts"
  - "frontend/**/*.tsx"
---

Always use React functional components.
Never use class components.
Use Tailwind for styling. Never use inline styles.</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;7d36d717-8449-490c-940f-057b46303387&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">&lt;!-- .claude/rules/backend-rules.md --&gt;
---
paths:
  - "backend/**/*.py"
---

Always use FastAPI for routes.
Business logic goes in services/. Never in routes/.
Always add type hints.</code></pre></div><p>When you write rules like above, Claude picks up the right rules based on the file it is touching. This is more token efficient than putting all rules in one big CLAUDE.md. </p><blockquote><p>Note: The official docs use <code>paths:</code> but some versions of Claude Code work more reliably with <code>globs:</code>. If <code>paths:</code> does not work, try <code>globs:</code> with your pattern instead.</p></blockquote><h3><strong>Plan Mode vs Direct Execution</strong></h3><p>By default, Claude executes tasks immediately. It reads files, writes code, runs commands without stopping.</p><p>Plan mode changes that. Claude outlines what it is going to do first. No files written, no commands run. You review the plan and approve before anything happens.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;bc18db4c-329a-44b9-96bf-8013c2886673&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">claude --permission-mode plan</code></pre></div><p>Use plan mode for large scale or destructive changes. For small, well-scoped tasks, just run directly.</p><h3><strong>Headless Mode</strong></h3><p>Headless mode runs Claude non-interactively using the <code>-p</code> flag. No terminal prompts. No approvals. Used for CI/CD pipelines and automation scripts.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;8f17b429-1013-4f83-bdf5-84f847df7005&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">claude -p "Review this PR for security vulnerabilities" --output-format json &gt; report.json
</code></pre></div><p>Use --output-format json when you need the output in json. </p><p>Check more about <a href="https://code.claude.com/docs/en/permission-modes">Claude&#8217;s mode in the Claude Code docs.</a></p><h3><strong>Hooks</strong></h3><p>We already covered hooks in the Claude Agent SDK section. The concept is the same but the implementation is different in Claude Code.</p><p>In the Agent SDK, hooks are Python callback functions. <a href="https://code.claude.com/docs/en/hooks">In Claude Code, hooks</a> are shell commands configured in <code>.claude/settings.json</code>. They fire automatically at specific points in Claude Code&#8217;s lifecycle.</p><p>As we already saw, two hooks matter here.</p><p><code>PreToolUse</code> fires before a tool executes and can block the action. <code>PostToolUse</code> fires after tool execution. Here is how they look in Claude Code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;f4a95153-d732-4114-8202-06d786e87a7f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{"type": "command", "command": "echo '$CLAUDE_TOOL_INPUT' | grep -q 'rm -rf' &amp;&amp; exit 2 || exit 0"}]
    }],
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{"type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"}]
    }]
  }
}</code></pre></div><h3><strong>Built-in Tools</strong></h3><p>Claude Code ships with built-in tools. As an architect, you need to know when each one is the right choice.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;53c58b88-46e6-4121-86c0-4796dd60f6a1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Tool              When to use
-------           -----------
Read              Read the contents of a file
Write             Create or overwrite a file
Edit              Make targeted changes to a specific file
Bash              Run shell commands
Grep              Search for patterns inside file contents
Glob              Find files by name or pattern
LSP               Code intelligence &#8212; jump to definitions, find references, get type errors
Agent             Spawn a subagent with its own context window to handle a task
WebFetch          Fetch content from a URL
WebSearch         Search the web
Skill             Run a skill within the main conversation
NotebookEdit      Edit Jupyter notebook cells
AskUserQuestion   Ask the user a multiple choice question to clarify requirements</code></pre></div><p>These are the most commonly used tools. Claude Code has many more built-in tools. Check the <a href="https://code.claude.com/docs/en/tools-reference">full tools reference</a> for the complete list.</p><h2>Up Next:</h2><p>That is it for Part 1.</p><p>We covered agentic architecture, MCP integration, and Claude Code configuration.</p><p>In Part 2, we will move to the remaining areas. That includes prompt engineering, structured outputs, context management, reliability, and the registration flow.</p><p>I have added the mock test materials to this <a href="https://github.com/devgotomarket/cca-prep">GitHub page</a>. I will keep adding more questions as I find useful ones.</p><p>If you are planning to take the exam, use this blog and the mock questions as a practical guide. But before the exam, make sure you also go through the official docs once.</p><p>See you in Part 2.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/claude-certified-architect-foundations?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 108] - GPT 5.5, DeepSeek V4, Claude Design, Kimi K2.6, ChatGPT Images 2.0, Qwen3.6 27B, HyperFrames, OpenAI's Privacy Filter, Parallel's Web Search MCP Server and much more! ]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 24 Apr 2026 13:17:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7c95ba77-d799-408a-91f5-b70cd0e9ae77_5472x3648.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 108th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li><li><p><a href="https://devshorts.substack.com/p/cursor-opus-45-the-developer-workflow">Cursor + Opus 4.5 - The Developer Workflow</a></p></li><li><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Coding with Parallel Agents and Git worktrees</a></p></li></ul><p>Join 8800+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://openai.com/index/introducing-gpt-5-5">OpenAI has released GPT 5.5</a>, their smartest model so far. It is good at coding, debugging, and creating docs. It is also strong at agentic coding, computer use, and research work. OpenAI says it matches GPT 5.4 speed while completing Codex tasks with fewer tokens. Check OpenAI&#8217;s announcement for more details.</p></li><li><p><a href="https://x.com/deepseek_ai/status/2047516922263285776">DeepSeek has released DeepSeek V4</a>. The model is open sourced<strong> </strong>and<strong> </strong>comes with 1M context window at a lower cost. It has two versions, Pro for stronger performance and Flash for faster and economical use. You can try it on Chat or use the API. Check DeepSeek&#8217;s post for more details.</p></li><li><p><a href="https://www.anthropic.com/news/claude-design-anthropic-labs">Anthropic has launched Claude Design</a>, a new tool for creating visual work with Claude. It can help with wireframes, prototypes, pitch decks, landing pages, and campaign visuals. It can also build visuals that match your existing brand style. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://x.com/i/status/2046249571882500354">Moonshot AI has released Kimi K2.6</a>, an open source coding model. It is built for long running coding tasks. It can also create richer frontend like animated hero sections and motion based UI. It also supports large agentic workflows. Check Kimi&#8217;s post for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/heygen-com/hyperframes">This week we are featuring HyperFrames</a>. It is an open source video rendering framework. It lets you create videos using HTML, preview them in the browser, and export them as MP4. It also works well with AI coding agents like Claude Code, Cursor, Gemini CLI, and Codex, so they can help you create videos with animations. Check the GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Jrn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Jrn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 424w, https://substackcdn.com/image/fetch/$s_!8Jrn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 848w, https://substackcdn.com/image/fetch/$s_!8Jrn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!8Jrn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Jrn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png" width="1456" height="981" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:981,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:895620,&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://www.devshorts.in/i/195319507?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.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_!8Jrn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 424w, https://substackcdn.com/image/fetch/$s_!8Jrn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 848w, https://substackcdn.com/image/fetch/$s_!8Jrn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!8Jrn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e10c3ef-1fcc-452f-bc15-b4dbfc41bdf3_1662x1120.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p>Anthropic is testing a change to Claude Code access. <a href="https://x.com/TheAmolAvasare/status/2046724659039932830">Claude Code access was removed from the Pro plan for around 2% of new Pro signups</a>. Those users now need the $100 Max plan to use Claude Code. Existing Pro users are not affected for now, but we need to wait and see if this expands later.</p></li><li><p><a href="https://www.bloomberg.com/news/articles/2026-04-21/anthropic-s-mythos-model-is-being-accessed-by-unauthorized-users">Anthropic&#8217;s Mythos model was reportedly accessed by a private Discord group</a>. Mythos was meant only for selected partners, because Anthropic considered it too powerful for public release. The group reportedly used leaked vendor details to find the access path. Check Bloomberg&#8217;s report for more details.</p></li><li><p><a href="https://vercel.com/kb/bulletin/vercel-april-2026-security-incident">Vercel reported a recent security incident</a>. It started after Context.ai, a third party AI tool used by one employee, was compromised. The attacker used that access to enter some Vercel systems. They also decrypted some non sensitive environment variables. Read Vercel&#8217;s security bulletin for full details.</p></li><li><p><a href="https://x.com/SpaceX/status/2046713419978453374">Cursor and SpaceXAI are working together on AI for coding tasks</a>. Cursor brings the coding product. SpaceXAI brings the Colossus training supercomputer. SpaceXAI also has the option to acquire Cursor later this year for $60 billion. Check the post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://openai.com/index/introducing-chatgpt-images-2-0/">OpenAI has released ChatGPT Images 2.0</a>. It improves image generation, text rendering, and multilingual support. It can create visuals for social posts, presentations, infographics, comics, and other content. Check OpenAI&#8217;s announcement for more details.</p></li><li><p><a href="https://qwen.ai/blog?id=qwen3.6-27b">Qwen has released Qwen3.6 27B</a>, a 27B dense model focused on coding. It delivers strong agentic coding performance in a much smaller model. It also supports multimodal input and can work with coding agents. Check Qwen&#8217;s blog for more details.</p></li><li><p><a href="https://github.com/openai/privacy-filter">OpenAI has released Privacy Filter</a>, an open source model for finding and masking personal data in text. It is useful for teams that want to clean sensitive data on their own systems. It can redact PII before the data is stored or processed. Check the GitHub repo for more details.</p></li><li><p>We now have a <a href="https://x.com/i/status/2047397365091618921">free web search MCP server from Parallel</a>. It is used for web search inside AI agents and MCP supported tools. It does not need any account or API key. You can use it with Claude Code, Codex, or any MCP supported tool. Check Parallel&#8217;s post for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-108-gpt-55-deepseek?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 107] - Claude Opus 4.7, GPT 5.4 Cyber, Gemini 3.1 Flash TTS, Windsurf 2.0 with Devin, Qwen3.6-35B MOE Model, Routines in CC, GPT Rosalind, Gemini for Mac, Codex for everything & more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 17 Apr 2026 12:31:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/20c76d06-65d3-4ca8-abae-d6b794fc0a3b_5616x3744.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 107th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li><li><p><a href="https://devshorts.substack.com/p/cursor-opus-45-the-developer-workflow">Cursor + Opus 4.5 - The Developer Workflow</a></p></li><li><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Coding with Parallel Agents and Git worktrees</a></p></li></ul><p>Join 8800+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://www.anthropic.com/news/claude-opus-4-7">Anthropic has released Claude Opus 4.7.</a> It comes with stronger coding, high resolution vision, and a new xhigh effort level. Pricing remains the same as Opus 4.6. Anthropic notes that Mythos Preview still remains its best aligned model based on its evaluations. Check Anthropic&#8217;s page for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-flash-tts/">Google has released Gemini 3.1 Flash TTS</a>. It generates more natural speech and supports 70+ languages. It also adds audio tags to control vocal style, pace, and delivery. Its audio output is watermarked with SynthID to identify AI generated content. Check Google&#8217;s announcement for more details.</p></li><li><p><a href="https://openai.com/index/scaling-trusted-access-for-cyber-defense/">OpenAI has rolled out GPT 5.4 Cyber</a>. It is built for defensive security work. Access to this model is now open through identity verification. OpenAI says it can inspect compiled software and find malware, vulnerabilities, and other security issues without the original source code. Check OpenAI&#8217;s post for details.</p></li><li><p><a href="https://x.com/i/status/2044768734234243427">Qwen has open sourced Qwen3.6 35B A3B</a>. It is a sparse MoE model with 35B total parameters and 3B active. It comes with strong agentic coding and multimodal reasoning. It also supports both thinking and non thinking modes in one model. Check Qwen&#8217;s announcement for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/GoogleCloudPlatform/scion">This week we are featuring Scion</a>. It is an open source multi agent orchestration tool. It runs each agent in its own container and git worktree. It helps multiple agents work in parallel without getting in each other&#8217;s way. It works with Claude Code, Gemini CLI, Codex, and others too. Check the GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9ns8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9ns8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 424w, https://substackcdn.com/image/fetch/$s_!9ns8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 848w, https://substackcdn.com/image/fetch/$s_!9ns8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 1272w, https://substackcdn.com/image/fetch/$s_!9ns8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9ns8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png" width="1456" height="561" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:561,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:176573,&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://www.devshorts.in/i/194467582?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.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_!9ns8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 424w, https://substackcdn.com/image/fetch/$s_!9ns8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 848w, https://substackcdn.com/image/fetch/$s_!9ns8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 1272w, https://substackcdn.com/image/fetch/$s_!9ns8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e6abbb2-c936-4d78-a5f5-784add3b9eea_1754x676.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://blog.google/innovation-and-ai/products/gemini-app/gemini-app-now-on-mac-os">Google has launched the Gemini app for Mac</a>. It is a native macOS app. You can share anything on your screen with Gemini to get help, including local files. Check Google&#8217;s post for more details.</p></li><li><p><a href="https://openai.com/index/introducing-gpt-rosalind/">OpenAI has introduced GPT Rosalind</a>. It is a new model built for life sciences research and drug discovery. OpenAI says it can reason across chemistry, proteins, and DNA, and help with experiment analysis. Check OpenAI&#8217;s post for more details.</p></li><li><p><a href="https://arxiv.org/pdf/2602.24281">Google has solved one of the old problems in RNNs with Memory Caching.</a> Earlier, RNNs had to rely on one fixed memory as the input got longer. This new method keeps useful memory from earlier in the sequence. The paper says this improves long context and recall heavy tasks. It also brings RNNs closer to Transformers. Check the paper for more details.</p></li><li><p>I came across Baileys. It is a <a href="https://github.com/whiskeysockets/Baileys">WebSockets-based TypeScript library for interacting with the WhatsApp Web API</a>. If you are working on WhatsApp based apps, this is worth a look. Check the GitHub repo for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://claude.com/blog/introducing-routines-in-claude-code">Anthropic has introduced routines in Claude Code</a>. You can now set up repeatable automations and run them on a schedule, through an API call, or from GitHub events. Since they run on Claude Code&#8217;s web infrastructure, you do not need to keep your laptop open. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://windsurf.com/blog/windsurf-2-0">Windsurf has launched Windsurf 2.0</a>. It adds a new Agent Command Center to manage local and cloud agents in one place. Devin is now built into Windsurf, so cloud agents can keep working even after you close your laptop. Check Windsurf&#8217;s post for more details.</p></li><li><p><a href="https://openai.com/index/codex-for-almost-everything/">OpenAI has updated Codex in a big way</a>. It now goes beyond coding. It can handle computer use, run multiple agents, and browse the web. It also adds image generation and 90+ new plugins. OpenAI is also adding memory and automations for long running work. Check OpenAI&#8217;s post for more details.</p></li><li><p>Google has introduced Skills in Chrome. <a href="https://blog.google/products-and-platforms/products/chrome/skills-in-chrome/">You can now turn your prompts into one click tools</a>. They can run on the page you are viewing or across selected tabs. Google is also adding a ready made Skills library. Check Google&#8217;s post for more details.</p></li><li><p>If you are building agents, this is a must read. Garry Tan shared a useful idea on building AI agents. He says <a href="https://x.com/garrytan/status/2042925773300908103">keep the harness thin and put more value into skills.</a> His point is that the real bottleneck is not model intelligence. It is whether the model understands your data, process, and context. Check Garry Tan&#8217;s post for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-107-claude-opus-47-gpt?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 106] - Anthropic's Mythos, Meta's Muse Spark, Amazon's S3 Files, llmfit, OpenClaw's Dreaming feature,Claude Managed Agents,Graphify, nono-sandbox,Perplexity's plaid integration & more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 10 Apr 2026 13:03:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/65c12716-b13e-45ff-a213-78e251960e16_6000x4000.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 106th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li><li><p><a href="https://devshorts.substack.com/p/cursor-opus-45-the-developer-workflow">Cursor + Opus 4.5 - The Developer Workflow</a></p></li><li><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Coding with Parallel Agents and Git worktrees</a></p></li></ul><p>Join 8800+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://www.anthropic.com/glasswing">Anthropic&#8217;s new Project Glasswing is getting a lot of attention</a>. It is a new effort to secure critical software. It is built around Claude Mythos Preview, Anthropic&#8217;s latest model. Anthropic says Mythos can find serious software flaws. It has already identified flaws in the Linux kernel and major browsers. Because of its capabilities, Anthropic is not making it publicly available. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://ai.meta.com/blog/introducing-muse-spark-msl/">Meta is back in the model race with Muse Spark</a>. It is the first model from Meta Superintelligence Labs. It supports multimodal reasoning and visual chain of thought, and multi agent tasks. Check Meta&#8217;s announcement for more details.</p></li><li><p><a href="https://aws.amazon.com/about-aws/whats-new/2026/04/amazon-s3-files">Amazon has announced S3 Files</a>. It lets you access S3 buckets like a file system, without moving data out of S3. It gives file system access to S3 data with low latency. Check AWS&#8217;s announcement for more details.</p></li><li><p><a href="https://docs.openclaw.ai/concepts/dreaming">OpenClaw has released a new memory feature called Dreaming</a>. It is a background memory consolidation system for long term recall. It takes useful short term context and stores it in durable memory. It is off by default. Check OpenClaw&#8217;s docs for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p>This week we are featuring nono. It is an <a href="https://github.com/always-further/nono">open source sandbox for AI agents</a>. It lets you run agents in an isolated environment without extra infrastructure. It also supports tools like Claude Code, Codex, OpenCode, and OpenClaw. Check the nono GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jqJM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jqJM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 424w, https://substackcdn.com/image/fetch/$s_!jqJM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 848w, https://substackcdn.com/image/fetch/$s_!jqJM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 1272w, https://substackcdn.com/image/fetch/$s_!jqJM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jqJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png" width="1456" height="734" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:734,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:179098,&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://www.devshorts.in/i/193758965?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.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_!jqJM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 424w, https://substackcdn.com/image/fetch/$s_!jqJM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 848w, https://substackcdn.com/image/fetch/$s_!jqJM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 1272w, https://substackcdn.com/image/fetch/$s_!jqJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F660c62ca-0760-4aa1-b3f1-743247c920dc_1722x868.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://claude.com/blog/claude-managed-agents">Anthropic has launched Claude Managed Agents</a>. It helps teams build and run cloud hosted agents on Anthropic&#8217;s infrastructure. Anthropic handles things like sandboxing, permissions, state, and tracing. So teams can focus more on the agent itself. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://blog.langchain.com/deep-agents-deploy-an-open-alternative-to-claude-managed-agents/">LangChain has introduced Deep Agents Deploy</a>. It is an open alternative to Claude Managed Agents. It helps teams deploy production ready agents with one command. It is model agnostic and open source, so teams are not locked into one provider. Check LangChain&#8217;s announcement for more details.</p></li><li><p>If you keep a lot of notes in markdown, Atomic is worth a look. It is an open source personal knowledge base. <a href="https://github.com/kenforthewin/atomic">It turns markdown notes into a connected knowledge graph</a>. You can explore it through wiki style pages, a canvas, and chat. Check the Atomic GitHub repo for more details.</p></li><li><p>xAI looks to be scaling up fast. <a href="https://x.com/elonmusk/status/2041754402239975479">Elon Musk says they have 7 models in training</a>. They include Imagine V2, two 1T variants, two 1.5T variants, a 6T model, and a 10T model. Check Elon Musk&#8217;s post for more details.</p></li><li><p><a href="https://huggingface.co/blog/ibm-research/altk-evolve">IBM Research has released ALTK Evolve for AI agents</a>. It helps agents learn from past runs instead of just re reading old transcripts. IBM says it turns agent traces into reusable guidelines, and improves reliability on harder tasks. Check the Hugging Face post for more details.</p></li><li><p><a href="https://github.com/microsoft/memento">Microsoft has released Memento. It is a new way to extend LLM output length without needing a bigger context window</a>. It breaks reasoning into blocks, writes short summaries, and clears old KV cache. So the model can keep going longer. Check the Memento GitHub repo for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://github.com/AlexsJones/llmfit">llmfit looks useful if you run models locally</a>. It checks your RAM, CPU, and GPU, then tells you which models will run well on your machine. It also scores them across fit, speed, quality, and context. It comes with both a terminal UI and a CLI mode. Check the llmfit GitHub repo for more details.</p></li><li><p><a href="https://github.com/safishamsi/graphify">The skill called Graphify caught my attention</a>. It is an open source skill for Claude Code and other coding assistants. It turns a folder of code, PDFs, markdown, and images into a queryable knowledge graph with one command. It can help you understand a codebase faster and trace architecture decisions. Check the Graphify GitHub repo for more details.</p></li><li><p><a href="https://x.com/noahzweben/status/2041654973491245509">Claude Code has added /autofix-pr in the CLI.</a> You can now trigger PR autofix directly after finishing your PR. It sends your session to the cloud, so the autofixer gets full context to handle CI failures and review comments. Check the X post for more details.</p></li><li><p><a href="https://www.perplexity.ai/hub/blog/plaid-integration-provides-full-view-of-personal-finances">Perplexity has added Plaid integration to its Computer agent.</a> Users can now link bank accounts, credit cards, and loans for a fuller view of their finances. Perplexity says Computer can analyze spending, track net worth, and build custom finance tools from simple prompts. Check Perplexity&#8217;s announcement for more details.</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-106-anthropics-mythos?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[[Dev Catch Up # 105] - Gemma 4, Qwen3.6 Plus, Microsoft's MAI Models, GLM 5V Turbo, Semiotic, Claude Code's Source Code Leaked, Claude Code tips, Video chat with your agents with this Skill & more!]]></title><description><![CDATA[Bringing devs up to speed on the latest dev news from the trends including, a bunch of exciting developments and articles]]></description><link>https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 03 Apr 2026 13:31:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/f020278f-6ef9-4e0f-910d-a2b9b29b37aa_5001x3334.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 105th edition of DevShorts, Dev Catch Up.</p><p>For those who joined recently or are reading Dev Catch Up for the first time, I write about developer stories and open source, partly based on my work and experience interacting with people all over the globe.</p><p>Thanks for reading Dev Shorts! Subscribe for free to receive new posts and support my work.</p><p>Some recent issues from Dev Catch up:</p><ul><li><p><a href="https://devshorts.substack.com/p/openclaw-workflow-and-automation">OpenClaw Workflow and Automation</a></p></li><li><p><a href="https://www.devshorts.in/p/claude-skills-automate-your-workflows">Claude Skills - Automate Your Workflows</a></p></li><li><p><a href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker">Finetuning DeepSeek-V3 with Tinker API</a></p></li><li><p><a href="https://devshorts.substack.com/p/cursor-opus-45-the-developer-workflow">Cursor + Opus 4.5 - The Developer Workflow</a></p></li><li><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Coding with Parallel Agents and Git worktrees</a></p></li></ul><p>Join 8800+ developers to hear stories from Open source and technology.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/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">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Must Read</strong></h2><ul><li><p><a href="https://blog.google/innovation-and-ai/technology/developers-tools/gemma-4/">Google has released Gemma 4</a>. It is a new open model family. It is built from the same research and technology behind Gemini 3. Google says it supports agent workflows, multimodal reasoning, and 140 languages. Check Google DeepMind&#8217;s post for more details</p></li><li><p><a href="https://microsoft.ai/news/today-were-announcing-3-new-world-class-mai-models-available-in-foundry">Microsoft has announced three new MAI models in Foundry</a>. They are MAI Transcribe 1, MAI Voice 1, and MAI Image 2. These cover speech to text, voice generation, and image generation. The models focus on speed, quality, and lower cost. Check Microsoft&#8217;s announcement for more details.</p></li><li><p><a href="https://qwen.ai/blog?id=qwen3.6">Qwen has introduced Qwen3.6 Plus</a>. It comes with better coding, stronger multimodal vision, and a 1M context window in the API. Qwen says it is built to support real world agents and developer workflows. Check Qwen&#8217;s blog for more details.</p></li><li><p><a href="https://x.com/Fried_rice/status/2038894956459290963?s=20">Anthropic accidentally exposed Claude Code</a> source code through a map file in its npm package. The leaked code then spread across GitHub through multiple repos and forks. Anthropic sent takedown notices to remove those leaked copies. Check the <a href="https://techcrunch.com/2026/04/01/anthropic-took-down-thousands-of-github-repos-trying-to-yank-its-leaked-source-code-a-move-the-company-says-was-an-accident/">TechCrunch report</a> for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/nteract/semiotic">This week we are featuring Semiotic</a>. It is a React library for building data visualizations in web apps. It comes with schemas and an MCP server, so AI coding assistants can generate correct chart code on the first try. Check the GitHub repo for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GMUY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GMUY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 424w, https://substackcdn.com/image/fetch/$s_!GMUY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 848w, https://substackcdn.com/image/fetch/$s_!GMUY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 1272w, https://substackcdn.com/image/fetch/$s_!GMUY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GMUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png" width="1456" height="1001" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1001,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:251034,&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://www.devshorts.in/i/193026628?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.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_!GMUY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 424w, https://substackcdn.com/image/fetch/$s_!GMUY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 848w, https://substackcdn.com/image/fetch/$s_!GMUY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 1272w, https://substackcdn.com/image/fetch/$s_!GMUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8361c095-6e06-410a-aa53-433a94c43440_1752x1204.png 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 aria-hidden="true" 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><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><hr></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><div><hr></div><h2><strong>Good to know</strong></h2><ul><li><p><a href="https://x.com/bcherny/status/2039421575422980329">Claude Code now has a No Flicker mode</a>. It reduces screen flicker and keeps memory usage stable in long chats. It also adds mouse support in the terminal. Check Anthropic&#8217;s announcement for more details.</p></li><li><p><a href="https://prismml.com/">Prism ML has introduced 1 bit Bonsai 8B</a>. It is a model with 1 bit weights and needs only 1.15 GB of memory. Prism says it is built for robotics, real time agents, and edge use cases. Check Prism ML&#8217;s announcement for more details.</p></li><li><p><a href="https://www.anthropic.com/research/emotion-concepts-function">Anthropic has shared new research on emotion concepts in language models</a>. The research says models can form internal emotion related representations from human text. Anthropic says these patterns can influence how Claude behaves in some cases. Check Anthropic&#8217;s research post for more details.</p></li><li><p><a href="https://www.nytimes.com/2026/04/02/technology/ai-billion-dollar-company-medvi.html">AI has helped a solo founder build a $1.8B business. </a>Medvi is one reported example built with AI tools for coding, ads, and support. It shows how a very small team can now scale much faster with AI. Check the New York Times report for more details.</p></li><li><p><a href="https://x.com/karpathy/status/2039805659525644595">Andrej Karpathy shared a workflow for building personal knowledge bases</a> with LLMs. He uses them to turn papers, articles, repos, and images into a markdown wiki. The wiki then keeps growing through search, Q and A, and new outputs. Check Karpathy&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://x.com/pika_labs/status/2039804583862796345">Pika has released a beta video chat skill for agents</a>. It is powered by a new real time model called PikaStream 1.0. Pika says it keeps memory and personality during calls and can also support agentic tasks in the same session. Check Pika&#8217;s announcement for more details.</p></li><li><p><a href="https://x.com/bcherny/status/2038454336355999749">Boris Cherny shared practical Claude Code tips from his daily workflow</a>. He showed features like teleport, remote control, loop, schedule, hooks, and Dispatch. These help Claude Code run across devices and automate more work. Check Boris Cherny&#8217;s thread for more details.</p></li><li><p><a href="https://qwen.ai/blog?id=qwen3.5-omni">Qwen has released Qwen3.5 Omni</a>. It is a native multimodal model that can understand text, images, audio, and video. Qwen says it brings stronger multilingual support and better audio and video understanding. Check Qwen&#8217;s blog for more details</p></li><li><p><a href="https://x.com/dahou_yasser/status/2039242378809385331">Falcon has released Falcon Perception</a>. It is a vision model for referring expression segmentation. Along with it, they also released Falcon OCR, a 0.3B OCR model. Falcon says it performs on par with much larger models. Check the Falcon&#8217;s post for more details.</p></li><li><p><a href="https://x.com/Zai_org/status/2039371126984360085">Z.ai has introduced GLM 5V Turbo, a vision model built for coding</a>. It can understand images, video, text, and files as input. Z.ai says it is built for multimodal coding tasks and can work with agents like OpenClaw. Check Z.ai&#8217;s docs for more details</p></li></ul><p>That&#8217;s it from us with this edition. We hope you are going away with a ton of new information. Lastly, share this newsletter with your colleagues and pals if you find it valuable. A subscription to the newsletter will be awesome if you are reading it for the first time.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/dev-catch-up-105-gemma-4-qwen36-plus?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item></channel></rss>