<?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>Wed, 29 Jul 2026 07:03:06 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[[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><item><title><![CDATA[[Dev Catch Up # 104] - Gemini 3.1 Flash Live, Claude's Computer Use, SORA gets shut down, HF hf-mount, TurboQuant, CC Cheat Sheet, Email.md, Auto-Mode in CC, LiteLLM Security Incident,MiroFish & 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-104-gemini-31-flash</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-104-gemini-31-flash</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 27 Mar 2026 12:36:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c1a34b11-42d0-40f7-8aeb-b7191fe82167_2500x1670.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 104th 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/models-and-research/gemini-models/gemini-3-1-flash-live/">Google has introduced Gemini 3.1 Flash Live</a>, its latest real time audio model. It is built for more natural voice conversations and better task handling. Google is rolling it out across more of its products. Check Google&#8217;s announcement for more details.</p></li><li><p><a href="https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression">Google Research has introduced TurboQuant</a>. Its a new compression method for AI models and vector search systems. It is designed to shrink memory use without hurting model accuracy. Google says TurboQuant can cut KV memory by at least 6 times. Check Google Research&#8217;s post for more details.</p></li><li><p><a href="https://huggingface.co/changelog/hf-mount">Hugging Face has introduced hf mount</a>. It allows you attach Hub storage, models, and datasets like a local file system. You can now attach a remote storage that is 100x bigger than your local disk. It may be useful for Agentic Storage. Check Hugging Face&#8217;s post for more details.</p></li><li><p><a href="https://docs.litellm.ai/blog/security-update-march-2026">LiteLLM was recently compromised in a suspected supply chain incident</a>. The team has shared a detailed report and the affected versions. It is worth checking if you use LiteLLM in production. Check LiteLLM&#8217;s security update for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/unmta/emailmd">This week&#8217;s OSS highlight is emailmd</a>. It lets you write emails in Markdown and convert them into email ready HTML. It helps to create responsive emails without writing complex HTML. 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_!glwX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!glwX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 424w, https://substackcdn.com/image/fetch/$s_!glwX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 848w, https://substackcdn.com/image/fetch/$s_!glwX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 1272w, https://substackcdn.com/image/fetch/$s_!glwX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!glwX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png" width="1456" height="1249" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1249,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:378348,&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/192267873?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.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_!glwX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 424w, https://substackcdn.com/image/fetch/$s_!glwX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 848w, https://substackcdn.com/image/fetch/$s_!glwX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.png 1272w, https://substackcdn.com/image/fetch/$s_!glwX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78d20d49-bcab-40a4-b3e9-69b90241aaa7_1742x1494.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.com/soraofficialapp/status/2036546752535470382">OpenAI is reportedly shutting down Sora</a>, its AI video product. They do this to free up compute for its next major model called Spud. This shows OpenAI is shifting focus back to its next big model release. Check the latest reports for more details.</p></li><li><p><a href="https://x.com/claudeai/status/2036195789601374705">Anthropic has added a new computer use feature to Claude</a>. It can operate your Mac and complete real tasks. It can open apps, browse, and do desktop actions for you. It is now in research preview inside Claude Cowork and Claude Code on macOS. Check Anthropic&#8217;s post for more details.</p></li><li><p><a href="https://blog.cloudflare.com/dynamic-workers/">Cloudflare has launched Dynamic Worker Loader</a>. It lets developers run AI  code in isolated sandboxes on demand. It makes agent execution much faster and more memory efficient than containers. Check Cloudflare&#8217;s post for more details.</p></li><li><p><a href="https://www.anthropic.com/engineering/claude-code-auto-mode">Anthropic has introduced auto mode in Claude Code</a> to reduce constant permission prompts.  It can decide some file writes on its own. The goal is to reduce approval fatigue while maintaining safety controls. Check Anthropic&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://mistral.ai/news/voxtral-tts">Mistral has introduced Voxtral TTS</a>, its first text to speech model. It is built for multilingual voice generation, low latency, and custom voice support. It is available through API, Mistral Studio and Hugging Face. Check Mistral&#8217;s announcement for more details.</p></li><li><p><a href="https://github.com/666ghj/MiroFish/tree/main">MiroFish is an AI prediction engine</a> built on multi agent technology. It takes real world signals like breaking news, policy drafts, or financial data and builds a parallel digital world for simulation. So teams can test possible future scenarios in a digital sandbox. Check the GitHub repo for more details.</p></li><li><p><a href="https://lumalabs.ai/uni-1">Luma has introduced UNI 1</a>, a new multimodal model for image generation. It is built for better image understanding, editing, and reference based generation. Luma says it performs well across image quality. Its API access is coming soon. Check Luma&#8217;s UNI 1 page for more details.</p></li><li><p>There is a <a href="https://cc.storyfox.cz/">Claude Code cheat sheet</a> for quick reference. It brings shortcuts, slash commands, MCP options, and recent updates into one place. It is useful if you use Claude Code often and want everything in one view. Check it out for more details.</p></li><li><p><a href="https://github.com/mozilla-ai/cq">Mozilla AI has released cq, a new open standard for shared agent learning.</a> It lets agents store, share, and query past knowledge. So they do not keep repeating the same mistakes. It is worth a look if you are exploring agent memory and team level learning. Check the GitHub repo for more details.</p></li><li><p><a href="https://blog.google/innovation-and-ai/technology/ai/lyria-3-pro">Google has introduced Lyria 3 Pro</a>. Its latest music generation model. It can create longer tracks of up to 3 minutes. It gives more control over parts like intros, verses, and choruses. This will be available in all google applications like Vertex AI, Gemini App. Check Google&#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-104-gemini-31-flash?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-104-gemini-31-flash?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-104-gemini-31-flash?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 # 103] - GPT 5.4 mini and Nano, NVIDIA's NemoClaw, OpenAI's Model Challenge, Zeroboot, AutoResearchClaw, Google’s Stitch, Cowork's Dispatch, Unsloth Studio, Mistral Small 4 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-103-gpt-54-mini-and</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-103-gpt-54-mini-and</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 20 Mar 2026 13:37:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8bbe0dd6-7cab-4de2-b676-7021d5b2ffb4_6000x3375.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 103rd 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-4-mini-and-nano/">OpenAI has released GPT 5.4 mini and nano</a>. GPT 5.4 mini is a smaller model with better coding, reasoning, multimodal understanding, and tool use. It is 2x faster than GPT 5 mini. GPT 5.4 nano is the cheaper option for smaller tasks. Check OpenAI&#8217;s announcement for more details.</p></li><li><p><a href="https://github.com/NVIDIA/NemoClaw/">NVIDIA has released NemoClaw</a>. It is an open source setup that helps you run OpenClaw assistants in a safer way. It sets up NVIDIA OpenShell for secure agent runs and supports open models like NVIDIA Nemotron. Check the NemoClaw GitHub repo for more details.</p></li><li><p><a href="https://www.minimax.io/news/minimax-m27-en">MiniMax has released M2.7</a>. It can handle project delivery, bug fixing, log analysis, and office tasks like Word, Excel, and PPT. It is also the company&#8217;s first model to take part in its own evolution. Check MiniMax&#8217;s announcement for more details.</p></li><li><p><a href="https://manus.im/blog/manus-my-computer-desktop">Manus has introduced My Computer</a>. Its a Desktop app. It works with local files, folders, tools, and apps. It can run terminal commands, edit files, and handle desktop tasks with your approval. It is available now for macOS and Windows users. Check Manus&#8217;s announcement for more details</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p><a href="https://github.com/aiming-lab/AutoResearchClaw">This week&#8217;s OSS highlight is AutoResearchClaw</a>. It is an open source research agent. It turns a research idea into a full paper. It can search papers from OpenAlex, Semantic Scholar, and arXiv and generate experiments, charts, reviews, and conference ready LaTeX output. It is useful for developers and researchers who want to test ideas faster. 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_!aRCm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aRCm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 424w, https://substackcdn.com/image/fetch/$s_!aRCm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 848w, https://substackcdn.com/image/fetch/$s_!aRCm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 1272w, https://substackcdn.com/image/fetch/$s_!aRCm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aRCm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png" width="1456" height="991" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:991,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2138922,&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/191551864?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.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_!aRCm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 424w, https://substackcdn.com/image/fetch/$s_!aRCm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 848w, https://substackcdn.com/image/fetch/$s_!aRCm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.png 1272w, https://substackcdn.com/image/fetch/$s_!aRCm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26e23ca-7617-43a0-9a0f-a04107ae3ca6_1748x1190.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-103-gpt-54-mini-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-103-gpt-54-mini-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><a href="https://x.com/felixrieseberg/status/2034005731457044577">Anthropic is shipping Dispatch in Claude Cowork as a research preview</a>. It gives you one persistent conversation with Claude that runs on your computer. You can message it from your phone and come back later to finished work. To try it, download Claude Desktop and pair your phone.</p></li><li><p><a href="https://unsloth.ai/docs/new/studio">Unsloth has introduced Unsloth Studio</a>. It is an open source web UI for working with open models locally. You can run models, train them, and export them from one place. It also supports files like PDF, CSV, JSON, and DOCX for training. Check Unsloth&#8217;s docs for more details.</p></li><li><p><a href="https://stitch.withgoogle.com/">Google has updated Stitch</a>. It turns prompts into UI. It comes with new canvas, a design agent, voice support, and DESIGN.md for reusing design rules across tools. It also supports integrations through MCP and SDKs. Check Google&#8217;s Stitch announcement for more details.</p></li><li><p><a href="https://cursor.com/blog/composer-2">Cursor has introduced Composer 2</a>. Cursor says it performs better than earlier Composer versions on coding benchmarks. Check Cursor&#8217;s announcement for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://openai.com/index/parameter-golf/">OpenAI has launched a Challenge called Parameter Golf</a>. It asks people to train the best language model that fits in 16MB and trains in under 10 minutes on 8xH100s. OpenAI is also offering compute credits. The challenge runs from March 18 to April 30. <a href="https://x.com/openai/status/2034315401438580953?s=46&amp;t=icC0fizZK8E3ONsDVuGFWA">Check OpenAI&#8217;s post</a> for more info. </p></li><li><p><a href="https://github.com/zerobootdev/zeroboot">Zeroboot creates sandboxes for AI agents very fast</a>. It can start VM sandboxes in less than a millisecond. The repo also includes SDKs and self hosting docs. It is still a prototype, so it is not ready for production yet. Check the Zeroboot GitHub repo for more details.</p></li><li><p><a href="https://x.com/MicrosoftAI/status/2034661558492557386?s=20">Microsoft has introduced MAI Image 2</a>. It is their new image model built for creative work. It improves photorealism, image text generation, and detailed scene creation. It is available now in MAI Playground, Copilot and Bing Image Creator. Check Microsoft&#8217;s announcement for more details.</p></li><li><p><a href="https://docs.z.ai/guides/llm/glm-5-turbo">Z.AI has released GLM 5 Turbo</a>. It is built for OpenClaw style agent tasks. It supports tool calling, long chain tasks, MCP, and a 200K context window. Check Z.AI&#8217;s docs for more details.</p></li><li><p><a href="https://mistral.ai/news/mistral-small-4">Mistral has released Mistral Small 4</a>. It brings reasoning, coding, and image understanding into one system. It combines capabilities from Mistral&#8217;s earlier model families. It comes with a 256k context window and is open source. Check Mistral&#8217;s announcement and docs for more details.</p></li><li><p><a href="https://x.com/worldnetwork/status/2033923684768092436">World has introduced AgentKit</a>. It adds human verification for agents. It is powered by x402 and built by Coinbase and Cloudflare. The goal is to make agent automation more trusted. <a href="https://docs.world.org/agents/agent-kit/integrate">Check World&#8217;s announcement and docs for more details</a>.</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-103-gpt-54-mini-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-103-gpt-54-mini-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-103-gpt-54-mini-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 # 102] - Gemini Embedding 2, Andrew Ng's Context Hub, Nemotron 3 Super, Perplexity's Personal Computer, gstack, AMI Labs, Agent 4, Karpathy's Auto Research, RCLI-Voice AI for Mac & 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-102-gemini-embedding</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-102-gemini-embedding</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 13 Mar 2026 13:45:15 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bb571fd5-650a-4e59-8508-ce6398bae7e6_7839x5228.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 102nd 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 8700+ 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>Google has released Gemini Embedding 2, its first natively multimodal embedding model. It can map text, images, video, audio, and documents into one embedding space. This is useful for multimodal RAG, search, and retrieval use cases. Check Google&#8217;s <a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2">Gemini Embedding 2 announcement</a> for more details.</p></li><li><p><a href="https://github.com/andrewyng/context-hub">Andrew Ng has released Context Hub</a>. It helps coding agents use curated and versioned docs through a CLI. It is designed to reduce API hallucinations and help agents improve across tasks. Check the Context Hub GitHub repo for more details.</p></li><li><p><a href="https://blogs.nvidia.com/blog/nemotron-3-super-agentic-ai/">NVIDIA has released Nemotron 3 Super</a>, a new open 120B model for agentic AI. It is built for long and complex agent workflows. It supports a 1 million token context window and higher throughput. Check NVIDIA&#8217;s Nemotron 3 Super announcement for more details.</p></li><li><p><a href="https://www.perplexity.ai/personal-computer-waitlist">Perplexity has opened the waitlist for Personal Computer</a>. It brings Perplexity Computer and Comet Assistant to your own system. Perplexity says sensitive actions need your approval and all actions are logged. Check Perplexity&#8217;s page for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p>This week we are featuring RCLI. It is an on device voice AI for macOS. You can control macOS actions with voice and also query your documents with voice. No cloud and no API keys. Check the <a href="https://github.com/RunanywhereAI/RCLI">RCLI GitHub repo</a> 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_!exMZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!exMZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 424w, https://substackcdn.com/image/fetch/$s_!exMZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 848w, https://substackcdn.com/image/fetch/$s_!exMZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!exMZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!exMZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png" width="1456" height="1011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1011,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:592999,&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/190801414?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.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_!exMZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 424w, https://substackcdn.com/image/fetch/$s_!exMZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 848w, https://substackcdn.com/image/fetch/$s_!exMZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!exMZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d28e742-a294-4d8a-ab9a-1dcc1f4e8897_1736x1206.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-102-gemini-embedding?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-102-gemini-embedding?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>Cloudflare has added a new /crawl endpoint in Browser Rendering. It lets developers <a href="https://developers.cloudflare.com/changelog/post/2026-03-10-br-crawl-endpoint/">crawl an entire website with one API call</a>. It returns the content in HTML, Markdown, and structured JSON. Check Cloudflare&#8217;s post for more details.</p></li><li><p><a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/03/09/copilot-cowork-a-new-way-of-getting-work-done">Microsoft has introduced Copilot Cowork</a>. It helps Copilot turn a request into a plan and take action. It works using signals from Microsoft 365 apps like Outlook, Teams, and Excel. Check Microsoft&#8217;s post for more details.</p></li><li><p><a href="https://openai.com/form/codex-for-oss/">OpenAI has opened applications for Codex for Open Source</a>. Selected maintainers get ChatGPT Pro with Codex, Codex Security, and API credits. Check OpenAI&#8217;s page for more details.</p></li><li><p><a href="https://claude.com/platform/marketplace">Anthropic has launched Claude Marketplace</a>. It allows customers to buy Claude powered tools from partners like GitLab, Replit, and Snowflake using their Anthropic commitment. Check Anthropic&#8217;s page for more details.</p></li><li><p><a href="https://openai.com/index/new-ways-to-learn-math-and-science-in-chatgpt/">OpenAI has added interactive learning for math and science in ChatGPT.</a> Now you can learn concepts with visual explanations inside ChatGPT. This makes formulas and graphs easier to understand. Check OpenAI&#8217;s post for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p><a href="https://amilabs.xyz/">Ex Meta Chief Scientist Yann LeCun has launched AMI Labs</a>. AMI Labs aims to solve the limits of standard language models by building world models. Its initial focus is on companies that run complex systems, like automotive, aerospace, biomedical, and pharma. Check the AMI Labs site for more details.</p></li><li><p><a href="https://github.com/garrytan/gstack">Y Combinator CEO Garry Tan has released gstack</a>. It brings his Claude Code setup with 6 opinionated tools for roles like CEO, Engineering Manager, Release Manager, and QA Engineer. It is built to turn one coding agent into a team of specialist workflows. Check the gstack GitHub repo for more details.</p></li><li><p><a href="https://github.com/karpathy/autoresearch">Andrej Karpathy has released autoresearch</a>. It lets AI agents run small LLM training experiments automatically on a single GPU. The agent edits the training code, runs a fixed 5 minute experiment, checks the result, and repeats. Check the autoresearch GitHub repo for more details.</p></li><li><p><a href="https://x.com/YousifAstar/status/2032214543292850427">Came across this X post where a techie shared how he hacked Perplexity Computer and got access to the Claude Code API key</a> used by Perplexity. He also shared a safer pattern for handling keys in multi agent systems. Check the X post for more details.</p></li><li><p><a href="https://www.hume.ai/blog/opensource-tada">Hume has open sourced TADA, a speech language model for text to speech.</a> It is designed for faster generation and to reduce hallucinated words in speech output. This could be useful for teams building voice products. Check Hume&#8217;s post for more details.</p></li><li><p><a href="https://blog.replit.com/introducing-agent-4-built-for-creativity">Replit has introduced Agent 4</a> for more creative app building workflows. It can generate UI variants and handle multiple tasks in parallel. This helps developers move faster while building inside Replit. Check Replit&#8217;s Agent 4 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-102-gemini-embedding?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-102-gemini-embedding?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-102-gemini-embedding?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 # 101] - GPT-5.4, Gemini 3.1 Flash Lite, Google Workspace CLI, import-memory in claude, Qwen 3.5 Small models, Voice Mode in Claude Code, Claude-Max for open-source maintainers 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-101-gpt-54-gemini-31</link><guid isPermaLink="false">https://www.devshorts.in/p/dev-catch-up-101-gpt-54-gemini-31</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 06 Mar 2026 13:03:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8af0763e-585e-473e-87b5-756238f12bf2_5472x3648.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the 101st 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 8700+ 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>OpenAI has released GPT-5.4.  It is their most capable model so far. They also released GPT-5.4 Pro in ChatGPT and the API for harder tasks and long running workflows. It brings improvements in reasoning, coding, and agentic workflows. Check <a href="https://openai.com/index/introducing-gpt-5-4">OpenAI&#8217;s GPT-5.4 announcement</a> for more details.</p></li><li><p>Many tools are now moving to the CLI, so agents can use them. Google Workspace released Workspace CLI. It lets you access Gmail, Drive, Docs, and Calendar directly from the terminal. The engineer who built it also wrote a post on <a href="https://justin.poehnelt.com/posts/rewrite-your-cli-for-ai-agents/">designing CLIs for AI agents</a>. Check the  <a href="https://github.com/googleworkspace/cli">Google Workspace CLI GitHub repo</a> for installation and usage details.</p></li><li><p>Google has released Gemini 3.1 Flash Lite, a lightweight model built for high volume workloads. It focuses on speed and lower cost while still handling complex tasks. It is available through the Gemini API, AI Studio, and Vertex AI. Check Google&#8217;s <a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-flash-lite">Gemini 3.1 Flash Lite announcement</a> for more details.</p></li><li><p>Qwen introduced the Qwen 3.5 Small model series with 0.8B, 2B, 4B, and 9B sizes. These models aim to deliver stronger performance with lower compute. They also released matching Base models for research and fine tuning. Check <a href="https://x.com/Alibaba_Qwen/status/2028460046510965160">Qwen&#8217;s Twitter post</a> for more details.</p></li></ul><h2><strong>OSS Highlight of the Week</strong></h2><p>This week we are featuring Hermes Agent, an open source AI agent from Nous Research. It runs on your machine. It acts as a personal agent and learns your projects. It builds skills over time. It can connect to tools like Slack, Telegram, and Discord and automate tasks on a schedule. Check the <a href="https://github.com/NousResearch/hermes-agent">Hermes Agent GitHub repo</a> to explore more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CfwB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CfwB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 424w, https://substackcdn.com/image/fetch/$s_!CfwB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 848w, https://substackcdn.com/image/fetch/$s_!CfwB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 1272w, https://substackcdn.com/image/fetch/$s_!CfwB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CfwB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png" width="1092" height="551" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:551,&quot;width&quot;:1092,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76697,&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/190051177?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.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_!CfwB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 424w, https://substackcdn.com/image/fetch/$s_!CfwB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 848w, https://substackcdn.com/image/fetch/$s_!CfwB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.png 1272w, https://substackcdn.com/image/fetch/$s_!CfwB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa51110a4-12a4-41b0-a0f0-f823eb9b283b_1092x551.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-101-gpt-54-gemini-31?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-101-gpt-54-gemini-31?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/import-memory">Anthropic introduced Import Memory in Claud</a>e. Now you can bring context from other AI tools with a simple copy paste flow. This helps Claude pick up your preferences and project context faster. Check Claude&#8217;s Import Memory page for more details.</p></li><li><p><a href="https://cursor.com/changelog/2-6">Cursor added MCP Apps</a>. It allows interactive interfaces like charts, diagrams, and whiteboards to appear directly inside Cursor. This means tools can return rich visual interfaces instead of just text responses. Check Cursor&#8217;s MCP App&#8217;s post for more details.</p></li><li><p><a href="https://newsletter.pragmaticengineer.com/p/building-claude-code-with-boris-cherny">A new interview with Boris Cherny, the creator of Claude Code</a>, explains how the tool was built and how developers are using it today. It covers workflows like running parallel agents and more. Check the Pragmatic Engineer post for the full interview.</p></li><li><p>If you are building LLMs, this post is worth reading. It explains <a href="https://blog.bytebytego.com/p/the-architecture-behind-open-source">how open weight LLMs are built</a>. It covers ideas like MoE models, active parameters, and training choices in a simple way. Check the full post for more details.</p></li><li><p><a href="https://www.reuters.com/business/openai-is-developing-alternative-microsofts-github-information-reports-2026-03-03">OpenAI is reportedly building a GitHub riva</a>l. The project is still in the early stages. It may be offered to OpenAI&#8217;s existing customers. The move comes after several GitHub outages that disrupted developer workflows in recent months. Check the report for more details.</p></li></ul><h2><strong>Notable FYIs</strong></h2><ul><li><p>OpenAI released Symphony. It turns project work into isolated implementation runs. It spawns agents to handle the tasks. The agents complete the work and provide proof of execution. This lets teams manage the work instead of supervising coding agents. Check <a href="https://github.com/openai/symphony">OpenAI&#8217;s Symphony</a> for more details.</p></li><li><p>The much awaited <a href="https://x.com/trq212/status/2028628570692890800">Voice Mode is rolling out in Claude Code</a>. It lets developers talk to Claude directly instead of typing prompts. The feature is currently live for a small percentage of users and will roll out more broadly in the coming weeks. Check the post for early demos and rollout details</p></li><li><p><a href="https://claude.com/contact-sales/claude-for-oss">Anthropic offers 6 months of free Claude Max access for eligible open source maintainers and contributors</a>. The goal is to support developers who maintain important OSS projects. Check the Claude for OSS page to see eligibility and application details.</p></li><li><p>Cursor introduced Automations. They can run on a schedule or based on events like Slack messages, GitHub PRs, Linear issues, and PagerDuty incidents. You can also configure your own custom events using webhooks. Check <a href="https://cursor.com/blog/automations">Cursor&#8217;s Automations post</a> for more details.</p></li><li><p>This Substack post talks about <a href="https://newsletter.pragmaticengineer.com/p/ai-tooling-2026">AI tooling for software engineers in 2026</a>. It shows which tools developers use the most. It also explains how common AI has become in daily development work. Check the Pragmatic Engineer post for the full breakdown.</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-101-gpt-54-gemini-31?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-101-gpt-54-gemini-31?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-101-gpt-54-gemini-31?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item></channel></rss>