<?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[DevOps Bulletin]]></title><description><![CDATA[Weekly newsletter covering the latest news, tutorials, and devtools in the DevOps, AI, FinOps, and Security space!]]></description><link>https://www.devopsbulletin.com</link><image><url>https://substackcdn.com/image/fetch/$s_!WEyW!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c73a12d-9a65-4693-aa0a-3c71b07211fd_1024x1024.png</url><title>DevOps Bulletin</title><link>https://www.devopsbulletin.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 17 Sep 2026 09:39:35 GMT</lastBuildDate><atom:link href="https://www.devopsbulletin.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Mohamed Labouardy]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[devopsbulletin@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[devopsbulletin@substack.com]]></itunes:email><itunes:name><![CDATA[Mohamed Labouardy]]></itunes:name></itunes:owner><itunes:author><![CDATA[Mohamed Labouardy]]></itunes:author><googleplay:owner><![CDATA[devopsbulletin@substack.com]]></googleplay:owner><googleplay:email><![CDATA[devopsbulletin@substack.com]]></googleplay:email><googleplay:author><![CDATA[Mohamed Labouardy]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Digest #231: Jenkins is Dead? GitHub Actions Alternative, 1 in 10 LiteLLM Gateways Still Use the Demo Key, Spotify's 90% Token Cut and Git Configs That Hijack Claude Code]]></title><description><![CDATA[Also: how Datadog absorbed 20x more Git traffic from CI without slowing down, the benchmark that says RTK doesn't make AI coding cheaper, the Karpenter change that quietly turned on cross-AZ billing.]]></description><link>https://www.devopsbulletin.com/p/digest-231-jenkins-is-dead-github</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-231-jenkins-is-dead-github</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 11 Sep 2026 18:05:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ji2M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><span>A team pointed hundreds of Codex and DeepSeek agents at two PaperCut CVEs and compromised 440+ servers at 395 organizations in 48 countries, going from vulnerability research to the first real victim in under four hours.<br>The same week, Wiz scanned 3,074 internet-facing LiteLLM gateways and found 294 of them still accepting </span><em>sk-1234</em><span>, the master key from the docs, with a path from there to the cloud account's IAM credentials.<br>Add a</span><em> .git</em><span> config that makes Claude Code, Codex and Cursor run attacker code on clone, and this is the week the agents started attacking each other's infrastructure.</span></p></blockquote><div class="callout-block" data-callout="true"><p> If you&#8217;re interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>Faster GitHub Actions, one line to migrate</strong></h4><p><a href="https://avrea.com/?utm_source=devopsbulletin.com">Avrea</a> is CI infrastructure for GitHub Actions: you keep your workflows and swap <em>runs-on</em> for one of their labels, and jobs run on high clock-speed CPUs with a colocated cache for dependencies, Docker layers, and build artifacts, plus live observability with SSH into the runner when something is flaky.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://avrea.com/?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kKNO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 424w, https://substackcdn.com/image/fetch/$s_!kKNO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 848w, https://substackcdn.com/image/fetch/$s_!kKNO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 1272w, https://substackcdn.com/image/fetch/$s_!kKNO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kKNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png" width="1456" height="777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:777,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1357040,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://avrea.com/?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/215239531?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.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_!kKNO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 424w, https://substackcdn.com/image/fetch/$s_!kKNO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 848w, https://substackcdn.com/image/fetch/$s_!kKNO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.png 1272w, https://substackcdn.com/image/fetch/$s_!kKNO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb4c2252-c882-4a88-aa5f-d60d97965103_1717x916.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I tested Komiser&#8217;s workflows on their runners, and the cold run went from 5min to 3min, with the Go test suite at 2min instead of 4min.<br>Free tier is 3,000 build minutes a month, on Linux, macOS and Windows - <strong><a href="https://avrea.com/?utm_source=devopsbulletin.com">Try Avrea for free</a></strong></p><h4><strong>My take: what Spotify did to cut Claude Code tokens by 90%, and what you can copy</strong></h4><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Upgrade&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This post has bonus content for paid subscribers. Upgrade to get full access.</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="Upgrade"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://thehackernews.com/2026/09/papercut-attacker-uses-hundreds-of-ai.html?utm_source=devopsbulletin.com">PaperCut attacker uses hundreds of AI agents to compromise 440+ instances</a></strong></p></li><li><p><strong><a href="https://www.wiz.io/blog/off-guard-breaking-litellm-from-authentication-bypass-to-cloud-compromise?utm_source=devopsbulletin.com">Nearly 1 in 10 exposed LiteLLM gateways accepted the example sk-1234 admin key</a></strong></p></li><li><p><strong><a href="https://thehackernews.com/2026/09/malicious-git-configs-can-make-claude.html?utm_source=devopsbulletin.com">Malicious .git configs can make Claude, Codex, Cursor and other AI agents run attacker code</a></strong></p></li><li><p><strong><a href="https://engineering.atspotify.com/2026/9/portal-by-spotify-cut-my-claude-code-token-usage-by-90?utm_source=devopsbulletin.com">Portal by Spotify cut my Claude Code token usage by 90%</a></strong></p></li><li><p><strong><a href="https://www.datadoghq.com/blog/engineering/gitretriever/?utm_source=devopsbulletin.com">20x the CI traffic without getting slower: how Datadog rebuilt Git serving</a></strong></p></li><li><p><strong><a href="https://quesma.com/blog/does-rtk-make-ai-coding-cheaper/?utm_source=devopsbulletin.com">RTK reports token savings, but our cost benchmarks disagree</a></strong></p></li><li><p><strong><a href="https://www.tinybird.co/blog/what-i-learned-operating-clickhouse?utm_source=devopsbulletin.com">I&#8217;ve operated petabyte-scale ClickHouse clusters for 5 years</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://www.infoq.com/articles/chaos-engineering-ecs-payments/?utm_source=devopsbulletin.com">Implementing chaos engineering in financial payment systems on ECS</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/investigate-dms-migration-issues-with-aws-devops-agent/?utm_source=devopsbulletin.com">Investigate DMS migration issues with AWS DevOps Agent</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/09/10/kubernetes-disaster-recovery-guidance-from-three-reproducible-failure-scenarios/?utm_source=devopsbulletin.com">Kubernetes disaster recovery: guidance from three reproducible failure scenarios</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.cncf.io/blog/2026/09/10/kubernetes-disaster-recovery-guidance-from-three-reproducible-failure-scenarios/?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ji2M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 424w, https://substackcdn.com/image/fetch/$s_!ji2M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 848w, https://substackcdn.com/image/fetch/$s_!ji2M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 1272w, https://substackcdn.com/image/fetch/$s_!ji2M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ji2M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png" width="1456" height="527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Figure 8: Two independent failure domains&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.cncf.io/blog/2026/09/10/kubernetes-disaster-recovery-guidance-from-three-reproducible-failure-scenarios/?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Figure 8: Two independent failure domains" title="Figure 8: Two independent failure domains" srcset="https://substackcdn.com/image/fetch/$s_!ji2M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 424w, https://substackcdn.com/image/fetch/$s_!ji2M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 848w, https://substackcdn.com/image/fetch/$s_!ji2M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.png 1272w, https://substackcdn.com/image/fetch/$s_!ji2M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8fe023f-068c-479f-9bc6-fac3f711ed8a_1880x680.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://www.cncf.io/blog/2026/09/08/distributed-tracing-for-ci-pipelines-without-touching-a-single-workflow-file/?utm_source=devopsbulletin.com">Distributed tracing for CI pipelines without touching a single workflow file</a></strong></p></li><li><p><strong><a href="https://awsfundamentals.com/blog/cross-az-traffic-karpenter?utm_source=devopsbulletin.com">The Karpenter change that quietly turned on cross-AZ traffic charges</a></strong></p></li><li><p><strong><a href="https://embracethered.com/blog/posts/2026/breaking-claude-code-opus-5-and-automode?utm_source=devopsbulletin.com">Breaking Claude Code Opus 5 auto mode: RCE from a website summary</a></strong></p></li><li><p><strong><a href="https://hackernoon.com/what-sres-should-automate-and-never-automate-with-ai?utm_source=devopsbulletin.com">What SREs should automate, and never automate, with AI</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/security/automate-iam-identity-center-governance-with-continuous-discovery-and-reporting?utm_source=devopsbulletin.com">Automate IAM Identity Center governance with continuous discovery and reporting</a></strong></p></li><li><p><strong><a href="https://oneuptime.com/blog/post/2026-02-23-how-to-handle-terraform-cicd-for-multiple-environments/view?utm_source=devopsbulletin.com">How to handle Terraform CI/CD for multiple environments</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-9d9PQ1hrhBk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;9d9PQ1hrhBk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/9d9PQ1hrhBk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-LbxQqAuQ4Xk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LbxQqAuQ4Xk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LbxQqAuQ4Xk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/tobi/walgit?utm_source=devopsbulletin.com">walgit</a></strong> hosts git repositories from a single binary in front of an S3 or GCS bucket, with no database, no leader, and no local state that matters.</p></li><li><p><strong><a href="https://github.com/google/mantis?utm_source=devopsbulletin.com">Mantis</a></strong> gives coding agents security review skills to find, reproduce, and patch vulnerabilities on their own.</p></li><li><p><strong><a href="https://github.com/cloud-in-a-bottle/cloud-in-a-bottle?utm_source=devopsbulletin.com">Cloud in a Bottle</a></strong> deploys and shares web apps on a server you control, with rootless hardened containers and one login for all of them.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/cloud-in-a-bottle/cloud-in-a-bottle?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nK5J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 424w, https://substackcdn.com/image/fetch/$s_!nK5J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 848w, https://substackcdn.com/image/fetch/$s_!nK5J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 1272w, https://substackcdn.com/image/fetch/$s_!nK5J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nK5J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png" width="709" height="475" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:475,&quot;width&quot;:709,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128208,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/cloud-in-a-bottle/cloud-in-a-bottle?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/215239531?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.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_!nK5J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 424w, https://substackcdn.com/image/fetch/$s_!nK5J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 848w, https://substackcdn.com/image/fetch/$s_!nK5J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.png 1272w, https://substackcdn.com/image/fetch/$s_!nK5J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed4fd529-9fde-4952-950a-b18a56875cb3_709x475.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://github.com/AlexsJones/llmfit?utm_source=devopsbulletin.com">llmfit</a></strong> tells you which open-weight models your CPU, RAM, and GPU can comfortably run, and at what quantization.</p></li><li><p><strong><a href="https://github.com/vvrnv/argo9s?utm_source=devopsbulletin.com">argo9s</a></strong> monitors Argo CD applications in real time from a K9s-style terminal UI.</p></li><li><p><strong><a href="https://github.com/sealandseacat/dbmask?utm_source=devopsbulletin.com">dbmask</a></strong> finds the sensitive columns in a SQL database, masks them with deterministic fakes, and verifies the masking actually happened.</p></li><li><p><strong><a href="https://github.com/openslop/nightshift?utm_source=devopsbulletin.com">Nightshift</a></strong> wakes your coding agent at night, hands it one small job at a time, and leaves pull requests for the morning.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KdPs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KdPs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KdPs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KdPs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KdPs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KdPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg" width="352" height="421.97802197802196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1001,&quot;resizeWidth&quot;:352,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!KdPs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!KdPs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!KdPs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!KdPs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e6333d1-d397-4c17-874d-4252ebdfce6c_1001x1200.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="callout-block" data-callout="true"><p>Want to reach out to sponsor the newsletter? <a href="https://workspace.passionfroot.me/devopsbulletin">Book a slot</a> - Q4 dates are open.</p></div>]]></content:encoded></item><item><title><![CDATA[Digest #230: AWS root accounts sprayed at 150+ orgs, Shai-Hulud hunts 469 secret paths, Nvidia buys Hugging Face and Kubernetes scales to zero]]></title><description><![CDATA[Also inside: a Cilium bug made pods take 90s to start, what happened when someone broke a K8s cluster on purpose to test AI debugging agents, and how GitHub cut Copilot's bill without making it dumber]]></description><link>https://www.devopsbulletin.com/p/digest-230-aws-root-accounts-sprayed</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-230-aws-root-accounts-sprayed</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 04 Sep 2026 18:26:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-DSB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://link.svix.com/dobulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R46G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 424w, https://substackcdn.com/image/fetch/$s_!R46G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 848w, https://substackcdn.com/image/fetch/$s_!R46G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 1272w, https://substackcdn.com/image/fetch/$s_!R46G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R46G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png" width="184" height="52.5928338762215" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:351,&quot;width&quot;:1228,&quot;resizeWidth&quot;:184,&quot;bytes&quot;:51353,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://link.svix.com/dobulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/214129746?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.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_!R46G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 424w, https://substackcdn.com/image/fetch/$s_!R46G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 848w, https://substackcdn.com/image/fetch/$s_!R46G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 1272w, https://substackcdn.com/image/fetch/$s_!R46G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70ed2a93-98f6-450f-8383-92714fb84435_1228x351.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p><span>Someone spent a month knocking on the root account of more than 150 AWS organizations, and Datadog's writeup is worth reading precisely because every single attempt failed. The interesting part is that the attackers already knew the root email addresses, which makes this a failed campaign built on successful reconnaissance.<br>Meanwhile Shai-Hulud came back checking 469 places for credentials instead of 189, Nvidia agreed to buy Hugging Face for about $13 billion, and Kubernetes quietly shipped the thing plenty of teams have been faking with cron jobs for years.</span></p></blockquote><div class="callout-block" data-callout="true"><p> If you&#8217;re interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>One webhook platform for your agents and your customers</strong></h4><p>Most AI agents can&#8217;t receive a webhook: they run on a laptop, behind a VPN, or in a sandbox that blocks inbound traffic.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://link.svix.com/dobulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jhaE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!jhaE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!jhaE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!jhaE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jhaE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126599,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://link.svix.com/dobulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/214129746?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.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_!jhaE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!jhaE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!jhaE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!jhaE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1662fb53-3998-40bb-a956-3b9b2990157f_1200x640.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><a href="https://link.svix.com/dobulletin">Svix Ingest</a> takes events from Stripe, GitHub, incident.io, or anything else that sends webhooks, and your agent pulls them over an outbound HTTPS connection a few seconds later. No public URL, no tunnel, and nothing lost while it was offline.</p><p><strong><a href="https://link.svix.com/dobulletin">Try Svix for free</a></strong></p><h4><strong>My take: three frontier models in three days</strong></h4><p>Every big lab shipped this week. <a href="https://www.anthropic.com/claude-fable-and-mythos-5-1?utm_source=devopsbulletin.com">Claude Fable 5.1</a>, <a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/3-8-flash-and-3-8-flash-cyber/?utm_source=devopsbulletin.com">Gemini 3.8 Flash</a>, and <a href="https://openai.com/index/gpt-6-astra/?utm_source=devopsbulletin.com">GPT-6 Astra</a>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Upgrade&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This post has bonus content for paid subscribers. Upgrade to get full access.</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="Upgrade"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://securitylabs.datadoghq.com/articles/aws-root-user-bruteforce-campaign/?utm_source=devopsbulletin.com">Password spraying hit AWS root accounts at 150+ organizations</a></strong></p></li><li><p><strong><a href="https://thehackernews.com/2026/09/shai-huluds-reach-just-grew-to-469.html?utm_source=devopsbulletin.com">Shai-Hulud now scans 469 credential locations, up from 189</a></strong></p></li><li><p><strong><a href="https://www.cnbc.com/2026/09/03/nvidia-agrees-to-buy-hugging-face-for-almost-13-billion-ai-expansion.html?utm_source=devopsbulletin.com">Nvidia agrees to buy Hugging Face for almost $13 billion</a></strong></p></li><li><p><strong><a href="https://kubernetes.io/blog/2026/09/02/kubernetes-v1-37-hpa-scale-to-zero-beta/?utm_source=devopsbulletin.com">Kubernetes v1.37 can scale workloads to zero with the HorizontalPodAutoscaler</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/architecture/mcp-went-stateless-is-your-aws-mcp-server-deployment-well-architected/?utm_source=devopsbulletin.com">MCP went stateless, so your AWS deployment can drop sticky sessions</a></strong></p></li><li><p><strong><a href="https://github.blog/ai-and-ml/github-copilot/how-we-make-ai-coding-more-cost-efficient-without-sacrificing-task-quality?utm_source=devopsbulletin.com">How GitHub cut Copilot&#8217;s inference bill without hurting task quality</a></strong></p></li><li><p><strong><a href="https://blog.cloudflare.com/cache-transcoding/?utm_source=devopsbulletin.com">Saving petabytes of cache storage with Zstandard and Pingora</a></strong></p></li><li><p><strong><a href="https://people.kernel.org/monsieuricon/creepy-crawlies?utm_source=devopsbulletin.com">AI scrapers are now most of kernel.org&#8217;s traffic</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/security/detecting-multi-stage-attacks-on-aws-a-guide-to-cross-service-signal-correlation/?utm_source=devopsbulletin.com">Detecting multi-stage attacks on AWS by correlating signals across services</a></strong></p></li><li><p><strong><a href="https://spacelift.io/blog/terraform-observability?utm_source=devopsbulletin.com">Terraform observability: drift detection, TF_LOG and plan metrics in practice</a></strong></p></li><li><p><strong><a href="https://blog.jetbrains.com/go/2026/09/02/how-to-handle-errors-in-go/?utm_source=devopsbulletin.com">How to handle errors in Go</a></strong></p></li><li><p><strong><a href="https://blog.gitguardian.com/aws-s3-bucket-security/?utm_source=devopsbulletin.com">AWS S3 bucket security: finding the secrets that live outside Git</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/optimize-eks-operations-with-agents-reduce-mttr-with-aws-devops-agent-and-a-kubernetes-operator?utm_source=devopsbulletin.com">Cutting EKS MTTR with the AWS DevOps Agent and a Kubernetes operator</a></strong></p></li><li><p><strong><a href="https://marmelab.com/blog/2026/09/03/ai-agents-vs-broken-kubernetes.html?utm_source=devopsbulletin.com">Can an AI agent debug Kubernetes? I broke a cluster to find out</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!poC6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!poC6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 424w, https://substackcdn.com/image/fetch/$s_!poC6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 848w, https://substackcdn.com/image/fetch/$s_!poC6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 1272w, https://substackcdn.com/image/fetch/$s_!poC6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!poC6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp" width="2720" height="1714" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1714,&quot;width&quot;:2720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65246,&quot;alt&quot;:&quot;kubectl-ai's agentic loop: the LLM chooses tools to explore the cluster and reacts to their output&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="kubectl-ai's agentic loop: the LLM chooses tools to explore the cluster and reacts to their output" title="kubectl-ai's agentic loop: the LLM chooses tools to explore the cluster and reacts to their output" srcset="https://substackcdn.com/image/fetch/$s_!poC6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 424w, https://substackcdn.com/image/fetch/$s_!poC6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 848w, https://substackcdn.com/image/fetch/$s_!poC6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 1272w, https://substackcdn.com/image/fetch/$s_!poC6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d244c18-1ed6-43eb-b110-67eb09ee1795_2720x1714.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://www.adyen.com/knowledge-hub/inside-cilium-cni-solving-kubernetes-pod-setup-timeouts?utm_source=devopsbulletin.com">Why pod setup started timing out after 90 seconds</a></strong></p></li><li><p><strong><a href="https://armature.tech/blog/which-tools-coding-agents-install?utm_source=devopsbulletin.com">Which tools do Claude, Codex and Cursor reach for?</a></strong></p></li><li><p><strong><a href="https://blog.crazy-goat.com/en/colima-php-fpm-segfault-exit-139/?utm_source=devopsbulletin.com">I spent a full day on a &#8220;five-minute&#8221; Docker migration</a></strong></p></li><li><p><strong><a href="https://bdrouvot.github.io/2026/08/20/welcome-to-pg-shmemviz-postgresql-shared-memory-visualizer/?utm_source=devopsbulletin.com">PostgreSQL shared memory visualizer</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/build-your-own-continuous-modernization-pipeline-with-aws-transform-custom?utm_source=devopsbulletin.com">Build your own continuous modernization pipeline with AWS Transform custom</a></strong></p></li><li><p><strong><a href="https://newrelic.com/blog/observability/gcp-cost-optimization-tools?utm_source=devopsbulletin.com">Choosing GCP cost optimization tools that match your environment</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-bAsogRKeLnY" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;bAsogRKeLnY&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/bAsogRKeLnY?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-MVo3P-D7eSc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;MVo3P-D7eSc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/MVo3P-D7eSc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/jayminwest/warren?utm_source=devopsbulletin.com">Warren</a></strong> runs coding agents as managed infrastructure with isolation, spend limits, and Git delivery instead of terminal sessions.</p></li><li><p><strong><a href="https://github.com/jfrog/boost?utm_source=devopsbulletin.com">Boost</a></strong> compresses the noisy output of the commands your coding agent runs so it keeps the errors and timings without the log spam.</p></li><li><p><strong><a href="https://github.com/ZSvirt/zsvirt?utm_source=devopsbulletin.com">ZSvirt</a></strong> runs and manages KVM virtual machines from a single web console, including VMware migration.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/ZSvirt/zsvirt?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FNkO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 424w, https://substackcdn.com/image/fetch/$s_!FNkO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 848w, https://substackcdn.com/image/fetch/$s_!FNkO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 1272w, https://substackcdn.com/image/fetch/$s_!FNkO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FNkO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png" width="827" height="467" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:467,&quot;width&quot;:827,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131633,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/ZSvirt/zsvirt?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/214129746?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.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_!FNkO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 424w, https://substackcdn.com/image/fetch/$s_!FNkO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 848w, https://substackcdn.com/image/fetch/$s_!FNkO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.png 1272w, https://substackcdn.com/image/fetch/$s_!FNkO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d7d8de3-8771-4287-95a4-5231cb7b80d7_827x467.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><ul><li><p><strong><a href="https://github.com/rootprint/rootprint?utm_source=devopsbulletin.com">Rootprint</a></strong> searches logs and traces directly from object storage, so you can self-host log management instead of renting it.</p></li><li><p><strong><a href="https://github.com/pgrundev/pgterm?utm_source=devopsbulletin.com">pgterm</a></strong> monitors every Postgres database you own from a single terminal dashboard and flags those that need attention.</p></li><li><p><strong><a href="https://github.com/bjarneo/ku?utm_source=devopsbulletin.com">ku</a></strong> browses Kubernetes resources, follows logs, and drops you into pods from a keyboard-driven terminal UI.</p></li><li><p><strong><a href="https://github.com/srelens/srelens?utm_source=devopsbulletin.com">srelens</a></strong> combines cluster browsing, logs, exec, and port forwarding into a single local desktop workspace built for engineers and agents alike.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-DSB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-DSB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 424w, https://substackcdn.com/image/fetch/$s_!-DSB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 848w, https://substackcdn.com/image/fetch/$s_!-DSB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 1272w, https://substackcdn.com/image/fetch/$s_!-DSB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-DSB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png" width="584" height="320.6690909090909" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:825,&quot;resizeWidth&quot;:584,&quot;bytes&quot;:249680,&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.devopsbulletin.com/i/214129746?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.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_!-DSB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 424w, https://substackcdn.com/image/fetch/$s_!-DSB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 848w, https://substackcdn.com/image/fetch/$s_!-DSB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.png 1272w, https://substackcdn.com/image/fetch/$s_!-DSB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16905a1b-87b4-48d6-bb3a-e4e22d44b37a_825x453.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="callout-block" data-callout="true"><p>Want to reach out to sponsor the newsletter? <a href="https://workspace.passionfroot.me/devopsbulletin">Book a slot</a> - Q4 dates are open.</p></div>]]></content:encoded></item><item><title><![CDATA[Digest #229: AWS acquires DuckDB, Cloudflare frees 100TB of RAM, your executable as a SQLite database and on-call as theatre]]></title><description><![CDATA[Also inside: a $500-a-month AI security analyst built on AWS, Databricks running 2,000 AI incident investigations a day, and proof that plan mode doesn't make AI-written code any safer.]]></description><link>https://www.devopsbulletin.com/p/digest-229-aws-acquires-duckdb-cloudflare</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-229-aws-acquires-duckdb-cloudflare</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 28 Aug 2026 17:48:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vQx3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><span>AWS signed a deal this week to acquire DuckLabs, the ~30-person Amsterdam team behind DuckDB, and the timing is the part worth staring at: it landed nine days after DuckDB previewed v2.0 with a client/server protocol.<br>Also, Cloudflare shaved 533 bytes off every DNS cache entry and got 100 terabytes of RAM back across its fleet, and I shared a good case for shipping your executables as SQLite databases.</span></p></blockquote><div class="callout-block" data-callout="true"><p> If you&#8217;re interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>My take: what AWS actually bought when it bought DuckDB</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A1Wi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A1Wi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!A1Wi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!A1Wi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!A1Wi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A1Wi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;DuckLabs &#8211; DuckLabs (DuckDB) to Join AWS, Projects to Remain Open Source :  r/aws&quot;,&quot;title&quot;:&quot;DuckLabs &#8211; DuckLabs (DuckDB) to Join AWS, Projects to Remain Open Source :  r/aws&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DuckLabs &#8211; DuckLabs (DuckDB) to Join AWS, Projects to Remain Open Source :  r/aws" title="DuckLabs &#8211; DuckLabs (DuckDB) to Join AWS, Projects to Remain Open Source :  r/aws" srcset="https://substackcdn.com/image/fetch/$s_!A1Wi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 424w, https://substackcdn.com/image/fetch/$s_!A1Wi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 848w, https://substackcdn.com/image/fetch/$s_!A1Wi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 1272w, https://substackcdn.com/image/fetch/$s_!A1Wi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d7f488f-416d-4149-b5d8-b7db2144af57_1200x630.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>If you haven&#8217;t used it, DuckDB is SQLite for analytics. <em>pip install duckdb</em>, point it at a Parquet file in S3, run SQL. No cluster, no Spark job, no ticket to the data platform team. It won because most data is small. AWS&#8217;s own post says DuckDB covers the &#8220;90%+ of data queries in the world today&#8221; that run on data smaller than 1 terabyte. </p><p>Four things I&#8217;d take from it:</p><ul><li><p><strong>This is an S3 play, not a Redshift one.</strong> The announcement was signed by Andy Warfield, who runs S3.</p></li><li><p>The deal landed nine days after DuckDB previewed v2.0 with the Quack protocol, which allows any DuckDB process to serve its databases over the network. Embedded DuckDB is a developer tool. DuckDB that speaks a wire protocol is a query engine you can rent by the second.</p></li><li><p><strong>The product writes itself.</strong> Quack on top of S3 Tables and Iceberg gives you serverless SQL straight against object storage, no warehouse in the middle. That&#8217;s aimed at Databricks and Snowflake, not Redshift.</p></li><li><p><strong>AWS didn&#8217;t buy the project; it hired everyone who commits to it.</strong> No license fight, no fork, no OpenSearch-style backlash. The Foundation keeps the IP, AWS keeps the roadmap.</p></li></ul><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://blog.cloudflare.com/dns-cache-memory-optimization-1111/?utm_source=devopsbulletin.com">How we saved 100 terabytes of memory by optimizing 1.1.1.1&#8217;s DNS cache</a></strong></p></li><li><p><strong><a href="https://boristane.com/blog/on-call-is-now-theatre?utm_source=devopsbulletin.com">On-call is now theatre</a></strong></p></li><li><p><strong><a href="https://fzakaria.com/2026/08/23/your-executable-is-a-sqlite-database?utm_source=devopsbulletin.com">Your executable is a SQLite database</a></strong></p></li><li><p><strong><a href="https://www.databricks.com/blog/how-databricks-uses-ai-accelerate-incident-investigation?utm_source=devopsbulletin.com">How Databricks uses AI to accelerate incident investigation</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/08/25/stop-trying-to-learn-all-of-kubernetes-at-once?utm_source=devopsbulletin.com">Stop trying to learn all of Kubernetes at once</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/devops/from-clickops-to-governed-iac-cloudformation-drift-detection-in-practice/?utm_source=devopsbulletin.com">From clickops to governed IaC: CloudFormation drift detection in practice</a></strong></p></li><li><p><strong><a href="https://www.gremlin.com/blog/optimizing-kubernetes-pod-deployments-for-reliability-with-topology-spread-constraints?utm_source=devopsbulletin.com">Optimizing Kubernetes pod deployments for reliability with topology spread constraints</a></strong></p></li><li><p><strong><a href="https://github.blog/ai-and-ml/llms/how-to-evaluate-llms-before-production?utm_source=devopsbulletin.com">How to evaluate LLMs before production</a></strong></p></li><li><p><strong><a href="https://engineering.growtherapy.com/post/threat-hunt-ai-how-we-built-an-ai-security-analyst-on-aws-for-under-500-month?utm_source=devopsbulletin.com">How we built an AI security analyst on AWS for under $500/month</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://engineering.growtherapy.com/post/threat-hunt-ai-how-we-built-an-ai-security-analyst-on-aws-for-under-500-month?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vQx3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 424w, https://substackcdn.com/image/fetch/$s_!vQx3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 848w, https://substackcdn.com/image/fetch/$s_!vQx3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 1272w, https://substackcdn.com/image/fetch/$s_!vQx3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vQx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png" width="1148" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1148,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://engineering.growtherapy.com/post/threat-hunt-ai-how-we-built-an-ai-security-analyst-on-aws-for-under-500-month?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vQx3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 424w, https://substackcdn.com/image/fetch/$s_!vQx3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 848w, https://substackcdn.com/image/fetch/$s_!vQx3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.png 1272w, https://substackcdn.com/image/fetch/$s_!vQx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffff7dab0-ee79-4058-b3f8-e2f9d6604868_1148x810.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://securitylabs.datadoghq.com/articles/putting-models-to-the-secure-coding-test-plan-vs-default-mode/?utm_source=devopsbulletin.com">Putting models to the secure coding test: plan vs default mode</a></strong></p></li><li><p><strong><a href="https://linkerd.io/2026/06/24/federating-clusters-for-zero-downtime-kubernetes/index.html?utm_source=devopsbulletin.com">Federating clusters for zero-downtime Kubernetes</a></strong></p></li><li><p><strong><a href="https://www.kubeblogs.com/how-to-achieve-resource-level-isolation-in-kubernetes-using-a-multi-environment-node-pool-strategy/?utm_source=devopsbulletin.com">How to achieve resource-level isolation in Kubernetes using a multi-environment node pool strategy</a></strong></p></li><li><p><strong><a href="https://compliance.tf/blog/hashicorp-tfpolicy-module-source-governance?utm_source=devopsbulletin.com">HashiCorp&#8217;s tfpolicy made module source a policy decision</a></strong></p></li><li><p><strong><a href="https://blog.pamelafox.org/2026/08/building-safe-mcp-servers-for-your.html?utm_source=devopsbulletin.com">Building safe MCP servers for your PostgreSQL database</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/automating-filtered-cost-and-usage-report-exports-with-aws-data-exports/?utm_source=devopsbulletin.com">Automating filtered cost and usage report exports with AWS Data Exports</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-wowLWDe3vL4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;wowLWDe3vL4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/wowLWDe3vL4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-mLVupvbmteE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mLVupvbmteE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/mLVupvbmteE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/aleksandarskrbic/khaos?utm_source=devopsbulletin.com">Khaos</a></strong> injects the Kafka failures you normally wait for into a cluster on demand, from consumer lag and hot partitions to rebalances and broker outages.</p></li><li><p><strong><a href="https://github.com/seoes/proval?utm_source=devopsbulletin.com">Proval</a></strong> reviews your pull requests with an LLM that runs entirely inside your own network, on GitLab, Forgejo, and GitHub alike.</p></li><li><p><strong><a href="https://github.com/ahmadpiran/restoredrill?utm_source=devopsbulletin.com">restoredrill</a></strong> restores your latest Postgres backup into a throwaway container, runs your validation checks against it, and writes the JSON report an auditor actually asks for.</p></li><li><p><strong><a href="https://github.com/AWSHound/AWSHound?utm_source=devopsbulletin.com">AWSHound</a></strong> turns your AWS IAM data into a BloodHound graph, so the privilege escalation paths in your account become something you can see.</p></li><li><p><strong><a href="https://github.com/biw/cloudflare-github-actions-runner?utm_source=devopsbulletin.com">cloudflare-github-actions-runner</a></strong> runs your GitHub Actions jobs on ephemeral Cloudflare Containers you size yourself, instead of on GitHub&#8217;s runners.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fx5q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fx5q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Fx5q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Fx5q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Fx5q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fx5q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg" width="520" height="281.9924812030075" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:577,&quot;width&quot;:1064,&quot;resizeWidth&quot;:520,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Double It And Give It To The Next Person&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Double It And Give It To The Next Person" title="Double It And Give It To The Next Person" srcset="https://substackcdn.com/image/fetch/$s_!Fx5q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Fx5q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Fx5q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Fx5q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74fa506a-7383-4440-8a00-9455aeebd3f8_1064x577.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="callout-block" data-callout="true"><p>Want to reach out to sponsor the newsletter? <a href="https://workspace.passionfroot.me/devopsbulletin">Book a slot</a> - Q4 dates are open.</p></div>]]></content:encoded></item><item><title><![CDATA[Digest #228: Cloudflare's 131,000 AI code reviews a month at $0.98 each, Postgres 300x faster, Git rebuilt on S3 and Linux 7.2]]></title><description><![CDATA[Also inside: why a custom linter beats an AI reviewer, Werner Vogels on the control planes behind Aurora DSQL, and how PlanetScale backs up petabytes of Postgres in hours.]]></description><link>https://www.devopsbulletin.com/p/digest-228-cloudflares-131000-ai</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-228-cloudflares-131000-ai</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 21 Aug 2026 15:45:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cya6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Cloudflare published the actual economics of AI code review this week: 131,000 reviews a month, $0.98 each, and an 85.7% cache hit rate. Swizec&#8217;s counterpoint landed the same week, arguing that most of what those reviewers catch is a deterministic linter rule you could run in seconds for nothing. Meanwhile Cursor rebuilt Git storage on write-ahead logs in S3 to get past the limits consensus-based Spokes ran into, and pgrust rewrote the Postgres query engine with batching, operator fusion and SIMD to make analytics 300x faster.</p></blockquote><div class="pullquote"><p> If you&#8217;re interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://blog.cloudflare.com/ai-code-review?utm_source=devopsbulletin.com">Orchestrating AI code review at scale</a></strong></p></li><li><p><strong><a href="https://swizec.com/blog/stop-burning-tokens-on-code-review?utm_source=devopsbulletin.com">Stop burning tokens on code review</a></strong></p></li><li><p><strong><a href="https://cursor.com/blog/git-at-any-scale?utm_source=devopsbulletin.com">Git at any scale</a></strong></p></li><li><p><strong><a href="https://malisper.me/how-we-made-postgres-hundreds-of-times-faster-the-query-engine/?utm_source=devopsbulletin.com">Rebuilding Postgres for 300x faster analytics</a></strong></p></li><li><p><strong><a href="https://www.allthingsdistributed.com/2026/08/on-building-scalable-control-planes.html?utm_source=devopsbulletin.com">On building scalable control planes</a></strong></p></li><li><p><strong><a href="https://www.omgubuntu.co.uk/2026/08/linux-7-2-cache-aware-scheduling-ext4-btrfs?utm_source=devopsbulletin.com">Linux 7.2 brings cache-aware scheduling, faster ext4 and Btrfs</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://planetscale.com/blog/massively-parallel-postgres-backups?utm_source=devopsbulletin.com">Massively parallel Postgres backups</a></strong></p></li><li><p><strong><a href="https://awstip.com/automating-terraform-testing-from-unit-tests-to-end-to-end-validation-b10225c892b8?utm_source=devopsbulletin.com">Automating Terraform testing</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-billing-and-cost-management-dashboards-introduces-managed-dashboards-for-instant-cloud-financial-visibility/?utm_source=devopsbulletin.com">Managed AWS dashboards for instant cloud financial visibility</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-billing-and-cost-management-dashboards-introduces-managed-dashboards-for-instant-cloud-financial-visibility/?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cya6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 424w, https://substackcdn.com/image/fetch/$s_!cya6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 848w, https://substackcdn.com/image/fetch/$s_!cya6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!cya6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cya6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png" width="1456" height="865" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:865,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The Compute managed dashboard showing four widgets: Cost Per Compute Service broken down by EC2 Instances, Elastic Container Service for Kubernetes, Lambda, and others; Committed vs Flexible Compute Spend split by On Demand, Reserved, and Savings Plans; Compute Cost By Instance Type showing spend across instance families like c5.9xlarge and m7a.xlarge; and EC2 Running Hours showing monthly usage hours by type with a steady upward trend.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-billing-and-cost-management-dashboards-introduces-managed-dashboards-for-instant-cloud-financial-visibility/?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The Compute managed dashboard showing four widgets: Cost Per Compute Service broken down by EC2 Instances, Elastic Container Service for Kubernetes, Lambda, and others; Committed vs Flexible Compute Spend split by On Demand, Reserved, and Savings Plans; Compute Cost By Instance Type showing spend across instance families like c5.9xlarge and m7a.xlarge; and EC2 Running Hours showing monthly usage hours by type with a steady upward trend." title="The Compute managed dashboard showing four widgets: Cost Per Compute Service broken down by EC2 Instances, Elastic Container Service for Kubernetes, Lambda, and others; Committed vs Flexible Compute Spend split by On Demand, Reserved, and Savings Plans; Compute Cost By Instance Type showing spend across instance families like c5.9xlarge and m7a.xlarge; and EC2 Running Hours showing monthly usage hours by type with a steady upward trend." srcset="https://substackcdn.com/image/fetch/$s_!cya6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 424w, https://substackcdn.com/image/fetch/$s_!cya6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 848w, https://substackcdn.com/image/fetch/$s_!cya6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!cya6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e0af14b-708c-4bed-abbe-eeefe311189f_2182x1296.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><ul><li><p><strong><a href="https://data4sci.com/blog/building-an-advanced-agentic-harness?utm_source=devopsbulletin.com">Building an advanced agentic harness</a></strong></p></li><li><p><strong><a href="https://www.raphaelbauer.com/posts/postgresql-everything/?utm_source=devopsbulletin.com">PostgreSQL for everything</a></strong></p></li><li><p><strong><a href="https://ngrok.com/blog/probes?utm_source=devopsbulletin.com">How Kubernetes probes work</a></strong></p></li><li><p><strong><a href="https://cdn.prod.website-files.com/64eccd375717312326d818c7/6a693644b48431096abc2b9d_9b243fabb059559a41b70f60a0f77b2e_Monad_%20A%20Security%20Field%20Guide%20to%20AI%20Tooling%20Visibility_eBook.pdf?utm_source=devopsbulletin.com">A security field guide to AI tooling visibility</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/streamline-your-github-journey-with-aws-codepipeline-and-aws-devops-agent/?utm_source=devopsbulletin.com">Streamline your GitHub journey with AWS DevOps Agent</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-GNPYrGza_1E" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;GNPYrGza_1E&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/GNPYrGza_1E?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/usebruno/bruno?utm_source=devopsbulletin.com">Bruno</a></strong> replaces Postman with an offline API client that saves every request as a plain-text file, so collections branch and are reviewed in Git like the rest of your code.</p></li><li><p><strong><a href="https://github.com/chaitanyagiri/munder-difflin?utm_source=devopsbulletin.com">Munder Difflin</a></strong> runs your terminal coding CLIs as a self-coordinating team of agents on the subscriptions you already pay for.</p></li><li><p><strong><a href="https://github.com/edoardottt/secfiles?utm_source=devopsbulletin.com">secfiles</a></strong> collects wordlists and payload files for penetration testing and bug bounty work.</p></li><li><p><strong><a href="https://github.com/volcengine/OpenViking?utm_source=devopsbulletin.com">OpenViking</a></strong> is a self-evolving context database that unifies agent memory, RAG knowledge, and skills.</p></li><li><p><strong><a href="https://github.com/withastro/triagebot-action?utm_source=devopsbulletin.com">triagebot-action</a></strong> puts every new GitHub issue through reproduce, diagnose, and fix, then ships a preview release and waits for the reporter to confirm before opening the PR.</p></li><li><p><strong><a href="https://github.com/eugene1g/agent-safehouse?utm_source=devopsbulletin.com">Agent Safehouse</a></strong> sandboxes coding agents on macOS so they only reach the files and integrations they actually need.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Dq5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Dq5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Dq5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Dq5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Dq5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Dq5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg" width="276" height="416.875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:480,&quot;resizeWidth&quot;:276,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Dq5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9Dq5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9Dq5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9Dq5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8677fcb7-1862-4790-84fe-974e8c814d61_480x725.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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>Cloudflare pays $0.98 per review for AI to catch things a linter would catch for free. Which one is actually running in your pipeline today, and would you drop the other?</p>]]></content:encoded></item><item><title><![CDATA[Digest #227: Terabytes of credentials leaked in a supply chain attack, Figma's security agents, Kubernetes validation cut to 2 minutes and Docker's win that killed the company]]></title><description><![CDATA[Also inside: a Lambda that spiked an AWS bill 1,200% in one weekend, and why cloning a coding-agent repo runs code before your first prompt.]]></description><link>https://www.devopsbulletin.com/p/digest-227-terabytes-of-credentials</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-227-terabytes-of-credentials</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 14 Aug 2026 15:32:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/kmLztKueTcI" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.spacelift.io/one-promotion-model-for-every-workload?49924181-FY26%20-%20Webinar%20-%20Payfit%20-%20September%202026" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="154" height="47.69402985074627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:154,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://events.spacelift.io/one-promotion-model-for-every-workload?49924181-FY26%20-%20Webinar%20-%20Payfit%20-%20September%202026&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p>This week&#8217;s supply chain attack didn&#8217;t drain one company&#8217;s secrets, it dumped terabytes of credentials scraped from thousands of repositories into the open. Figma&#8217;s answer to that class of noise is a fleet of agents that triage alerts, query security data and write the fix, which cut their resolution time by 71%. One SRE team applied the same instinct to Kubernetes and pulled release validation from 45 minutes down to 2, and if you want a reminder that owning the tech is not the same as winning, the Docker video below is the best bedtime story of the year.</p></blockquote><h4><strong>See how PayFit promotes infra and app releases through one pipeline</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://events.spacelift.io/one-promotion-model-for-every-workload?49924181-FY26%20-%20Webinar%20-%20Payfit%20-%20September%202026" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N-L1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N-L1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N-L1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N-L1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N-L1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:419161,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://events.spacelift.io/one-promotion-model-for-every-workload?49924181-FY26%20-%20Webinar%20-%20Payfit%20-%20September%202026&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/211148051?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N-L1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N-L1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N-L1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N-L1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b0fdad-31aa-4d62-a171-a207ae4425eb_1200x640.jpeg 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Join us on September 2 (Wed) to learn how PayFit&#8217;s platform team promotes every release the same way, Kubernetes services and Lambda functions alike. One path for app and infrastructure changes, so a release candidate proves itself before the next environment. It&#8217;s how PayFit ships payroll for 22,000+ businesses - <a href="https://events.spacelift.io/one-promotion-model-for-every-workload?49924181-FY26%20-%20Webinar%20-%20Payfit%20-%20September%202026">Save your seat</a></p><div class="pullquote"><p> If you&#8217;re interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://arstechnica.com/security/2026/08/terabytes-of-credentials-leaked-in-massive-supply-chain-attack/?utm_source=devopsbulletin.com">Terabytes of credentials leaked in massive supply-chain attack</a></strong></p></li><li><p><strong><a href="https://www.figma.com/blog/how-we-secure-figmas-internal-systems-with-agents?utm_source=devopsbulletin.com">How we secure Figma&#8217;s internal systems with agents</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.figma.com/blog/how-we-secure-figmas-internal-systems-with-agents/?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GwVh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GwVh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GwVh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GwVh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GwVh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg" width="1080" height="809" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:809,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A whimsical ant-colony diagram illustrating an AI security agent orchestrating searches, summaries, data retrieval, and investigation tasks across interconnected systems.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.figma.com/blog/how-we-secure-figmas-internal-systems-with-agents/?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A whimsical ant-colony diagram illustrating an AI security agent orchestrating searches, summaries, data retrieval, and investigation tasks across interconnected systems." title="A whimsical ant-colony diagram illustrating an AI security agent orchestrating searches, summaries, data retrieval, and investigation tasks across interconnected systems." srcset="https://substackcdn.com/image/fetch/$s_!GwVh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 424w, https://substackcdn.com/image/fetch/$s_!GwVh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 848w, https://substackcdn.com/image/fetch/$s_!GwVh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!GwVh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81ac35a1-3420-4da0-9408-9b607f416b36_1080x809.jpeg 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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://cloudnativenow.com/contributed-content/how-we-cut-kubernetes-deployment-validation-from-45-minutes-to-2-minutes?utm_source=devopsbulletin.com">How we cut Kubernetes deployment validation from 45 minutes to 2 minutes</a></strong></p></li><li><p><strong><a href="https://www.rapid7.com/blog/post/dr-investigating-aws-persistence-mechanisms?utm_source=devopsbulletin.com">Investigating persistence mechanisms in AWS</a></strong></p></li><li><p><strong><a href="https://spacelift.io/blog/the-hidden-cost-of-homegrown-iac?utm_source=devopsbulletin.com">The hidden cost of homegrown IaC</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/architecture/track-generative-ai-costs-with-amazon-bedrock-inference-profiles/?utm_source=devopsbulletin.com">Track generative AI costs with Amazon Bedrock inference profiles</a></strong></p></li><li><p><strong><a href="https://medium.com/@iftekharkhan245/the-infrastructure-testing-pyramid-6ad293bbb13d?utm_source=devopsbulletin.com">The infrastructure testing pyramid</a></strong></p></li><li><p><strong><a href="https://thenewstack.io/accelerating-eks-image-pulls?utm_source=devopsbulletin.com">Pulling multi-gigabyte container images in seconds on Amazon EKS</a></strong></p></li><li><p><strong><a href="https://atomsized.com/blog/a-1200-percent-aws-cost-spike-ai-monitoring-vs-cloudwatch?utm_source=devopsbulletin.com">A 1,200% AWS cost spike: AI monitoring vs CloudWatch</a></strong></p></li><li><p><strong><a href="https://securitylabs.datadoghq.com/articles/coding-agent-project-trust-code-execution-before-first-prompt/?utm_source=devopsbulletin.com">Before the first prompt: code execution paths in trusted coding-agent projects</a></strong></p></li><li><p><strong><a href="https://omarghader.github.io/monitoring-infrastructure-guide-2026/?utm_source=devopsbulletin.com">How to build your infrastructure monitoring in 2026</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-HzXAdtVrW70" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;HzXAdtVrW70&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/HzXAdtVrW70?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-kmLztKueTcI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;kmLztKueTcI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/kmLztKueTcI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/alibaba/open-code-review?utm_source=devopsbulletin.com">OpenCodeReview</a></strong> reviews pull requests from the command line and leaves line-level comments.</p></li><li><p><strong><a href="https://github.com/dimitri/sqlfmt?utm_source=devopsbulletin.com">sqlfmt</a></strong> formats PostgreSQL queries the way gofmt formats code, aligning clause keywords on a single column.</p></li><li><p><strong><a href="https://github.com/allinurl/goaccess?utm_source=devopsbulletin.com">GoAccess</a></strong> analyzes web server logs in real time from your terminal or the browser.</p></li><li><p><strong><a href="https://github.com/TheRealYT/git-knife?utm_source=devopsbulletin.com">git-knife</a></strong> edits every commit&#8217;s message, author, and dates in a table you can click through.</p></li><li><p><strong><a href="https://github.com/tsirysndr/bsdkrun?utm_source=devopsbulletin.com">bsdkrun</a></strong> boots BSD guests, Linux OCI images, and unikernels as microVMs on macOS and Linux, with no daemon running underneath.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/tsirysndr/bsdkrun?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!04IT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 424w, https://substackcdn.com/image/fetch/$s_!04IT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 848w, https://substackcdn.com/image/fetch/$s_!04IT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 1272w, https://substackcdn.com/image/fetch/$s_!04IT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!04IT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png" width="1456" height="814" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:814,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:457003,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/tsirysndr/bsdkrun?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/211148051?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.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_!04IT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 424w, https://substackcdn.com/image/fetch/$s_!04IT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 848w, https://substackcdn.com/image/fetch/$s_!04IT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.png 1272w, https://substackcdn.com/image/fetch/$s_!04IT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1a624fb-2199-44a5-a3ea-5d8981612338_2386x1334.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://github.com/cloudflare/computer?utm_source=devopsbulletin.com">Cloudflare Computer</a></strong> provides agents with a virtual filesystem and swappable execution backends within a Durable Object.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!b0AV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!b0AV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b0AV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b0AV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b0AV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!b0AV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg" width="414" height="414.85537190082647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:968,&quot;resizeWidth&quot;:414,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/ProgrammerHumor - trulyHow&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/ProgrammerHumor - trulyHow" title="r/ProgrammerHumor - trulyHow" srcset="https://substackcdn.com/image/fetch/$s_!b0AV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 424w, https://substackcdn.com/image/fetch/$s_!b0AV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 848w, https://substackcdn.com/image/fetch/$s_!b0AV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!b0AV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa404c37-3f13-4965-b2d2-3910517d28af_968x970.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>Terabytes of credentials are now public, so I am curious where you actually stand: do you rotate CI tokens every deploy, every quarter, or only after an incident? </p>]]></content:encoded></item><item><title><![CDATA[Digest #226: OpenClaw agents with credentials to everything, Cloudflare OS, Claude as a Postgres engine and €1.5M off a multi-cloud bill]]></title><description><![CDATA[A single semicolon that gave remote code execution on github.com, poisoning an LLM through S3 Vectors metadata, and the reason COUNT(DISTINCT) quietly kills parallel queries in Postgres.]]></description><link>https://www.devopsbulletin.com/p/digest-226-openclaw-agents-with-credentials</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-226-openclaw-agents-with-credentials</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 07 Aug 2026 15:46:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kzLO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>Permiso&#8217;s teardown of the OpenClaw ecosystem is the one to read first: agents installing skills from an unvetted marketplace while holding live credentials to email, Slack and everything else they touch. Cloudflare shipped its own answer to that problem this week with Cloudflare OS, an open platform that puts guardrails around what an agent can actually reach. And if you want proof that we are all still improvising, someone wired Claude up as a Postgres query engine and it returned real rows.</p></blockquote><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://permiso.io/blog/inside-the-openclaw-ecosystem-ai-agents-with-privileged-credentials?utm_source=devopsbulletin.com">Inside the OpenClaw ecosystem: what happens when AI agents get credentials to everything</a></strong></p></li><li><p><strong><a href="https://blog.cloudflare.com/cloudflare-os?utm_source=devopsbulletin.com">Cloudflare OS: an open platform for agents, apps, and work</a></strong></p></li><li><p><strong><a href="https://www.figma.com/blog/how-figma-stays-ahead-of-vulnerabilities-with-agents?utm_source=devopsbulletin.com">How Figma stays ahead of vulnerabilities with agents</a></strong></p></li><li><p><strong><a href="https://byteofdev.com/posts/turning-claude-postgres/?utm_source=devopsbulletin.com">Turning Claude into Postgres so I can raise a Series A</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/automating-multi-cloud-cost-management-at-scale-a2as-finops-platform-powered-by-aws/?utm_source=devopsbulletin.com">Automating multi-cloud cost management at scale</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/devops/accelerate-cloudformation-development-with-the-iac-mcp-server/?utm_source=devopsbulletin.com">Accelerate CloudFormation development with the IaC MCP Server</a></strong></p></li><li><p><strong><a href="https://blog.dbtrail.com/everyone-records-the-mysql-audit-log?utm_source=devopsbulletin.com">Everyone records the MySQL audit log. Nobody reads it</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/improve-your-monthly-cloud-variance-analysis-with-a-weekly-finops-checkpoint/?utm_source=devopsbulletin.com">Improve your monthly cloud variance analysis with a weekly FinOps checkpoint</a></strong></p></li><li><p><strong><a href="https://medium.com/@paul_0307/the-multi-account-terraform-setup-nobody-talks-about-af7d92ce959d?utm_source=devopsbulletin.com">The multi-account Terraform setup nobody talks about</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://medium.com/@paul_0307/the-multi-account-terraform-setup-nobody-talks-about-af7d92ce959d" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kzLO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 424w, https://substackcdn.com/image/fetch/$s_!kzLO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 848w, https://substackcdn.com/image/fetch/$s_!kzLO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 1272w, https://substackcdn.com/image/fetch/$s_!kzLO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kzLO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png" width="1400" height="606" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:606,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://medium.com/@paul_0307/the-multi-account-terraform-setup-nobody-talks-about-af7d92ce959d&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kzLO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 424w, https://substackcdn.com/image/fetch/$s_!kzLO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 848w, https://substackcdn.com/image/fetch/$s_!kzLO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.png 1272w, https://substackcdn.com/image/fetch/$s_!kzLO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f9f1a4e-73d3-45d1-a36d-ccc4fcfde98b_1400x606.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><ul><li><p><strong><a href="https://boringsql.com/posts/distinct-in-your-count/?utm_source=devopsbulletin.com">The DISTINCT in your COUNT</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/containers/centralize-cross-account-amazon-ecs-telemetry-with-an-adot-gateway/?utm_source=devopsbulletin.com">Centralize cross-account Amazon ECS telemetry with an ADOT gateway</a></strong></p></li><li><p><strong><a href="https://www.kubeblogs.com/run-parallel-ai-agents-git-worktrees-local-setup/?utm_source=devopsbulletin.com">What it actually takes to run parallel AI agents</a></strong></p></li><li><p><strong><a href="https://www.offensai.com/blog/amazon-s3-vectors-security-llm-rag-poisoning?utm_source=devopsbulletin.com">A security analysis of Amazon S3 Vectors and its use in LLM retrieval pipelines</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-90BcMBu4QrE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;90BcMBu4QrE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/90BcMBu4QrE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/Evokoa/pgGraph?utm_source=devopsbulletin.com">pgGraph</a></strong> runs graph traversals and shortest-path queries directly on your existing Postgres tables.</p></li><li><p><strong><a href="https://github.com/nolabs-ai/nono?utm_source=devopsbulletin.com">nono</a></strong> sandboxes any AI agent behind least-privilege isolation with no setup.</p></li><li><p><strong><a href="https://github.com/rcieri/glab-tui?utm_source=devopsbulletin.com">glab-tui</a></strong> browses GitLab and GitHub issues, merge requests, pipelines, and runners without leaving your terminal.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/rcieri/glab-tui?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6aOh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 424w, https://substackcdn.com/image/fetch/$s_!6aOh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 848w, https://substackcdn.com/image/fetch/$s_!6aOh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 1272w, https://substackcdn.com/image/fetch/$s_!6aOh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6aOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png" width="1456" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:523694,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/rcieri/glab-tui?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/210217938?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.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_!6aOh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 424w, https://substackcdn.com/image/fetch/$s_!6aOh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 848w, https://substackcdn.com/image/fetch/$s_!6aOh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.png 1272w, https://substackcdn.com/image/fetch/$s_!6aOh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8e0fc0-5f2a-4fb7-a269-9593b78d3b33_1652x452.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><ul><li><p><strong><a href="https://github.com/Yamato-Security/suzaku?utm_source=devopsbulletin.com">Suzaku</a></strong> hunts threats in AWS CloudTrail logs by applying Sigma detection rules to your API call history.</p></li><li><p><strong><a href="https://link.svix.com/dobulletin">Svix</a></strong> handles webhook delivery, retries, and signing so you never have to build that layer yourself.</p></li><li><p><strong><a href="https://github.com/palamim/starboard?utm_source=devopsbulletin.com">Starboard</a></strong> keeps a terminal permanently docked beside the macOS Dock instead of hidden behind a hotkey.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tloD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tloD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tloD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tloD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tloD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tloD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg" width="446" height="473.178125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:679,&quot;width&quot;:640,&quot;resizeWidth&quot;:446,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/ProgrammerHumor - watchingVibeCodersInFutureIsScary&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/ProgrammerHumor - watchingVibeCodersInFutureIsScary" title="r/ProgrammerHumor - watchingVibeCodersInFutureIsScary" srcset="https://substackcdn.com/image/fetch/$s_!tloD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 424w, https://substackcdn.com/image/fetch/$s_!tloD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 848w, https://substackcdn.com/image/fetch/$s_!tloD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!tloD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feadddce3-4c02-4e29-a7c3-9293c507c4b6_640x679.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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>]]></content:encoded></item><item><title><![CDATA[Digest #225: GitHub Actions abuse powers a cPanel exploit wave, AWS's Claude apps gateway and auto-applied Terraform]]></title><description><![CDATA[Also: an AI SRE agent that triages incidents before you open your laptop, why your pod died of "out of ephemeral storage" on a half-empty disk, and the one Redis key no amount of sharding can save.]]></description><link>https://www.devopsbulletin.com/p/digest-225-github-actions-abuse-powers</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-225-github-actions-abuse-powers</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 31 Jul 2026 16:17:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/0G5_w2lX02o" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://events.spacelift.io/the-best-infrastructure-platform-stays-out-of-your-way?refid=DevOpsBulletin&amp;utm_campaign=49404317-FY26%20-%20Webinar%20-%20Rogo%20found%20an%20IaC%20platform%20-%20August%202026&amp;utm_source=DevOpsBulletin&amp;utm_medium=email&amp;utm_content=Email%20placement%20-%20Webinar%20-%20Rogo%20Customer%20Webinar%20-%20Variation%20A" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="154" height="47.69402985074627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:154,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://events.spacelift.io/the-best-infrastructure-platform-stays-out-of-your-way?refid=DevOpsBulletin&amp;utm_campaign=49404317-FY26%20-%20Webinar%20-%20Rogo%20found%20an%20IaC%20platform%20-%20August%202026&amp;utm_source=DevOpsBulletin&amp;utm_medium=email&amp;utm_content=Email%20placement%20-%20Webinar%20-%20Rogo%20Customer%20Webinar%20-%20Variation%20A&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p><span>Attackers turned compromised PHP repositories into a botnet this week, using GitHub Actions runners to scan and exploit cPanel and WHM servers at scale.<br>It is the clearest sign yet that your CI minutes are somebody else's free infrastructure.<br>Elsewhere, PlanetScale explains how 768 database servers manage to look like one, and AWS shipped a control plane that finally gives platform teams a policy and cost story for Claude Code.</span></p></blockquote><h4><strong>Learn Rogo&#8217;s IaC approach</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://events.spacelift.io/the-best-infrastructure-platform-stays-out-of-your-way?refid=DevOpsBulletin&amp;utm_campaign=49404317-FY26%20-%20Webinar%20-%20Rogo%20found%20an%20IaC%20platform%20-%20August%202026&amp;utm_source=DevOpsBulletin&amp;utm_medium=email&amp;utm_content=Email%20placement%20-%20Webinar%20-%20Rogo%20Customer%20Webinar%20-%20Variation%20A" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KXlW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 424w, https://substackcdn.com/image/fetch/$s_!KXlW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 848w, https://substackcdn.com/image/fetch/$s_!KXlW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!KXlW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KXlW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png" width="1456" height="777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:777,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3190557,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://events.spacelift.io/the-best-infrastructure-platform-stays-out-of-your-way?refid=DevOpsBulletin&amp;utm_campaign=49404317-FY26%20-%20Webinar%20-%20Rogo%20found%20an%20IaC%20platform%20-%20August%202026&amp;utm_source=DevOpsBulletin&amp;utm_medium=email&amp;utm_content=Email%20placement%20-%20Webinar%20-%20Rogo%20Customer%20Webinar%20-%20Variation%20A&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/209266292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.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_!KXlW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 424w, https://substackcdn.com/image/fetch/$s_!KXlW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 848w, https://substackcdn.com/image/fetch/$s_!KXlW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.png 1272w, https://substackcdn.com/image/fetch/$s_!KXlW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55daec34-6275-47cb-b9fb-cf05d39867c8_2400x1280.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>How do platform engineers keep pace with a growing development team at a $2B AI company? On August 11, Lawrence Aiello, Platform Engineering Lead at Rogo, shares how. He&#8217;ll cover the modern IaC platforms Rogo weighed, the criteria that mattered, and how infrastructure that runs without attention frees his team to focus on enabling developers. Take Rogo&#8217;s criteria into your own platform decision - <a href="https://events.spacelift.io/the-best-infrastructure-platform-stays-out-of-your-way?refid=DevOpsBulletin&amp;utm_campaign=49404317-FY26%20-%20Webinar%20-%20Rogo%20found%20an%20IaC%20platform%20-%20August%202026&amp;utm_source=DevOpsBulletin&amp;utm_medium=email&amp;utm_content=Email%20placement%20-%20Webinar%20-%20Rogo%20Customer%20Webinar%20-%20Variation%20A">Register Now</a></p><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4><strong>Newsworthy stories</strong></h4><ul><li><p><strong><a href="https://socket.dev/blog/github-actions-abuse-powers-cpanel-and-whm-exploitation?utm_source=devopsbulletin.com">Large-scale GitHub Actions abuse powers a distributed cPanel and WHM exploitation campaign</a></strong></p></li><li><p><strong><a href="https://planetscale.com/blog/making-768-servers-look-like-1?utm_source=devopsbulletin.com">Making 768 servers look like 1</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/machine-learning/introducing-claude-apps-gateway-for-aws/?utm_source=devopsbulletin.com">Introducing Claude apps gateway for AWS</a></strong></p></li><li><p><strong><a href="https://codecraftdiary.com/2026/07/26/merge-conflicts-process-problem?utm_source=devopsbulletin.com">Merge conflicts are a process problem, not a Git problem</a></strong></p></li><li><p><strong><a href="https://www.fairwinds.com/blog/why-kubernetes-experts-choose-managed-kubernetes-as-a-service?utm_source=devopsbulletin.com">Why do Kubernetes experts choose managed Kubernetes-as-a-service?</a></strong></p></li></ul><h4><strong>Tutorials of the week</strong></h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/mt/automate-ci-cd-troubleshooting-with-aws-devops-agent-and-github?utm_source=devopsbulletin.com">Automate CI/CD troubleshooting with AWS DevOps Agent and GitHub</a></strong></p></li><li><p><strong><a href="https://www.bejarano.io/terraform-autoapply?utm_source=devopsbulletin.com">Safe Terraform auto-apply with conftest</a></strong></p></li><li><p><strong><a href="https://cloudnativenow.com/contributed-content/a-green-kubernetes-deployment-does-not-mean-a-healthy-application?utm_source=devopsbulletin.com">A green Kubernetes deployment does not mean a healthy application</a></strong></p></li><li><p><strong><a href="https://hackernoon.com/i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop?utm_source=devopsbulletin.com">I built an AI SRE agent that diagnoses incidents before I open my laptop</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://hackernoon.com/i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!afED!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!afED!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!afED!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!afED!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!afED!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Architecture diagram&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://hackernoon.com/i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Architecture diagram" title="Architecture diagram" srcset="https://substackcdn.com/image/fetch/$s_!afED!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!afED!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!afED!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!afED!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8335f85-a17e-4114-b487-b7deece2c9ed_1536x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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><ul><li><p><strong><a href="https://itnext.io/your-pod-died-of-out-of-ephemeral-storage-but-the-disk-is-half-empty-775851ccd08c?utm_source=devopsbulletin.com">Your pod died of &#8220;out of ephemeral storage&#8221; but the disk is half empty</a></strong></p></li><li><p><strong><a href="https://github.com/alexpusch/rust-magic-patterns/tree/master/delightful-integration-tests?utm_source=devopsbulletin.com">Delightful integration tests in Rust</a></strong></p></li><li><p><strong><a href="https://claude.com/blog/ciso-guide-to-agentic-ai?utm_source=devopsbulletin.com">A CISO&#8217;s guide to agentic AI</a></strong></p></li></ul><h4><strong>Videos of the week</strong></h4><div id="youtube2-0G5_w2lX02o" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;0G5_w2lX02o&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/0G5_w2lX02o?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4><strong>Projects of the week</strong></h4><ul><li><p><strong><a href="https://github.com/omarismail/terraform-plan-tui?utm_source=devopsbulletin.com">tfplantui</a></strong> turns a Terraform plan into a navigable dependency graph in your terminal.</p></li><li><p><strong><a href="https://github.com/betocmn/widen?utm_source=devopsbulletin.com">Widen</a></strong> is a native Postgres GUI for macOS that answers questions in plain English and shows you the SQL before it runs.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/betocmn/widen?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tib2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 424w, https://substackcdn.com/image/fetch/$s_!tib2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 848w, https://substackcdn.com/image/fetch/$s_!tib2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 1272w, https://substackcdn.com/image/fetch/$s_!tib2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tib2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png" width="1226" height="473" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:473,&quot;width&quot;:1226,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:370216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/betocmn/widen?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/209266292?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.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_!tib2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 424w, https://substackcdn.com/image/fetch/$s_!tib2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 848w, https://substackcdn.com/image/fetch/$s_!tib2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.png 1272w, https://substackcdn.com/image/fetch/$s_!tib2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd59f5904-06d3-48fc-a1b7-ea741b1ba922_1226x473.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><ul><li><p><strong><a href="https://github.com/agavra/tuicr?utm_source=devopsbulletin.com">tuicr</a></strong> reviews code in a vim-keybound TUI and exports the result straight to GitHub or GitLab.</p></li><li><p><strong><a href="https://github.com/raesene/zeedumper?utm_source=devopsbulletin.com">zeedumper</a></strong> dumps the flagz, statusz and configz pages from Kubernetes components through the API server proxy.</p></li><li><p><strong><a href="https://github.com/ironsh/iron-proxy?utm_source=devopsbulletin.com">iron-proxy</a></strong> blocks all egress from untrusted workloads by default and swaps sandbox tokens for real credentials at the boundary.</p></li></ul><h4><strong>Meme of the week</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vAcF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vAcF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 424w, https://substackcdn.com/image/fetch/$s_!vAcF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 848w, https://substackcdn.com/image/fetch/$s_!vAcF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 1272w, https://substackcdn.com/image/fetch/$s_!vAcF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vAcF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png" width="356" height="383.8955223880597" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:804,&quot;resizeWidth&quot;:356,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;It Deleted The Assertion&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="It Deleted The Assertion" title="It Deleted The Assertion" srcset="https://substackcdn.com/image/fetch/$s_!vAcF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 424w, https://substackcdn.com/image/fetch/$s_!vAcF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 848w, https://substackcdn.com/image/fetch/$s_!vAcF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.png 1272w, https://substackcdn.com/image/fetch/$s_!vAcF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa3fc26-f0c5-4c55-a04d-968bdb1b1009_804x867.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>]]></content:encoded></item><item><title><![CDATA[Digest #224: AsyncAPI npm packages hijacked in 8 minutes, 222 fake GitHub repos, an Azure tenant lost in an hour and the death of small PRs]]></title><description><![CDATA[Also inside: HashiCorp's HCL-native policy engine for Terraform, a $19-a-month hosting bill cut to zero, and a Kubernetes rewritten from scratch in Rust that passes 94% of conformance tests.]]></description><link>https://www.devopsbulletin.com/p/digest-224-asyncapi-npm-packages</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-224-asyncapi-npm-packages</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 24 Jul 2026 16:21:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0gaP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>An attacker opened 37 pull requests against AsyncAPI last week, and eight minutes after the malicious one landed, the CI secrets were gone and four npm packages with 3 million weekly downloads were shipping a three-stage payload. The same week, Socket mapped a network of 222 fake GitHub repos pushing a Go module that was really a Windows malware loader, and Sysdig walked through an Azure tenant that fell in about an hour because permissions live across five systems that don&#8217;t talk to each other. The most interesting read, though, might be Rootly explaining why they killed their two-year-old small-PR rule now that 80% of their PRs are written by agents.</p></blockquote><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.wiz.io/blog/m-red-team-asyncapi-supply-chain-compromise-via-github-actions?utm_source=devopsbulletin.com">AsyncAPI supply chain compromise via GitHub Actions</a></strong></p></li><li><p><strong><a href="https://socket.dev/blog/malicious-go-module-exposes-github-malware-lure-network?utm_source=devopsbulletin.com">Malicious Go module exposes GitHub malware lure network spanning 222 repositories</a></strong></p></li><li><p><strong><a href="https://www.sysdig.com/blog/no-single-pane-of-glass-anatomy-of-an-azure-permission-takeover?utm_source=devopsbulletin.com">Anatomy of an Azure permission takeover</a></strong></p></li><li><p><strong><a href="https://www.hashicorp.com/fr/blog/introducing-tfpolicy-a-declarative-policy-workflow-built-for-terraform?utm_source=devopsbulletin.com">Introducing a policy workflow built for Terraform</a></strong></p></li><li><p><strong><a href="https://rootly.com/blog/why-we-got-rid-of-our-small-pr-rule?utm_source=devopsbulletin.com">Why we got rid of our small-PR rule</a></strong></p></li><li><p><strong><a href="https://milanjovanovic.tech/blog/how-i-migrated-my-website-to-cloudflare-and-saved-228-dollars?utm_source=devopsbulletin.com">How I migrated my website to Cloudflare and saved $228</a></strong></p></li><li><p><strong><a href="https://www.honeycomb.io/blog/could-should-first-year-managing-sre-team?utm_source=devopsbulletin.com">The first year managing an SRE team</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://hatchet.run/blog/postgres-survival-guide?utm_source=devopsbulletin.com">The startup&#8217;s Postgres survival guide</a></strong></p></li><li><p><strong><a href="https://holdmybeersecurity.com/2026/07/14/hunting-malware-and-malicious-mcps-in-memory-on-kubernetes-with-fleetdm-osquery-yara/?utm_source=devopsbulletin.com">Hunting malware and malicious MCPs in memory on Kubernetes</a></strong></p></li><li><p><strong><a href="https://medium.com/@nejdetkadir/how-i-built-my-own-home-lab-a-single-node-kubernetes-platform-34bdf6a08a26?utm_source=devopsbulletin.com">How I built my own home-lab: a single-node Kubernetes platform</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/security/authenticate-legitimate-ai-agent-traffic-with-aws-waf-bot-control?utm_source=devopsbulletin.com">Authenticate legitimate AI agent traffic with AWS WAF Bot Control</a></strong></p></li><li><p><strong><a href="https://dev.to/mateenali66/finops-guardrails-at-provisioning-time-stop-paying-for-mistakes-you-could-have-blocked-in-terraform-2oep?utm_source=devopsbulletin.com">FinOps guardrails at provisioning time</a></strong></p></li><li><p><strong><a href="https://github.blog/security/6-security-settings-every-github-maintainer-should-enable-this-week/?utm_source=devopsbulletin.com">6 security settings every GitHub maintainer should enable this week</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/07/22/multi-cluster-databases-on-kubernetes-architecture-and-deployment?utm_source=devopsbulletin.com">Multi-cluster databases on Kubernetes: architecture and deployment</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.cncf.io/blog/2026/07/22/multi-cluster-databases-on-kubernetes-architecture-and-deployment/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0gaP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 424w, https://substackcdn.com/image/fetch/$s_!0gaP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 848w, https://substackcdn.com/image/fetch/$s_!0gaP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 1272w, https://substackcdn.com/image/fetch/$s_!0gaP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0gaP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png" width="1301" height="639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:639,&quot;width&quot;:1301,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image: Failover in a multi-cluster MongoDB deployment using the Kubernetes MCS API&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.cncf.io/blog/2026/07/22/multi-cluster-databases-on-kubernetes-architecture-and-deployment/&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image: Failover in a multi-cluster MongoDB deployment using the Kubernetes MCS API" title="Image: Failover in a multi-cluster MongoDB deployment using the Kubernetes MCS API" srcset="https://substackcdn.com/image/fetch/$s_!0gaP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 424w, https://substackcdn.com/image/fetch/$s_!0gaP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 848w, https://substackcdn.com/image/fetch/$s_!0gaP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.png 1272w, https://substackcdn.com/image/fetch/$s_!0gaP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4abd926c-3860-4f20-97aa-c1aca6f662b9_1301x639.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><ul><li><p><strong><a href="https://nickjanetakis.com/blog/how-to-back-up-postgresql-in-docker-local-s3-and-plakar?utm_source=devopsbulletin.com">How to back up PostgreSQL in Docker</a></strong></p></li><li><p><strong><a href="https://dev.to/kalpit_swami/from-terraform-spaghetti-to-a-production-grade-gitops-platform-14i2?utm_source=devopsbulletin.com">From Terraform spaghetti to a production-grade GitOps platform</a></strong></p></li><li><p><strong><a href="https://joereis.substack.com/p/to-every-agent-its-own-database?utm_source=devopsbulletin.com">To every agent its own database</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-aZ_y2M2OuEA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;aZ_y2M2OuEA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/aZ_y2M2OuEA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-opbyn71T35I" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;opbyn71T35I&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/opbyn71T35I?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/cleatdev/cleat?utm_source=devopsbulletin.com">Cleat</a></strong> gives AI coding agents a per-project Docker sandbox so they can run fully autonomously without touching your host.</p></li><li><p><strong><a href="https://github.com/calfonso/rusternetes?utm_source=devopsbulletin.com">Rusternetes</a></strong> is a ground-up reimplementation of Kubernetes in Rust that already passes 94% of the official conformance suite.</p></li><li><p><strong><a href="https://github.com/Dicklesworthstone/destructive_command_guard?utm_source=devopsbulletin.com">Destructive Command Guard</a></strong> intercepts destructive shell commands before an AI agent gets to run them.</p></li><li><p><strong><a href="https://github.com/Cloudgeni-ai/opengeni?utm_source=devopsbulletin.com">OpenGeni</a></strong> is a self-hostable agent runtime with durable sessions, human approvals, and governed credentials.</p></li><li><p><strong><a href="https://github.com/fatedier/frp?utm_source=devopsbulletin.com">frp</a></strong> exposes a local server sitting behind NAT or a firewall to the internet.</p></li><li><p><strong><a href="https://github.com/backnotprop/plannotator?utm_source=devopsbulletin.com">Plannotator</a></strong> is a local browser UI for marking up an agent&#8217;s plans and diffs, then sending the feedback straight back to it.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/backnotprop/plannotator?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uUuI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 424w, https://substackcdn.com/image/fetch/$s_!uUuI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 848w, https://substackcdn.com/image/fetch/$s_!uUuI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 1272w, https://substackcdn.com/image/fetch/$s_!uUuI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uUuI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp" width="1456" height="920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:920,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:177030,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://github.com/backnotprop/plannotator?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/208180429?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uUuI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 424w, https://substackcdn.com/image/fetch/$s_!uUuI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 848w, https://substackcdn.com/image/fetch/$s_!uUuI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 1272w, https://substackcdn.com/image/fetch/$s_!uUuI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb119a67f-9d53-4a96-9466-910a33df8f68_1995x1261.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://github.com/newren/git-filter-repo?utm_source=devopsbulletin.com">git-filter-repo</a></strong> rewrites Git history to extract subdirectories, rename paths, or strip secrets.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Sa3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Sa3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2Sa3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2Sa3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2Sa3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Sa3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg" width="553" height="270.8675925925926" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:529,&quot;width&quot;:1080,&quot;resizeWidth&quot;:553,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Skill Me Daddy&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Skill Me Daddy" title="Skill Me Daddy" srcset="https://substackcdn.com/image/fetch/$s_!2Sa3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2Sa3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2Sa3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2Sa3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a509471-4199-4478-8435-d588abbd0e3f_1080x529.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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="pullquote"><p>I advise infra, devtools, and AI startups on AI product strategy, cloud security/FinOps, and tech M&amp;A.  If that's you, just reply to this email.</p></div>]]></content:encoded></item><item><title><![CDATA[Digest #223: AWS bills a user $140B, a kubelet leak in Kubernetes 1.36, Slack's Shipyard EC2 platform and pods vs AI agents]]></title><description><![CDATA[Plus the four horsemen behind thousands of Postgres outages, how Uber solved the identity crisis for AI agents, and catching full table scans in SQLite before they catch you.]]></description><link>https://www.devopsbulletin.com/p/digest-223-aws-bills-a-user-140b</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-223-aws-bills-a-user-140b</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 17 Jul 2026 16:20:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Oruh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://spacelift.io/infrastructure-automation-survey-2026?utm_campaign=48496167-FY26%20-%20WW%20-%20Strategic%20-%20infrastructure%20Automation%20Report%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&amp;utm_content=DevOps%20Bulletin%20-%20Infrastructure%20automation%20survey" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="192" height="59.46268656716418" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:192,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://spacelift.io/infrastructure-automation-survey-2026?utm_campaign=48496167-FY26%20-%20WW%20-%20Strategic%20-%20infrastructure%20Automation%20Report%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&amp;utm_content=DevOps%20Bulletin%20-%20Infrastructure%20automation%20survey&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p>Someone opened their AWS console this week to a billing alert projecting $140 billion for the month, on an account that normally spends $2-3 on S3. Underneath the meme-worthy screenshot, the real theme was infrastructure hitting its limits: a kubelet memory leak in Kubernetes 1.36, four recurring failure patterns behind thousands of Postgres outages, and Slack rebuilding its entire EC2 fleet management from scratch. And with half this week&#8217;s tutorials about giving AI agents identity, memory, and APIs, the CNCF is already asking whether a pod is even the right place to run one.</p></blockquote><h4><strong>AI is hitting your infra faster than you can govern it</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://spacelift.io/infrastructure-automation-survey-2026?utm_campaign=48496167-FY26%20-%20WW%20-%20Strategic%20-%20infrastructure%20Automation%20Report%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&amp;utm_content=DevOps%20Bulletin%20-%20Infrastructure%20automation%20survey" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F_XN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!F_XN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!F_XN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!F_XN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F_XN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:500063,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://spacelift.io/infrastructure-automation-survey-2026?utm_campaign=48496167-FY26%20-%20WW%20-%20Strategic%20-%20infrastructure%20Automation%20Report%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&amp;utm_content=DevOps%20Bulletin%20-%20Infrastructure%20automation%20survey&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/207428924?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.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_!F_XN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!F_XN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!F_XN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!F_XN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5d65436-2cae-48bd-ad69-525e26d35c7b_1200x640.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>AI is reshaping infrastructure, but the teams winning aren't adopting fastest, they're governing best. Spacelift surveyed 406 infrastructure and platform engineering leaders and found 93% have already had an AI-caused incident, while only 30% have a formal AI policy. The report reveals what separates the Pioneers, from platform engineering to the AI-specific signals most teams still aren't tracking.</p><p><strong><a href="https://spacelift.io/infrastructure-automation-survey-2026?utm_campaign=48496167-FY26%20-%20WW%20-%20Strategic%20-%20infrastructure%20Automation%20Report%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&amp;utm_content=DevOps%20Bulletin%20-%20Infrastructure%20automation%20survey">Download the report to see what the most advanced teams do differently.</a></strong></p><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://news.ycombinator.com/item?id=48945606&amp;utm_source=devopsbulletin.com">Just got an AWS billing alert projecting my monthly cost at $140B</a></strong></p></li><li><p><strong><a href="https://heyoncall.com/blog/fixing-kubernetes-kubelet-memory-leak?utm_source=devopsbulletin.com">Fixing a kubelet memory leak in Kubernetes 1.36</a></strong></p></li><li><p><strong><a href="https://medium.com/@meSATYA95/caught-in-the-octopus-trap-inside-the-unpatched-argocd-rce-that-leads-to-k8s-cluster-takeover-a4d7f65acb4a?utm_source=devopsbulletin.com">Inside the unpatched Argo CD RCE that leads to K8s cluster takeover</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/07/14/is-a-pod-the-right-deployment-unit-for-an-ai-agent?utm_source=devopsbulletin.com">Is a pod the right deployment unit for an AI agent?</a></strong></p></li><li><p><strong><a href="https://slack.engineering/shipyard-how-we-built-slacks-next-generation-ec2-platform/?utm_source=devopsbulletin.com">How we built Slack&#8217;s next-generation EC2 platform</a></strong></p></li><li><p><strong><a href="https://malisper.me/the-four-horsemen-behind-thousands-of-postgres-outages/?utm_source=devopsbulletin.com">The four horsemen behind thousands of Postgres outages</a></strong></p></li><li><p><strong><a href="https://practicaldatamodeling.substack.com/p/the-database-is-not-the-data-model?utm_source=devopsbulletin.com">The database is not the data model</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://www.dbos.dev/blog/making-postgres-queues-scale?utm_source=devopsbulletin.com">Just use Postgres for job queues</a></strong></p></li><li><p><strong><a href="https://dataengineeringcentral.substack.com/p/cloudflare-as-a-data-platform?utm_source=devopsbulletin.com">Cloudflare as a data platform?</a></strong></p></li><li><p><strong><a href="https://spacelift.io/blog/terraform-state-encryption?utm_source=devopsbulletin.com">How to encrypt Terraform state files</a></strong></p></li><li><p><strong><a href="https://www.decodingai.com/p/how-to-implement-a-unified-memory-from-scratch?utm_source=devopsbulletin.com">Implement a unified memory from scratch via knowledge graphs</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.decodingai.com/p/how-to-implement-a-unified-memory-from-scratch?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oruh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 424w, https://substackcdn.com/image/fetch/$s_!Oruh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 848w, https://substackcdn.com/image/fetch/$s_!Oruh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 1272w, https://substackcdn.com/image/fetch/$s_!Oruh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oruh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png" width="600" height="504" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:504,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:102035,&quot;alt&quot;:&quot;The full dataflow &#8212; data pipeline, memory pipeline, one MongoDB engine, the MCP server, and the harness with its skills.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.decodingai.com/p/how-to-implement-a-unified-memory-from-scratch?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The full dataflow &#8212; data pipeline, memory pipeline, one MongoDB engine, the MCP server, and the harness with its skills." title="The full dataflow &#8212; data pipeline, memory pipeline, one MongoDB engine, the MCP server, and the harness with its skills." srcset="https://substackcdn.com/image/fetch/$s_!Oruh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 424w, https://substackcdn.com/image/fetch/$s_!Oruh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 848w, https://substackcdn.com/image/fetch/$s_!Oruh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.png 1272w, https://substackcdn.com/image/fetch/$s_!Oruh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a3ac9d-1640-4269-af9b-58adec4e8541_600x504.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://www.davidsobsessions.com/p/one-year-of-gomobile?utm_source=devopsbulletin.com">Using Go for mobile apps</a></strong></p></li><li><p><strong><a href="https://github.blog/ai-and-ml/github-copilot/automating-cross-repo-documentation-with-github-agentic-workflows?utm_source=devopsbulletin.com">Automating cross-repo documentation with GitHub Agentic Workflows</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/automated-incident-remediation-with-aws-devops-agent-and-kiro-cli/?utm_source=devopsbulletin.com">Automated incident remediation with AWS DevOps Agent and Kiro CLI</a></strong></p></li><li><p><strong><a href="https://tenderlovemaking.com/2026/07/15/detecting-full-table-scans-with-sqlite?utm_source=devopsbulletin.com">Detecting full table scans with SQLite</a></strong></p></li><li><p><strong><a href="https://www.uber.com/us/en/blog/solving-the-agent-identity-crisis?utm_source=devopsbulletin.com">Solving the identity crisis for AI agents</a></strong></p></li><li><p><strong><a href="https://www.freestyle.sh/blog/opinion/designing-apis-for-agents?utm_source=devopsbulletin.com">Designing APIs for agents</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-iH4KiqtXjQs" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;iH4KiqtXjQs&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/iH4KiqtXjQs?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-SxIgD1OfU_A" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;SxIgD1OfU_A&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/SxIgD1OfU_A?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/ctresb/portero?utm_source=devopsbulletin.com">Portero</a></strong> shows every listening port on your machine, which process owns it, and lets you kill it or block the port from a built-in firewall.</p></li><li><p><strong><a href="https://github.com/greybeam/greysight?utm_source=devopsbulletin.com">Greysight</a></strong> is an open-source dashboard for Snowflake cost observability that automatically suspends idle warehouses.</p></li></ul><ul><li><p><strong><a href="https://github.com/watzon/goshot?utm_source=devopsbulletin.com">Goshot</a></strong> generates polished code and terminal screenshots with syntax highlighting and automatic secret redaction.</p></li><li><p><strong><a href="https://github.com/vshulcz/deja-vu?utm_source=devopsbulletin.com">deja-vu</a></strong> is a memory index for coding agents that searches past session logs so they can recall previous solutions.</p></li><li><p><strong><a href="https://github.com/davesavic/pgsavvy?utm_source=devopsbulletin.com">pgsavvy</a></strong> is a terminal UI for PostgreSQL that works like &#8220;the lazygit for Postgres.&#8221;</p></li><li><p><strong><a href="https://github.com/khoj-ai/khoj?utm_source=devopsbulletin.com">Khoj</a></strong> is a self-hostable AI second brain for semantic search and chat over your own documents.</p></li><li><p><strong><a href="https://github.com/lobehub/lobehub?utm_source=devopsbulletin.com">LobeHub</a></strong> is a platform for managing a team of AI agents as coordinated, schedulable units of work.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Cw7n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Cw7n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cw7n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cw7n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cw7n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Cw7n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg" width="424" height="424" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:500,&quot;resizeWidth&quot;:424,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Efficient Tokenmaxxing&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Efficient Tokenmaxxing" title="Efficient Tokenmaxxing" srcset="https://substackcdn.com/image/fetch/$s_!Cw7n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Cw7n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Cw7n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Cw7n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2c4ee0a-20cd-43f4-ba21-57a42699b221_500x500.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="pullquote"><p>I advise infra, devtools, and AI startups on AI product strategy, cloud security/FinOps, and tech M&amp;A.  If that's you, just reply to this email.</p></div>]]></content:encoded></item><item><title><![CDATA[Digest #222: AI breaches AWS in 72 hours, GitHub's agent leaks private repos, Argo CD cluster takeover and Lambda MicroVMs replace CI runners]]></title><description><![CDATA[Plus why you shouldn't trust Trusted Publishing, running local models for agentic coding, and PR preview environments that cut staging costs 78%.]]></description><link>https://www.devopsbulletin.com/p/digest-222-ai-breaches-aws-in-72</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-222-ai-breaches-aws-in-72</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 10 Jul 2026 14:36:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Akro!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.mendral.com/?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png" width="186" height="52.05223880597015" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73ff9826-c449-474f-a82b-26f222f70146_268x75.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:75,&quot;width&quot;:268,&quot;resizeWidth&quot;:186,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.mendral.com/?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><blockquote><p>A single attacker chained together application services, CI/CD pipelines, and secrets stores to compromise an entire AWS environment in 72 hours, and the responders tracking it say human-in-the-loop SIEM triage can&#8217;t keep pace with an AI moving that fast. The same week, GitHub&#8217;s AI agent was caught handing private repos to anyone who posted a nicely worded issue in a public repo, while an unpatched Argo CD flaw gave attackers full control of Kubernetes clusters. If you were counting on &#8220;Trusted Publishing&#8221; to keep your supply chain clean, one writeup this week argues that&#8217;s the wrong thing to trust.</p></blockquote><h4><strong>Platform engineering on autopilot</strong></h4><p><a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral</a><span> is an autonomous AI DevOps engineer that handles the work your engineers shouldn&#8217;t be doing manually anymore: supply chain security, flaky CI, slow builds, and anything else specific to your stack - </span><a href="https://www.mendral.com/?utm_source=devopsbulletin">Try it out!</a></p><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.darkreading.com/cloud-security/lone-attacker-ai-breach-aws-cloud-environment">Lone attacker uses AI to breach AWS cloud environment in 72 hours</a></strong></p></li><li><p><strong><a href="https://cloudnativenow.com/features/security-flaw-in-argo-cd-can-let-attackers-take-over-kubernetes-clusters">Security flaw in Argo CD can let attackers take over Kubernetes clusters</a></strong></p></li><li><p><strong><a href="https://lucvandonkersgoed.com/2026/07/01/i-replaced-my-github-runners-with-lambda-microvms-and-maybe-you-should-too">I replaced my GitHub runners with Lambda MicroVMs, and maybe you should too</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/07/07/why-sandboxing-your-agent-is-not-enough">Why sandboxing your agent is not enough</a></strong></p></li><li><p><strong><a href="https://blog.yossarian.net/2026/07/07/You-shouldnt-trust-trusted-publishing">You shouldn&#8217;t trust Trusted Publishing</a></strong></p></li><li><p><strong><a href="https://franklyspeaking.substack.com/p/why-ai-has-made-security-hard">Why AI has made security hard</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://blog.cloudflare.com/build-your-own-vulnerability-harness/">Build your own vulnerability harness</a></strong></p></li><li><p><strong><a href="https://noma.security/blog/gitlost-how-we-tricked-githubs-ai-agent-into-leaking-private-repos/">How we tricked GitHub&#8217;s AI agent into leaking private repos</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/mt/turn-your-amazon-cloudwatch-alarms-into-actionable-signals/">Turn your Amazon CloudWatch alarms into actionable signals</a></strong></p></li><li><p><strong><a href="https://xata.io/blog/postgres-as-a-temporal-db">PostgreSQL as a temporal database</a></strong></p></li><li><p><strong><a href="https://dev.to/aws/i-built-pr-preview-environments-with-aws-lambda-microvms-and-cut-staging-costs-by-78-2d3i">I built PR preview environments with AWS Lambda MicroVMs and cut staging costs by 78%</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dev.to/aws/i-built-pr-preview-environments-with-aws-lambda-microvms-and-cut-staging-costs-by-78-2d3i" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Akro!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 424w, https://substackcdn.com/image/fetch/$s_!Akro!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 848w, https://substackcdn.com/image/fetch/$s_!Akro!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 1272w, https://substackcdn.com/image/fetch/$s_!Akro!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Akro!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp" width="800" height="421" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:421,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;architecture&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dev.to/aws/i-built-pr-preview-environments-with-aws-lambda-microvms-and-cut-staging-costs-by-78-2d3i&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="architecture" title="architecture" srcset="https://substackcdn.com/image/fetch/$s_!Akro!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 424w, https://substackcdn.com/image/fetch/$s_!Akro!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 848w, https://substackcdn.com/image/fetch/$s_!Akro!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 1272w, https://substackcdn.com/image/fetch/$s_!Akro!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee6b55d5-e41b-409f-8d3f-a40c6f860e0b_800x421.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong><a href="https://dev.to/sudarshan_thakur_1e141b99/setting-up-continuous-terraform-drift-monitoring-with-github-actions-and-slack-5af3">Setting up continuous Terraform drift monitoring</a></strong></p></li><li><p><strong><a href="https://martinfowler.com/articles/exploring-gen-ai/local-models-for-coding-experiences.html">Experiences with local models for coding</a></strong></p></li><li><p><strong><a href="https://kanenarraway.com/posts/agent-identity-models/">Three ways to give an AI agent an identity</a></strong></p></li><li><p><strong><a href="https://medium.com/@mohitgupta_0470/multi-account-aws-is-about-ownership-not-accounts-55fc3935a82f">Multi-account AWS is about ownership, not accounts</a></strong></p></li></ul><h4>Videos of the week</h4><iframe class="spotify-wrap podcast" data-attrs="{&quot;image&quot;:&quot;https://i.scdn.co/image/ab6765630000ba8af3d2c1a1ebf238dcd1e1fe7d&quot;,&quot;title&quot;:&quot;Enterprises are concerned about AI Costs, Governance and Trust&quot;,&quot;subtitle&quot;:&quot;Massive Studios&quot;,&quot;description&quot;:&quot;Episode&quot;,&quot;url&quot;:&quot;https://open.spotify.com/episode/2LyrEUv7F8aNdpYIqJMCpX&quot;,&quot;belowTheFold&quot;:true,&quot;noScroll&quot;:false}" src="https://open.spotify.com/embed/episode/2LyrEUv7F8aNdpYIqJMCpX" frameborder="0" gesture="media" allowfullscreen="true" allow="encrypted-media" loading="lazy" data-component-name="Spotify2ToDOM"></iframe><div id="youtube2-sY1UqUuBqQQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;sY1UqUuBqQQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/sY1UqUuBqQQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/kptdev/kpt">kpt</a></strong> is a package-centric toolchain that treats Kubernetes configuration as data, allowing you to edit and deliver manifests using reusable transformation functions rather than templating.</p></li><li><p><strong><a href="https://github.com/kernelstub/Nox">Nox</a></strong> is a modular Go framework for attack surface management that bundles 300 built-in modules across 24 phases, taking you from passive OSINT to active vulnerability scanning.</p></li><li><p><strong><a href="https://github.com/dotenvx/dotenvx">dotenvx</a></strong> is a secure env manager from the creator of dotenv, encrypting .env files with public-key cryptography.</p></li><li><p><strong><a href="https://github.com/aiursoftweb/anduinos-2">AnduinOS 2</a></strong> is an Ubuntu-based Linux distribution designed to give newcomers a familiar, low-friction path to Linux, packaged almost entirely as shell scripts.</p></li><li><p><strong><a href="https://github.com/dekart-xyz/geosql">GeoSQL</a></strong> is a Python skill that turns Claude, Codex, and Copilot into geospatial analytics agents across PostGIS, BigQuery, and Snowflake.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wrFH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wrFH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wrFH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wrFH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wrFH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wrFH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg" width="398" height="423.472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:500,&quot;resizeWidth&quot;:398,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/ProgrammerHumor - gitBlameClaude&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/ProgrammerHumor - gitBlameClaude" title="r/ProgrammerHumor - gitBlameClaude" srcset="https://substackcdn.com/image/fetch/$s_!wrFH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 424w, https://substackcdn.com/image/fetch/$s_!wrFH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 848w, https://substackcdn.com/image/fetch/$s_!wrFH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!wrFH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46816f9b-883b-48ee-9c83-cc8121388b2e_500x532.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #221: LLMjacking goes offensive, scaling to 1 million Lambda functions, databases off Kubernetes and Ingress NGINX to Gateway API]]></title><description><![CDATA[Plus: attackers weaponizing stolen AI compute, pgvector at scale on Aurora, Claude Code for IaC, and how to corrupt a SQLite file on purpose.]]></description><link>https://www.devopsbulletin.com/p/digest-221-databases-on-kubernetes</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-221-databases-on-kubernetes</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 03 Jul 2026 15:32:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wx3I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>This week, someone makes the case for keeping your databases off Kubernetes, AWS shares what breaks when you scale to 1 million Lambda functions, and LLMjacking takes an ugly turn: attackers are wiring stolen AI compute into autonomous pentesting agents. Also inside: a production migration off Ingress NGINX, pgvector running at scale on Aurora, and a field guide to corrupting SQLite on purpose.</p></blockquote><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.percona.com/blog/why-i-havent-run-my-databases-on-kubernetes?utm_source=devopsbulletin.com">Why I haven&#8217;t run my databases on Kubernetes</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/architecture/lessons-learned-from-scaling-to-1-million-lambda-functions/?utm_source=devopsbulletin.com">Lessons learned from scaling to 1 million Lambda functions</a></strong></p></li><li><p><strong><a href="https://awsteele.com/blog/2026/06/19/cloudtrail-in-cloudwatch-isnt-very-good.html?utm_source=devopsbulletin.com">CloudTrail in CloudWatch isn&#8217;t very good</a></strong></p></li><li><p><strong><a href="https://www.cybertec-postgresql.com/en/too-many-tables-are-bad/?utm_source=devopsbulletin.com">Too many Postgres tables are bad</a></strong></p></li><li><p><strong><a href="https://www.fairwinds.com/blog/migrated-production-cluster-from-ingress-nginx-to-gateway-api?utm_source=devopsbulletin.com">How we migrated a production cluster from Ingress NGINX to Gateway API</a></strong></p></li><li><p><strong><a href="https://www.sysdig.com/blog/llmjacking-evolved-attackers-are-using-stolen-ai-compute-to-build-offensive-agentic-tools?utm_source=devopsbulletin.com">Attackers are using stolen AI compute to build offensive agentic tools</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://spacelift.io/blog/claude-code-for-infrastructure-as-code?utm_source=devopsbulletin.com">Claude Code for infrastructure as code</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/optimize-llm-costs-on-amazon-bedrock-from-billing-attribution-to-operational-telemetry/?utm_source=devopsbulletin.com">Optimize LLM costs on Amazon Bedrock</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aws.amazon.com/blogs/aws-cloud-financial-management/optimize-llm-costs-on-amazon-bedrock-from-billing-attribution-to-operational-telemetry/?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wx3I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 424w, https://substackcdn.com/image/fetch/$s_!wx3I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 848w, https://substackcdn.com/image/fetch/$s_!wx3I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 1272w, https://substackcdn.com/image/fetch/$s_!wx3I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wx3I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png" width="1091" height="411" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/facd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:411,&quot;width&quot;:1091,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Architecture diagram showing Amazon Bedrock model invocation logging flow. Amazon Bedrock sends real-time logs to CloudWatch Logs and long-term logs to Amazon S3. Both CloudWatch Logs and S3 feed queries into Amazon Athena, which then sends visualizations to Amazon QuickSight. Arrows indicate data flow direction, with a \&quot;Log Destinations\&quot; label grouping CloudWatch Logs and S3, and \&quot;Query\&quot; and \&quot;Visualize\&quot; labels on the downstream arrows.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aws.amazon.com/blogs/aws-cloud-financial-management/optimize-llm-costs-on-amazon-bedrock-from-billing-attribution-to-operational-telemetry/?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Architecture diagram showing Amazon Bedrock model invocation logging flow. Amazon Bedrock sends real-time logs to CloudWatch Logs and long-term logs to Amazon S3. Both CloudWatch Logs and S3 feed queries into Amazon Athena, which then sends visualizations to Amazon QuickSight. Arrows indicate data flow direction, with a &quot;Log Destinations&quot; label grouping CloudWatch Logs and S3, and &quot;Query&quot; and &quot;Visualize&quot; labels on the downstream arrows." title="Architecture diagram showing Amazon Bedrock model invocation logging flow. Amazon Bedrock sends real-time logs to CloudWatch Logs and long-term logs to Amazon S3. Both CloudWatch Logs and S3 feed queries into Amazon Athena, which then sends visualizations to Amazon QuickSight. Arrows indicate data flow direction, with a &quot;Log Destinations&quot; label grouping CloudWatch Logs and S3, and &quot;Query&quot; and &quot;Visualize&quot; labels on the downstream arrows." srcset="https://substackcdn.com/image/fetch/$s_!wx3I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 424w, https://substackcdn.com/image/fetch/$s_!wx3I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 848w, https://substackcdn.com/image/fetch/$s_!wx3I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.png 1272w, https://substackcdn.com/image/fetch/$s_!wx3I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffacd3b69-5ead-4e5f-b6bf-ba305eaf3ed7_1091x411.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><ul><li><p><strong><a href="https://cilium.io/blog/2026/06/13/multi-cluster-kubernetes-explained?utm_source=devopsbulletin.com">Multi-cluster Kubernetes explained</a></strong></p></li><li><p><strong><a href="https://vercel.com/blog/dockerfile-on-vercel?utm_source=devopsbulletin.com">Run any Dockerfile on Vercel</a></strong></p></li><li><p><strong><a href="https://dev.to/mierune/aws-amplify-lambda-microvms-a-serverless-linux-desktop-1eif?utm_source=devopsbulletin.com">AWS Amplify + Lambda MicroVMs</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://dev.to/mierune/aws-amplify-lambda-microvms-a-serverless-linux-desktop-1eif?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yVP0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 424w, https://substackcdn.com/image/fetch/$s_!yVP0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 848w, https://substackcdn.com/image/fetch/$s_!yVP0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 1272w, https://substackcdn.com/image/fetch/$s_!yVP0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yVP0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp" width="800" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot; &quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://dev.to/mierune/aws-amplify-lambda-microvms-a-serverless-linux-desktop-1eif?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt=" " title=" " srcset="https://substackcdn.com/image/fetch/$s_!yVP0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 424w, https://substackcdn.com/image/fetch/$s_!yVP0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 848w, https://substackcdn.com/image/fetch/$s_!yVP0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 1272w, https://substackcdn.com/image/fetch/$s_!yVP0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4074b4ec-f079-42ed-bd8f-b1eeb2ad6f5e_800x500.webp 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><ul><li><p><strong><a href="https://aws.amazon.com/blogs/database/running-pgvector-in-production-on-amazon-aurora-postgresql/?utm_source=devopsbulletin.com">Running pgvector in production on Amazon Aurora PostgreSQL</a></strong></p></li><li><p><strong><a href="https://github.com/aidansteele/microvm-fun?utm_source=devopsbulletin.com">Kubernetes on a fleet of AWS Lambda MicroVMs</a></strong></p></li><li><p><strong><a href="https://octopus.com/blog/blue-green-deployments-kubernetes-argo?utm_source=devopsbulletin.com">Blue/green deployments on Kubernetes with Argo Rollouts</a></strong></p></li><li><p><strong><a href="https://claude.com/blog/getting-started-with-loops?utm_source=devopsbulletin.com">Getting started with Claude loops</a></strong></p></li><li><p><strong><a href="https://www.sqlite.org/howtocorrupt.html?utm_source=devopsbulletin.com">How to corrupt an SQLite database file</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-5KyfW79Ld4g" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5KyfW79Ld4g&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/5KyfW79Ld4g?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-5paRa6E5rCM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;5paRa6E5rCM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/5paRa6E5rCM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/infiniumtek/terraform-review-agent?utm_source=devopsbulletin.com">terraform-review-agent</a></strong> reviews Terraform PRs with parallel security, cost, and style agents and posts one severity-ranked comment.</p></li><li><p><strong><a href="https://github.com/DataDog/datadog-saist?utm_source=devopsbulletin.com">datadog-saist</a></strong> is an AI-native SAST tool in Go that uses LLMs to catch vulnerabilities in Java, Python, and Go.</p></li><li><p><strong><a href="https://github.com/Barre/ZeroFS?utm_source=devopsbulletin.com">ZeroFS</a></strong> serves S3 buckets as POSIX filesystems over NFS, 9P, and NBD, with built-in compression and encryption.</p></li><li><p><strong><a href="https://github.com/toluaina/pgsync?utm_source=devopsbulletin.com">pgsync</a></strong> syncs Postgres, MySQL, or MariaDB to Elasticsearch or OpenSearch in real time from a JSON document schema.</p></li><li><p><strong><a href="https://github.com/Tight-Line/ballast?utm_source=devopsbulletin.com">ballast</a></strong> is a Kubernetes operator that right-sizes pod CPU and memory requests from real usage with in-place resize.</p></li><li><p><strong><a href="https://github.com/pingcap/tidb?utm_source=devopsbulletin.com">tidb</a></strong> is a distributed, MySQL-compatible SQL database with HTAP and native vector search.</p></li><li><p><strong><a href="https://github.com/ogulcancelik/herdr?utm_source=devopsbulletin.com">herdr</a></strong> is a Rust terminal multiplexer for running multiple coding agents in parallel workspaces.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lDlj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lDlj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lDlj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lDlj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lDlj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lDlj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg" width="422" height="373.2573643410853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1141,&quot;width&quot;:1290,&quot;resizeWidth&quot;:422,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Make No Mistakes&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Make No Mistakes" title="Make No Mistakes" srcset="https://substackcdn.com/image/fetch/$s_!lDlj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 424w, https://substackcdn.com/image/fetch/$s_!lDlj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 848w, https://substackcdn.com/image/fetch/$s_!lDlj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!lDlj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16086289-f494-4ee2-9426-055804479e6e_1290x1141.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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="pullquote"><p>Do you run your databases on Kubernetes? I go back and forth on it. Hit reply and tell me where you landed - I&#8217;ll feature the best answers next week.</p></div>]]></content:encoded></item><item><title><![CDATA[Digest #220: Red Hat's npm supply chain attack, malware in AI instruction files, AWS Lambda MicroVMs and a 2x faster test suite]]></title><description><![CDATA[This week in DevOps: the Red Hat npm credential-stealing attack, malware in AI agent files, AWS Lambda MicroVMs, Postgres 19 beta, and how to get good at Kubernetes.]]></description><link>https://www.devopsbulletin.com/p/digest-220-red-hats-npm-supply-chain</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-220-red-hats-npm-supply-chain</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 26 Jun 2026 17:14:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/s4EOVsBO7Ck" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://cleric.ai/product/early-preview" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iTyl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 424w, https://substackcdn.com/image/fetch/$s_!iTyl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 848w, https://substackcdn.com/image/fetch/$s_!iTyl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 1272w, https://substackcdn.com/image/fetch/$s_!iTyl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iTyl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png" width="208" height="55.21824104234528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:326,&quot;width&quot;:1228,&quot;resizeWidth&quot;:208,&quot;bytes&quot;:27247,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://cleric.ai/product/early-preview&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/203724252?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.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_!iTyl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 424w, https://substackcdn.com/image/fetch/$s_!iTyl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 848w, https://substackcdn.com/image/fetch/$s_!iTyl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 1272w, https://substackcdn.com/image/fetch/$s_!iTyl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F154ada8f-c45f-4b5e-86f8-8a478bf65305_1228x326.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>This week&#8217;s supply chain news is rough: 32 malicious @redhat-cloud-services npm packages stealing credentials via a preinstall hook, and Mitiga finding spyware and 1,230+ leaked API keys hidden inside AI agent instruction files. On the building side, AWS shipped Lambda MicroVMs for running untrusted and AI-generated code in isolation, Postgres 19 hit beta, and one engineer doubled their test suite by dropping per-test SQL migrations.</p><h4><strong>Feature deployed. Did it actually work?</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://cleric.ai/product/early-preview" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vIaq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!vIaq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!vIaq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!vIaq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vIaq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:797352,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://cleric.ai/product/early-preview&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/203724252?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.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_!vIaq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!vIaq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!vIaq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!vIaq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb23eb5e1-8c0c-4fb8-9baf-87b17ce441f1_1200x640.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>A change can pass CI and review and still break checkout the moment it deploys. <a href="https://cleric.ai/product/early-preview">Cleric</a> follows every agent-written change into production, checks that it did what you meant, and gives you a verdict: it worked, fix this, or roll back - <a href="https://cleric.ai/product/early-preview">See it work on a real change.</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://medium.com/@f8010/how-to-become-ridiculously-good-at-kubernetes-00538d4e8627?utm_source=devopsbulletin.com">How to become ridiculously good at Kubernetes</a></strong></p></li><li><p><strong><a href="https://www.mitiga.io/blog/malware-in-ai-instruction-files-skillgate?utm_source=devopsbulletin.com">Malware in AI instruction files, plus 1,230+ leaking API keys</a></strong></p></li><li><p><strong><a href="https://pierre.computer/writing/on-rendering-diffs?utm_source=devopsbulletin.com">How to render giant code diffs in the browser</a></strong></p></li><li><p><strong><a href="https://www.snowflake.com/en/blog/engineering/postgresql-19-features-beta/?utm_source=devopsbulletin.com">What&#8217;s coming in the Postgres 19 beta</a></strong></p></li><li><p><strong><a href="https://gaultier.github.io/blog/I_sped_up_the_test_suite_by_x2.html?utm_source=devopsbulletin.com">Cutting SQL migrations from tests doubled the suite speed</a></strong></p></li><li><p><strong><a href="https://theburningmonk.com/2026/06/what-you-need-to-know-about-lambda-microvms?utm_source=devopsbulletin.com">Lambda MicroVMs: what you need to know</a></strong></p></li><li><p><strong><a href="https://www.microsoft.com/en-us/security/blog/2026/06/02/preinstall-persistence-inside-red-hat-npm-miasma-credential-stealing-campaign?utm_source=devopsbulletin.com">Inside the Red Hat npm &#8220;Miasma&#8221; credential-stealing campaign</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/aws/run-isolated-sandboxes-with-full-lifecycle-control-aws-lambda-introduces-microvms/?utm_source=devopsbulletin.com">Running isolated sandboxes with Lambda MicroVMs</a></strong></p></li><li><p><strong><a href="https://kodekloud.com/blog/running-ai-agents-safely-inside-kubernetes?utm_source=devopsbulletin.com">Running AI agents safely inside Kubernetes</a></strong></p></li><li><p><strong><a href="https://www.kubeblogs.com/automate-postgresql-backups-to-s3/?utm_source=devopsbulletin.com">Automating PostgreSQL backups to S3 with Airflow</a></strong></p></li><li><p><strong><a href="https://medium.com/nontechcompany/building-an-incident-management-workflow-with-superplane-18604f9595be?utm_source=devopsbulletin.com">Building an incident management workflow</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/database/postgresql-18-on-amazon-aurora-and-amazon-rds-performance-enhancements/?utm_source=devopsbulletin.com">PostgreSQL 18 performance wins on Aurora and RDS</a></strong></p></li><li><p><strong><a href="https://planetscale.com/blog/the-feedback-loops-behind-kubernetes?utm_source=devopsbulletin.com">The feedback loops behind Kubernetes</a></strong></p></li><li><p><strong><a href="https://fortem.dev/blog/ecs-environment-clone?utm_source=devopsbulletin.com">Cloning an ECS environment without rewriting Terraform</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/opensource/governing-ai-assets-at-scale-with-mcp-gateway-and-registry?utm_source=devopsbulletin.com">Governing AI assets at scale with MCP Gateway and Registry</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-ppGO7r2sEkE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;ppGO7r2sEkE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/ppGO7r2sEkE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-iQyg-KypKAA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;iQyg-KypKAA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/iQyg-KypKAA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-s4EOVsBO7Ck" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;s4EOVsBO7Ck&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/s4EOVsBO7Ck?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/kunchenguid/no-mistakes?utm_source=devopsbulletin.com">no-mistakes</a></strong> is a Go local Git proxy that runs an AI review, test, and lint pipeline in an isolated worktree before pushing, then opens a clean PR.</p></li><li><p><strong><a href="https://github.com/modem-dev/hunk?utm_source=devopsbulletin.com">Hunk</a></strong> is a terminal diff viewer built for reviewing agent-authored changesets, with inline AI annotations.</p></li><li><p><strong><a href="https://github.com/jR4dh3y/BoxBox?utm_source=devopsbulletin.com">BoxBox</a></strong> is a self-hosted file manager for homelabs that supports chunked and resumable uploads.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/jR4dh3y/BoxBox?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X-F5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 424w, https://substackcdn.com/image/fetch/$s_!X-F5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 848w, https://substackcdn.com/image/fetch/$s_!X-F5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 1272w, https://substackcdn.com/image/fetch/$s_!X-F5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X-F5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png" width="1387" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:1387,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181074,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/jR4dh3y/BoxBox?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/203724252?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.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_!X-F5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 424w, https://substackcdn.com/image/fetch/$s_!X-F5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 848w, https://substackcdn.com/image/fetch/$s_!X-F5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.png 1272w, https://substackcdn.com/image/fetch/$s_!X-F5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F114570da-cc89-4ad6-87b1-ac2ee759fb47_1387x739.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></ul><ul><li><p><strong><a href="https://github.com/dbtrail/dbtrail?utm_source=devopsbulletin.com">dbtrail</a></strong> is a point-in-time recovery tool for MySQL that runs time-travel queries and can undo cascade deletes without locks or restores.</p></li><li><p><strong><a href="https://github.com/renatoworks/oh-my-reddit?utm_source=devopsbulletin.com">oh-my-reddit</a></strong> is a terminal Reddit client on Bubble Tea, with live-streaming comments and automatic browser session reuse.</p></li><li><p><strong><a href="https://github.com/stablyai/orca?utm_source=devopsbulletin.com">Orca</a></strong> is an agent orchestrator that runs Claude Code, Codex, and 40+ other CLI agents in parallel within git worktrees from a single desktop app.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/stablyai/orca?utm_source=devopsbulletin.com" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!luW8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 424w, https://substackcdn.com/image/fetch/$s_!luW8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 848w, https://substackcdn.com/image/fetch/$s_!luW8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 1272w, https://substackcdn.com/image/fetch/$s_!luW8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!luW8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png" width="827" height="511" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:511,&quot;width&quot;:827,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:215923,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/stablyai/orca?utm_source=devopsbulletin.com&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/203724252?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.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_!luW8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 424w, https://substackcdn.com/image/fetch/$s_!luW8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 848w, https://substackcdn.com/image/fetch/$s_!luW8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.png 1272w, https://substackcdn.com/image/fetch/$s_!luW8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe302e2f1-5fb0-4820-8d6e-26a523272cf3_827x511.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>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YaHD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YaHD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YaHD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YaHD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YaHD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YaHD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg" width="313" height="461.2631578947368" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:980,&quot;width&quot;:665,&quot;resizeWidth&quot;:313,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Now I Have The Full Picture&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Now I Have The Full Picture" title="Now I Have The Full Picture" srcset="https://substackcdn.com/image/fetch/$s_!YaHD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YaHD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YaHD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YaHD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4402dd5-0cac-4b70-b76a-c23a36a475a3_665x980.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #219: Fable 5's 1,810-line PR in 30 minutes, GitHub's rebuild revolt, Postgres' only scalable delete and AI-narrated crypto malware]]></title><description><![CDATA[From an AI model opening an 1,810-line pull request on its own in half an hour, to Cursor, GitLab and Zed all agreeing GitHub is broken while disagreeing on the fix.]]></description><link>https://www.devopsbulletin.com/p/digest-219-fable-5s-1810-line-pr</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-219-fable-5s-1810-line-pr</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 19 Jun 2026 18:11:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Y8YW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.mendral.com/?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png" width="212" height="59.32835820895522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73ff9826-c449-474f-a82b-26f222f70146_268x75.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:75,&quot;width&quot;:268,&quot;resizeWidth&quot;:212,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.mendral.com/?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Fable 5 opened a 1,810-line pull request on Tabularis this week. Thirty-seven new tests, all passing, in about half an hour. The line count isn&#8217;t the interesting part. It&#8217;s that it didn&#8217;t just build the feature it was asked for. It refactored the shared connection logic first, as the maintainers said they would have done themselves.</p><p>A few days later, Cloudflare pointed a different kind of agent at its own code. A harness that hunts for vulnerabilities, then hands every finding to a second, different model to argue it down. It surfaced 13,841 real bugs across 145 repositories. One model finds, another model doubts, and only what survives reaches a human.</p><p>While two teams were teaching AI to build and audit code, someone else was teaching it to sell malware. A Rust clipboard hijacker shipped with roughly 15,500 wallet addresses baked in, fronted by AI-generated YouTube narrators reading polished tutorials to an audience of coordinated fake comments.</p><p>Notice the pattern. The same kind of autonomous agent is now writing production code, auditing it, and, in the wrong hands, packaging the attack. The more capable they get, the more of the unglamorous work they can actually own. That&#8217;s the bet behind <a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral</a>: an autonomous AI DevOps engineer that takes the jobs your team shouldn&#8217;t be doing by hand, like supply chain security, and just handles them.</p><p>In the tutorials: how a single prompt injection turned Claude Code&#8217;s own GitHub Action into a way to read your API keys, the gameday that proved Datadog&#8217;s Postgres failover wasn&#8217;t actually safe, and why one NULL can make a NOT IN query quietly return nothing at all.</p><p>On video: Postgres branching that clones a database in under a second and scales to zero, plus why slow learning still wins in the AI era.</p><p>Then six devtools worth a look, including a Kubernetes desktop client that installs nothing in your cluster, a bastion that fronts SSH, Postgres, and Kubernetes with no client software, and an MCP server that indexes the entire Linux kernel in three minutes.</p><h4><strong>Platform engineering on autopilot</strong></h4><p><a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral</a><span> is an autonomous AI DevOps engineer that handles the work your engineers shouldn&#8217;t be doing manually anymore: supply chain security, flaky CI, slow builds, and anything else specific to your stack - </span><a href="https://www.mendral.com/?utm_source=devopsbulletin">Try it out!</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.greybeam.ai/blog/duckdb-internals-part-1">Why is DuckDB fast? </a></strong></p></li><li><p><strong><a href="https://gbhackers.com/ai-generated-youtube-narrators">Hackers use AI-generated YouTube narrators to promote Crypto malware</a></strong></p></li><li><p><strong><a href="https://notnotp.com/notes/what-job-interviews-taught-me-about-kubernetes">What job interviews taught me about Kubernetes</a></strong></p></li><li><p><strong><a href="https://tabularis.dev/blog/fable-5-opened-a-1800-line-pr-in-30-minutes">Fable 5 opened a 1,810-line, 37-test PR on Tabularis in 30 minutes</a></strong></p></li><li><p><strong><a href="https://vickiboykis.com/2026/06/15/running-local-models-is-good-now/">Running local models is good now</a></strong></p></li><li><p><strong><a href="https://sakul-learning.github.io/2026/06/02/iac-repo-structure">Infrastructure as Code needs software engineering, not more config tooling</a></strong></p></li><li><p><strong><a href="https://thenewstack.io/cursor-origin-github-disruption">Cursor, GitLab, and Zed agree GitHub is breaking</a></strong></p></li><li><p><strong><a href="https://planetscale.com/blog/the-only-scalable-delete">The only scalable delete in Postgres is DROP TABLE</a></strong></p></li><li><p><strong><a href="https://blog.cloudflare.com/build-your-own-vulnerability-harness">How Cloudflare&#8217;s multi-agent harness found 13,841 bugs across 145 repos</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://www.datadoghq.com/blog/engineering/postgresql-ha-kubernetes/">Building high-availability PostgreSQL on Kubernetes</a></strong></p></li><li><p><strong><a href="https://corgea.com/learn/github-actions-security-checklist">GitHub Actions security checklist for supply chain attacks</a></strong></p></li><li><p><strong><a href="https://medium.com/@chiragmehta900/cut-your-aws-fargate-bill-by-40-10-waste-patterns-i-fixed-in-production-d657d61469d2">Cut your AWS Fargate bill by 40%</a></strong></p></li><li><p><strong><a href="https://www.pulumi.com/blog/getting-started-aks-pulumi-csharp/">Getting started with AKS using Pulumi and C#</a></strong></p></li><li><p><strong><a href="https://ahakimx.id/posts/building-a-rag-powered-sre-knowledge-base-with-amazon-bedrock">Building a RAG-powered SRE knowledge base with Amazon Bedrock</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://ahakimx.id/posts/building-a-rag-powered-sre-knowledge-base-with-amazon-bedrock/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y8YW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 424w, https://substackcdn.com/image/fetch/$s_!Y8YW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 848w, https://substackcdn.com/image/fetch/$s_!Y8YW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 1272w, https://substackcdn.com/image/fetch/$s_!Y8YW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y8YW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png" width="292" height="465.27472527472526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2320,&quot;width&quot;:1456,&quot;resizeWidth&quot;:292,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;architecture&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://ahakimx.id/posts/building-a-rag-powered-sre-knowledge-base-with-amazon-bedrock/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="architecture" title="architecture" srcset="https://substackcdn.com/image/fetch/$s_!Y8YW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 424w, https://substackcdn.com/image/fetch/$s_!Y8YW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 848w, https://substackcdn.com/image/fetch/$s_!Y8YW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.png 1272w, https://substackcdn.com/image/fetch/$s_!Y8YW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f8e5e8d-316b-4808-8ed4-b67b7837c6fc_3393x5406.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://www.microsoft.com/en-us/security/blog/2026/06/05/securing-ci-cd-in-agentic-world-claude-code-github-action-case">Securing CI/CD in an agentic world: Claude Code GitHub action case</a></strong></p></li><li><p><strong><a href="https://dev.to/qasim157/run-your-email-agent-on-serverless-42d2">Run your email agent on serverless</a></strong></p></li><li><p><strong><a href="https://rednafi.com/shards/2026/06/go-goroutine-leak-profile/">A goroutine leak profile in the Go standard library</a></strong></p></li><li><p><strong><a href="https://specterops.io/blog/2026/06/10/oops-i-weaponized-the-database-abusing-ai-features-in-mssql-2025">Abusing AI features in SQL Server 2025</a></strong></p></li><li><p><strong><a href="https://boringsql.com/posts/not-in-null">The NULL in your NOT IN</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/security/operationalizing-aws-security-a-maturity-roadmap">Operationalizing AWS security: a maturity roadmap</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-Sntj4HmuykI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Sntj4HmuykI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Sntj4HmuykI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-zyQYMBt7mkM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;zyQYMBt7mkM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/zyQYMBt7mkM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-BAgxGp2WEu4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BAgxGp2WEu4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BAgxGp2WEu4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/SametKUM/klustr?utm_source=devopsbulletin">Klustr</a></strong> is a native Go/React Kubernetes desktop client that drives Helm, Argo CD, Flux, and cert-manager from your kubeconfig with no in-cluster components.</p></li><li><p><strong><a href="https://github.com/milan0x/local-cloud-browser?utm_source=devopsbulletin">Local Cloud Browser</a></strong> is a native macOS GUI for 28 AWS-compatible services, using Keychain credentials and read-only by default.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/milan0x/local-cloud-browser?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PaJB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 424w, https://substackcdn.com/image/fetch/$s_!PaJB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 848w, https://substackcdn.com/image/fetch/$s_!PaJB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 1272w, https://substackcdn.com/image/fetch/$s_!PaJB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PaJB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png" width="1456" height="827" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:827,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:818493,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/milan0x/local-cloud-browser?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/202748386?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.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_!PaJB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 424w, https://substackcdn.com/image/fetch/$s_!PaJB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 848w, https://substackcdn.com/image/fetch/$s_!PaJB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.png 1272w, https://substackcdn.com/image/fetch/$s_!PaJB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1cda25de-3074-430c-b640-f60e2798662f_3094x1758.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://github.com/kernalix7/winpodx?utm_source=devopsbulletin">WinPodX</a></strong> runs Windows apps as native Linux windows via FreeRDP RemoteApp, built in Python and Qt6.</p></li><li><p><strong><a href="https://github.com/alibaba/zvec?utm_source=devopsbulletin">Zvec</a></strong> is Alibaba&#8217;s in-process C++ vector database that searches billions of vectors in milliseconds with hybrid retrieval.</p></li><li><p><strong><a href="https://github.com/DeusData/codebase-memory-mcp?utm_source=devopsbulletin">codebase-memory-mcp</a></strong> is an MCP server that builds code knowledge graphs, enabling AI agents to skip re-reading files and index the 28M-line Linux kernel in 3 minutes.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/DeusData/codebase-memory-mcp?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OUxk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 424w, https://substackcdn.com/image/fetch/$s_!OUxk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 848w, https://substackcdn.com/image/fetch/$s_!OUxk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 1272w, https://substackcdn.com/image/fetch/$s_!OUxk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OUxk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png" width="795" height="461" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:461,&quot;width&quot;:795,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:386571,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/DeusData/codebase-memory-mcp?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/202748386?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.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_!OUxk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 424w, https://substackcdn.com/image/fetch/$s_!OUxk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 848w, https://substackcdn.com/image/fetch/$s_!OUxk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.png 1272w, https://substackcdn.com/image/fetch/$s_!OUxk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64bdc3d7-9c71-4f91-a32e-936ec30b73aa_795x461.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://github.com/warp-tech/warpgate?utm_source=devopsbulletin">Warpgate</a></strong> is a transparent Rust bastion and PAM for SSH, HTTPS, Kubernetes, MySQL, and Postgres with no client-side software.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Noqf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Noqf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 424w, https://substackcdn.com/image/fetch/$s_!Noqf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 848w, https://substackcdn.com/image/fetch/$s_!Noqf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 1272w, https://substackcdn.com/image/fetch/$s_!Noqf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Noqf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png" width="330" height="454.78125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:882,&quot;width&quot;:640,&quot;resizeWidth&quot;:330,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Anthropic Being Anthropic&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Anthropic Being Anthropic" title="Anthropic Being Anthropic" srcset="https://substackcdn.com/image/fetch/$s_!Noqf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 424w, https://substackcdn.com/image/fetch/$s_!Noqf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 848w, https://substackcdn.com/image/fetch/$s_!Noqf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.png 1272w, https://substackcdn.com/image/fetch/$s_!Noqf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffea4f80e-df2e-4e92-a7d4-4e920390ac9e_640x882.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #218: a $500K Google AI hack, Meta AI handing over Instagram accounts, AWS's new FinOps Agent and CockroachDB's vector indexing]]></title><description><![CDATA[Researcher pointed Claude at 3,600 leaked Google API keys and walked away with $500,000 in bounties this week, while attackers got into high-profile Instagram accounts by simply asking Meta AI for it]]></description><link>https://www.devopsbulletin.com/p/digest-218-a-500k-google-ai-hack</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-218-a-500k-google-ai-hack</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 12 Jun 2026 15:43:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/1PBRhm5ZnjU" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://zuplo.link/hfrwpKk" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!h8QX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 424w, https://substackcdn.com/image/fetch/$s_!h8QX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 848w, https://substackcdn.com/image/fetch/$s_!h8QX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 1272w, https://substackcdn.com/image/fetch/$s_!h8QX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!h8QX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png" width="200" height="63.51791530944625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:1228,&quot;resizeWidth&quot;:200,&quot;bytes&quot;:17431,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://zuplo.link/hfrwpKk&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/201751002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.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_!h8QX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 424w, https://substackcdn.com/image/fetch/$s_!h8QX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 848w, https://substackcdn.com/image/fetch/$s_!h8QX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 1272w, https://substackcdn.com/image/fetch/$s_!h8QX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acff688-0b86-4eab-a452-f04f581b49f1_1228x390.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Someone collected 3,600 Google API keys, pointed an AI at them, and Google paid out $500,000. The payout isn&#8217;t the interesting part. It&#8217;s how many of those keys should never have worked at all.</p><p>A separate group gained access to high-profile Instagram accounts this week without writing a single exploit. They just asked Meta AI for access. It said yes.</p><p>And while two companies were learning what their AI would hand to a stranger, AWS shipped one agent that reads your bill and another that diagnoses your EKS nodes before you&#8217;ve finished reading the alert.</p><p>Notice the pattern. The more we wire agents into internal tools, the more of them reach for things nobody actually gave them permission to touch, and most of those connections have no auth and no record of who asked. That&#8217;s the gap <a href="https://zuplo.link/hfrwpKk">Zuplo&#8217;s MCP Gateway</a> closes.</p><p>In the tutorials: why a plain web page can turn ChatGPT&#8217;s own output into a phishing link, how to let Terraform auto-apply without losing sleep, and the reason your Claude Code security review keeps missing the bug in the same session you wrote it.</p><p>On video: Anthropic spent a year warning everyone about AI, then shipped Fable 5. Plus real lessons from engineering teams shipping on Claude.</p><p>Then seven devtools worth a look, including a server monitor, a self-hosted Postgres with instant branching, and an AI agent that runs entirely off a USB stick.</p><h4>Your MCP servers have no security. Fix that</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://zuplo.link/hfrwpKk" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pHR0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 424w, https://substackcdn.com/image/fetch/$s_!pHR0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 848w, https://substackcdn.com/image/fetch/$s_!pHR0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 1272w, https://substackcdn.com/image/fetch/$s_!pHR0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pHR0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png" width="691" height="306" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:306,&quot;width&quot;:691,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41236,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://zuplo.link/hfrwpKk&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/201751002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.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_!pHR0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 424w, https://substackcdn.com/image/fetch/$s_!pHR0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 848w, https://substackcdn.com/image/fetch/$s_!pHR0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.png 1272w, https://substackcdn.com/image/fetch/$s_!pHR0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c408965-32dc-4642-9ca3-b6e2708b2018_691x306.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>AI agents are connecting to your internal tools, and most MCP servers ship with no auth and no audit trail. Zuplo's MCP Gateway puts OAuth, structured audit logs, and centralized access control in front of them - <a href="https://zuplo.link/hfrwpKk">Lock it down</a>.</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://brutecat.com/articles/hacking-google-with-ai/?utm_source=devopsbulletin">Hacking Google with AI for $500,000</a></strong></p></li><li><p><strong><a href="https://www.seuros.com/blog/aws-fired-the-human-who-made-the-difference?utm_source=devopsbulletin">AWS fired the one employee who gave a damn</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-finops-agent-is-now-public-preview/">Announcing the public preview of AWS FinOps Agent</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-finops-agent-is-now-public-preview/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0j0N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 424w, https://substackcdn.com/image/fetch/$s_!0j0N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 848w, https://substackcdn.com/image/fetch/$s_!0j0N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 1272w, https://substackcdn.com/image/fetch/$s_!0j0N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0j0N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png" width="1024" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Figure 2 - FinOps Agent Slack Channel Message&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aws.amazon.com/blogs/aws-cloud-financial-management/aws-finops-agent-is-now-public-preview/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Figure 2 - FinOps Agent Slack Channel Message" title="Figure 2 - FinOps Agent Slack Channel Message" srcset="https://substackcdn.com/image/fetch/$s_!0j0N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 424w, https://substackcdn.com/image/fetch/$s_!0j0N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 848w, https://substackcdn.com/image/fetch/$s_!0j0N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.png 1272w, https://substackcdn.com/image/fetch/$s_!0j0N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f2f6163-c54a-4a20-8e07-b258b1dcaec4_1024x700.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><ul><li><p><strong><a href="https://www.404media.co/hackers-simply-asked-meta-ai-to-give-them-access-to-high-profile-instagram-accounts-it-worked?utm_source=devopsbulletin">Hackers simply asked Meta AI for access to high-profile Instagram accounts</a></strong></p></li><li><p><strong><a href="https://engineering.salesforce.com/scaling-zero-copy-from-1-trillion-to-120-trillion-rows-with-file-federation?utm_source=devopsbulletin">Scaling Zero Copy from 1 trillion to 120 trillion rows with file federation</a></strong></p></li><li><p><strong><a href="https://blog.bytebytego.com/p/how-cockroachdb-built-vector-indexing?utm_source=devopsbulletin">How CockroachDB built vector indexing at scale</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://code.geohack.top/post/the-architecture-of-a-file-tree-that-never-freezes?utm_source=devopsbulletin">The architecture of a file tree that never freezes</a></strong></p></li><li><p><strong><a href="https://www.bejarano.io/terraform-autoapply?utm_source=devopsbulletin">Safe Terraform auto-apply with conftest</a></strong></p></li><li><p><strong><a href="https://www.gruntwork.io/blog/gruntwork-guides-your-infrastructure-repo-is-a-mess-heres-how-to-fix-it?utm_source=devopsbulletin">Your infrastructure repo is a mess (here&#8217;s how to fix it)</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/diagnose-eks-node-issues-faster-with-aws-devops-agent-and-custom-mcp/">Diagnose EKS Node issues faster with AWS DevOps Agent</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aws.amazon.com/blogs/devops/diagnose-eks-node-issues-faster-with-aws-devops-agent-and-custom-mcp/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ujWQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 424w, https://substackcdn.com/image/fetch/$s_!ujWQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 848w, https://substackcdn.com/image/fetch/$s_!ujWQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 1272w, https://substackcdn.com/image/fetch/$s_!ujWQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ujWQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png" width="1115" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1115,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AWS DevOps Agent connects over MCP/HTTPS to AgentCore Gateway, which authenticates via Amazon Cognito OAuth 2.0 and routes tool calls through a Lambda-based Tool Router to SSM Automation. SSM Automation dispatches runbooks to EKS worker nodes running SSM Agent, which upload collected log archives to a KMS-encrypted S3 bucket. An S3 event triggers a Lambda function that extracts and indexes findings for the agent to query.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aws.amazon.com/blogs/devops/diagnose-eks-node-issues-faster-with-aws-devops-agent-and-custom-mcp/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="AWS DevOps Agent connects over MCP/HTTPS to AgentCore Gateway, which authenticates via Amazon Cognito OAuth 2.0 and routes tool calls through a Lambda-based Tool Router to SSM Automation. SSM Automation dispatches runbooks to EKS worker nodes running SSM Agent, which upload collected log archives to a KMS-encrypted S3 bucket. An S3 event triggers a Lambda function that extracts and indexes findings for the agent to query." title="AWS DevOps Agent connects over MCP/HTTPS to AgentCore Gateway, which authenticates via Amazon Cognito OAuth 2.0 and routes tool calls through a Lambda-based Tool Router to SSM Automation. SSM Automation dispatches runbooks to EKS worker nodes running SSM Agent, which upload collected log archives to a KMS-encrypted S3 bucket. An S3 event triggers a Lambda function that extracts and indexes findings for the agent to query." srcset="https://substackcdn.com/image/fetch/$s_!ujWQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 424w, https://substackcdn.com/image/fetch/$s_!ujWQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 848w, https://substackcdn.com/image/fetch/$s_!ujWQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.png 1272w, https://substackcdn.com/image/fetch/$s_!ujWQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04f5dbd4-7bb5-4009-9824-7cf9223c99b0_1115x598.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><ul><li><p><strong><a href="https://claude.com/blog/lessons-from-building-claude-code-how-we-use-skills?utm_source=devopsbulletin">Lessons from building Claude Code: how we use skills</a></strong></p></li><li><p><strong><a href="https://permiso.io/blog/chatgpt-markdown-rendering-vulnerability?utm_source=devopsbulletin">ChatGPT markdown rendering vulnerability</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/machine-learning/its-safe-to-close-your-laptop-now-hosting-coding-agents-on-amazon-bedrock-agentcore?utm_source=devopsbulletin">Hosting coding agents on Amazon Bedrock AgentCore</a></strong></p></li><li><p><strong><a href="https://www.pgedge.com/blog/explain-prettier-or-post-processing-query-plans-in-postgres?utm_source=devopsbulletin">EXPLAIN prettier, or post-processing query plans in Postgres</a></strong></p></li><li><p><strong><a href="https://brainoverflow.blog/posts/claude-code-security-review-bias?utm_source=devopsbulletin">Hidden gaps in Claude Code security reviews</a></strong></p></li><li><p><strong><a href="https://www.freecodecamp.org/news/how-to-avoid-rebuilding-infrastructure-for-every-new-project?utm_source=devopsbulletin">How to avoid rebuilding infrastructure for every new project</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-RzwYFL6wIOU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;RzwYFL6wIOU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/RzwYFL6wIOU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-1PBRhm5ZnjU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1PBRhm5ZnjU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1PBRhm5ZnjU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/TabularisDB/tabularis?utm_source=devopsbulletin">Tabularis</a></strong> runs SQL notebooks, visual EXPLAIN plans, and an MCP server against Postgres, MySQL, and SQLite. </p></li><li><p><strong><a href="https://github.com/henrygd/beszel?utm_source=devopsbulletin">Beszel</a></strong> monitors CPU, memory, disk, network, GPU, and Docker stats with alerts and history. </p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/henrygd/beszel?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LVmv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 424w, https://substackcdn.com/image/fetch/$s_!LVmv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 848w, https://substackcdn.com/image/fetch/$s_!LVmv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 1272w, https://substackcdn.com/image/fetch/$s_!LVmv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LVmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png" width="1456" height="497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:497,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:270992,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/henrygd/beszel?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/201751002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.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_!LVmv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 424w, https://substackcdn.com/image/fetch/$s_!LVmv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 848w, https://substackcdn.com/image/fetch/$s_!LVmv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.png 1272w, https://substackcdn.com/image/fetch/$s_!LVmv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07eabae9-c308-4a62-bd7d-c62379185ad6_1630x556.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><ul><li><p><strong><a href="https://github.com/kimdre/doco-cd?utm_source=devopsbulletin">doco-cd</a></strong> auto-deploys your Docker Compose projects and Swarm stacks straight from Git via webhooks. </p></li><li><p><strong><a href="https://github.com/matisiekpl/neond?utm_source=devopsbulletin">NeonD</a></strong> gives self-hosted Postgres instant branching, S3 durability, and point-in-time recovery.</p></li><li><p><strong><a href="https://github.com/HelixDB/helix-db?utm_source=devopsbulletin">HelixDB</a></strong> stores both graph and vector data in a single OLTP engine for AI apps.</p></li><li><p><strong><a href="https://github.com/techjarves/hermes-usb-portable?utm_source=devopsbulletin">Hermes-USB-Portable</a></strong> runs a self-contained AI agent off a USB drive with zero host dependencies. </p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B8sm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B8sm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B8sm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B8sm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B8sm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B8sm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg" width="490" height="152.78846153846155" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:454,&quot;width&quot;:1456,&quot;resizeWidth&quot;:490,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Thanks Amazon&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Thanks Amazon" title="Thanks Amazon" srcset="https://substackcdn.com/image/fetch/$s_!B8sm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B8sm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B8sm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B8sm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1cf9664-46c6-452a-9af1-eb51f7a48d75_4320x1348.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #217: Kubernetes ditches Dashboard for Headlamp, Google API keys that won't die, 1-click GitHub token theft and the "Leaving AWS" skill issue]]></title><description><![CDATA[Kubernetes Dashboard to Headlamp migration, Google Cloud API key security, GitHub token theft via VSCode, AWS cost optimization, Pulumi EKS, Rust, and Postgres SQL/PGQ.]]></description><link>https://www.devopsbulletin.com/p/digest-217-kubernetes-ditches-dashboard</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-217-kubernetes-ditches-dashboard</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 05 Jun 2026 17:37:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/PFD8FXxbM0U" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.mendral.com/?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png" width="212" height="59.32835820895522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73ff9826-c449-474f-a82b-26f222f70146_268x75.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:75,&quot;width&quot;:268,&quot;resizeWidth&quot;:212,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.mendral.com/?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Three things happened this week that should bother you more than they probably do.</p><p>You can delete a Google API key and it keeps authenticating. You can have your GitHub token stolen in a single click without installing anything shady. And the Kubernetes Dashboard you&#8217;ve leaned on for years is being shown the door, with a replacement most people haven&#8217;t tried yet.</p><p>None of these are edge cases. They&#8217;re the kind of quiet shifts that don&#8217;t make the front page until they&#8217;ve already cost someone a weekend. Below: what&#8217;s actually going on with each, the supply chain secrets sitting on your dev laptop right now, why your AI-written incident reviews keep getting the root cause wrong, and 8 tools worth a look before Friday.</p><p>Speaking of catching things early: this week&#8217;s sponsor,&nbsp;<strong><a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral,</a></strong>&nbsp;flagged a supply chain attack two weeks before it went public. It&#8217;s built by Docker and Dagger veterans and already chews through 1.18B log lines a week at PostHog. </p><h4><strong>Platform engineering on autopilot</strong></h4><p><a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral</a> is an autonomous AI DevOps engineer that handles the work your engineers shouldn&#8217;t be doing manually anymore: supply chain security, flaky CI, slow builds, and anything else specific to your stack - <a href="https://www.mendral.com/?utm_source=devopsbulletin">Try it out!</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://kubernetes.io/blog/2026/06/01/dashboard-to-headlamp">From Kubernetes Dashboard to Headlamp</a></strong></p></li><li><p><strong><a href="https://www.aikido.dev/blog/google-api-keys-deletion">Google API keys keep working after you delete them</a></strong></p></li><li><p><strong><a href="https://awsfundamentals.com/blog/leaving-aws-hackernews">I read the viral &#8220;Leaving AWS&#8221; post twice. Most of it is a skill issue</a></strong></p></li><li><p><strong><a href="https://greatcircle.com/blog/2026/05/05/problem-with-ai-generated-post-incident-reviews/">The problem with AI-generated post-incident reviews</a></strong></p></li><li><p><strong><a href="https://stackoverflow.blog/2026/05/12/you-shipped-it-fast-but-did-you-ship-it-right/">You shipped it fast. But did you ship it right?</a></strong></p></li><li><p><strong><a href="https://wcollins.io/posts/2026/ai-through-iac-not-instead-of-it/">AI through IaC, not instead of it</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://blog.ammaraskar.com/github-token-stealing/">1-click GitHub token stealing via a VSCode bug</a></strong></p></li><li><p><strong><a href="https://1password.com/blog/agent-driven-design-system">From Jira to PR: how we built agent-driven pipelines for design system changes</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pNGR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pNGR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 424w, https://substackcdn.com/image/fetch/$s_!pNGR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 848w, https://substackcdn.com/image/fetch/$s_!pNGR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 1272w, https://substackcdn.com/image/fetch/$s_!pNGR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pNGR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp" width="1920" height="1014" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1014,&quot;width&quot;:1920,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44156,&quot;alt&quot;:&quot;Match the context layer to the workflow&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Match the context layer to the workflow" title="Match the context layer to the workflow" srcset="https://substackcdn.com/image/fetch/$s_!pNGR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 424w, https://substackcdn.com/image/fetch/$s_!pNGR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 848w, https://substackcdn.com/image/fetch/$s_!pNGR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 1272w, https://substackcdn.com/image/fetch/$s_!pNGR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a591fed-678e-42fa-b5b8-c43591fa3628_1920x1014.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://www.pulumi.com/blog/eks-vcluster-ephemeral-environments-with-pulumi">Build an EKS environment factory with Pulumi and vCluster</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/security/well-architected-best-practices-for-software-supply-chain-security">Well-architected best practices for software supply chain security</a></strong></p></li><li><p><strong><a href="https://corrode.dev/learn/migration-guides/go-to-rust/">Migrating from Go to Rust</a></strong></p></li><li><p><strong><a href="https://recyclebin.zip/posts/2026-05-25-secret-scanning-fleet-bagel">Detecting and removing dangerous secrets on dev workstations before Shai-Hulud does</a></strong></p></li><li><p><strong><a href="https://cloud.google.com/blog/topics/developers-practitioners/api-keys-are-open-secrets">Securing your Gemini and Google API keys</a></strong></p></li><li><p><strong><a href="https://www.cybertec-postgresql.com/en/handling-graphs-with-sql-pgq-in-postgresql/">Handling graphs with SQL/PGQ in PostgreSQL</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-PFD8FXxbM0U" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;PFD8FXxbM0U&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/PFD8FXxbM0U?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-DJ4UBSOod1k" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;DJ4UBSOod1k&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/DJ4UBSOod1k?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-O7xspYLKh7U" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;O7xspYLKh7U&quot;,&quot;startTime&quot;:&quot;160s&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/O7xspYLKh7U?start=160s&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://devops-daily.com/games/git-concepts-simulator">Git Concepts Simulator</a></strong> is a browser game that teaches Git by letting you run commands and watch files move between the working directory, staging area, and remotes.</p></li><li><p><strong><a href="https://github.com/perplexityai/bumblebee">Bumblebee</a></strong> is a Go read-only scanner from Perplexity that inventories packages and extensions across 9+ ecosystems to flag known-compromised software.</p></li><li><p><strong><a href="https://github.com/pol-rivero/github-desktop-plus">GitHub Desktop Plus</a></strong> is a community fork of GitHub Desktop, adding multi-account support, Git worktrees, and commit search.</p></li><li><p><strong><a href="https://github.com/tastyeffectco/sandboxes">Sandboxes</a></strong> is a Go engine for self-hosted cloud dev environments with built-in AI agents and live preview URLs, running on Docker with no Kubernetes.</p></li><li><p><strong><a href="https://github.com/utibeabasi6/mercek">Mercek</a></strong> is a local-first desktop IDE for Amazon ECS with multi-account discovery, ECS Exec shell access, and Fargate right-sizing, read-only by default.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/utibeabasi6/mercek" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!icIS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 424w, https://substackcdn.com/image/fetch/$s_!icIS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 848w, https://substackcdn.com/image/fetch/$s_!icIS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 1272w, https://substackcdn.com/image/fetch/$s_!icIS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!icIS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png" width="828" height="472" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:472,&quot;width&quot;:828,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62797,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/utibeabasi6/mercek&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/200742096?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.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_!icIS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 424w, https://substackcdn.com/image/fetch/$s_!icIS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 848w, https://substackcdn.com/image/fetch/$s_!icIS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.png 1272w, https://substackcdn.com/image/fetch/$s_!icIS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89b54eff-cd8f-4f85-a529-97e25a1a4dac_828x472.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://github.com/getpaseo/paseo">Paseo</a></strong> is a control plane for running multiple AI coding agents (Claude Code, Codex, Copilot) in parallel across mobile, desktop, and CLI, fully self-hosted.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-gOy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-gOy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 424w, https://substackcdn.com/image/fetch/$s_!-gOy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 848w, https://substackcdn.com/image/fetch/$s_!-gOy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 1272w, https://substackcdn.com/image/fetch/$s_!-gOy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-gOy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png" width="553" height="414.11093990755006" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:486,&quot;width&quot;:649,&quot;resizeWidth&quot;:553,&quot;bytes&quot;:411468,&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.devopsbulletin.com/i/200742096?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.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_!-gOy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 424w, https://substackcdn.com/image/fetch/$s_!-gOy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 848w, https://substackcdn.com/image/fetch/$s_!-gOy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.png 1272w, https://substackcdn.com/image/fetch/$s_!-gOy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F742fc843-8a13-4909-adbb-25d6e77a2792_649x486.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #216: GitHub Actions false suspensions, AI agent chains CVE to internal DB in 4 pivots, Gemini 3.5 deletes 28K lines and Postgres for durable workflows]]></title><description><![CDATA[LLM agent chains CVE to internal DB in 4 pivots, Gemini deletes 28K prod lines, plus Terraform, Snowflake cost cuts, and K8s scheduling.]]></description><link>https://www.devopsbulletin.com/p/digest-216-github-actions-false-suspensions</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-216-github-actions-false-suspensions</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 29 May 2026 16:18:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/xdMtc8jm88Q" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A GitHub Actions outage briefly flagged developer accounts as suspended across the platform, while Sysdig published the first documented LLM-driven attack chain: a marimo notebook CVE exploited across 4 pivots to reach an internal database, all in under an hour. Meanwhile, a solo developer shared how Gemini 3.5 deleted 28,745 lines of their production Next.js app, caused a 33-minute outage, and then fabricated three consultation logs and a post-mortem to cover it up.</p><p>On the tutorial side, a practical guide walks through Terraform state isolation using workspaces versus file layouts with S3 backends, and a case study on cutting a $140K Snowflake bill to $38K in three months using auto-suspend tuning, clustering keys, and query profile analysis. For system design, a deep dive into building S3-style object storage covers metadata/data separation, erasure coding, multipart uploads, and compaction. Plus a full K8s scheduling breakdown that traces the filter/score/bind loop with debugging playbooks for when your pod goes Pending.</p><p>For videos this week: a personal take on how AI has reshaped the day-to-day coding workflow, and a practical walkthrough of running LLMs on Kubernetes with LLMKube.</p><p>This week&#8217;s open source picks include Pullfrog, a TypeScript GitHub bot that triggers AI coding agents inside GitHub Actions via PR comment mentions; pgGraph, a Rust PostgreSQL extension that adds graph traversal to relational tables without a separate graph database; and Pathfinding Cloud Labs, a catalog of 100+ hands-on AWS IAM privilege escalation scenarios with a plabs CLI. Also worth checking: KeyLedger for unified AI API key management with health scoring, Murr for zero-copy ML inference caching on RocksDB, and ktx, a TypeScript/Python MCP context layer that helps AI agents query Snowflake and BigQuery accurately.</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.seuros.com/blog/aws-restored-account-plot-twist">AWS restored my account: the human who made the difference</a></strong></p></li><li><p><strong><a href="https://www.devclass.com/development/2026/05/28/github-actions-outage-told-devs-your-account-is-suspended/5247065">GitHub Actions outage told devs &#8220;your account is suspended&#8221;</a></strong></p></li><li><p><strong><a href="https://webflow.sysdig.com/blog/ai-agent-at-the-wheel-how-an-attacker-used-llms-to-move-from-a-cve-to-an-internal-database-in-4-pivots">How an attacker used LLMs to move from a CVE to an internal database in 4 pivots</a></strong></p></li><li><p><strong><a href="https://siliconangle.com/2026/05/28/finops-ai-spending-boardroom-strategy-finopsx">Rising AI spend turns FinOps into a boardroom strategist</a></strong></p></li><li><p><strong><a href="https://www.reddit.com/r/Bard/comments/1tisrg1/gemini_35_deleted_28745_lines_broke_production/">Gemini 3.5 deleted 28,745 lines, broke production, then fabricated the post-mortem</a></strong></p></li><li><p><strong><a href="https://www.dbos.dev/blog/postgres-is-all-you-need-for-durable-execution">Postgres is all you need for durable workflows</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/how-aws-devops-agent-uses-multi-agent-reasoning-to-find-root-causes/">How AWS DevOps agent uses multi-agent reasoning to find root causes</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://blog.devops.dev/terraform-state-isolation-how-i-kept-dev-staging-and-production-from-destroying-each-other-2be1aa9dbadc">Terraform state isolation: how I kept dev, staging, and production from destroying each other</a></strong></p></li><li><p><strong><a href="https://infrahouse.com/blog/2026-03-28-iso-27001-on-aws">ISO 27001 on AWS: building compliance into the architecture</a></strong></p></li><li><p><strong><a href="https://levelup.gitconnected.com/i-inherited-a-140k-snowflake-bill-three-months-later-it-was-38k-heres-everything-i-learned-70acc2806e41">I inherited a $140K Snowflake bill. 3 months later, it was $38K. Here&#8217;s everything I learned</a></strong></p></li><li><p><strong><a href="https://levelup.gitconnected.com/design-s3-object-storage-like-a-senior-engineer-f3b938ab700d">Design S3 object storage like a senior engineer</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/containers/ai-powered-event-driven-amazon-eks-ami-updates-with-gitops/">AI-powered event-driven Amazon EKS AMI updates with GitOps</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://aws.amazon.com/blogs/containers/ai-powered-event-driven-amazon-eks-ami-updates-with-gitops/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FpuQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 424w, https://substackcdn.com/image/fetch/$s_!FpuQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 848w, https://substackcdn.com/image/fetch/$s_!FpuQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 1272w, https://substackcdn.com/image/fetch/$s_!FpuQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FpuQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png" width="622" height="565.6098901098901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1324,&quot;width&quot;:1456,&quot;resizeWidth&quot;:622,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Automated AWS EKS AMI detection, analysis, and deployment workflow diagram showing three phases: scheduled detection via EventBridge and Lambda, AI-powered risk analysis with Amazon Bedrock and GitHub PR creation via Step Functions, and automatic Kubernetes node rollout using Argo CD and Karpenter.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://aws.amazon.com/blogs/containers/ai-powered-event-driven-amazon-eks-ami-updates-with-gitops/&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Automated AWS EKS AMI detection, analysis, and deployment workflow diagram showing three phases: scheduled detection via EventBridge and Lambda, AI-powered risk analysis with Amazon Bedrock and GitHub PR creation via Step Functions, and automatic Kubernetes node rollout using Argo CD and Karpenter." title="Automated AWS EKS AMI detection, analysis, and deployment workflow diagram showing three phases: scheduled detection via EventBridge and Lambda, AI-powered risk analysis with Amazon Bedrock and GitHub PR creation via Step Functions, and automatic Kubernetes node rollout using Argo CD and Karpenter." srcset="https://substackcdn.com/image/fetch/$s_!FpuQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 424w, https://substackcdn.com/image/fetch/$s_!FpuQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 848w, https://substackcdn.com/image/fetch/$s_!FpuQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.png 1272w, https://substackcdn.com/image/fetch/$s_!FpuQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdc46261a-a109-4f64-b56c-cd01258cf6c8_1858x1690.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><ul><li><p><strong><a href="https://blog.marcolancini.it/2026/blog-automating-security-operations-with-ai-triage-renovate/">Automating security operations with AI: triaging Renovate PRs</a></strong></p></li><li><p><strong><a href="https://blog.devops.dev/where-did-my-pod-go-a-deep-dive-into-k8s-scheduling-d1d50c23e549">Where did my pod go? A deep dive into K8s scheduling</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/security/governing-infrastructure-as-code-using-pattern-based-policy-as-code/">Governing infrastructure as code using pattern-based policy as code</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-xJaMTo2YgO8" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xJaMTo2YgO8&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xJaMTo2YgO8?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-xdMtc8jm88Q" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xdMtc8jm88Q&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xdMtc8jm88Q?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/pullfrog/pullfrog">Pullfrog</a></strong> is a model-agnostic GitHub bot that triggers AI coding agents inside GitHub Actions via PR/issue comment mentions, no separate infrastructure needed.</p></li><li><p><strong><a href="https://github.com/riptideslabs/keyledger">KeyLedger</a></strong> is a TUI dashboard for managing AI provider API keys across OpenAI, Anthropic, AWS IAM, Google Cloud, and Mistral.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/riptideslabs/keyledger" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c9i2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 424w, https://substackcdn.com/image/fetch/$s_!c9i2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 848w, https://substackcdn.com/image/fetch/$s_!c9i2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 1272w, https://substackcdn.com/image/fetch/$s_!c9i2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c9i2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png" width="821" height="409" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:409,&quot;width&quot;:821,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:309513,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/riptideslabs/keyledger&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/199732269?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.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_!c9i2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 424w, https://substackcdn.com/image/fetch/$s_!c9i2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 848w, https://substackcdn.com/image/fetch/$s_!c9i2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.png 1272w, https://substackcdn.com/image/fetch/$s_!c9i2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42db79e9-9e39-4184-953f-0653c6c82e5f_821x409.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><ul><li><p><strong><a href="https://github.com/Evokoa/pggraph">pgGraph</a></strong> is a Rust PostgreSQL extension that adds graph traversal and shortest-path queries directly to relational tables via SQL.</p></li><li><p><strong><a href="https://pathfinding.cloud/labs">Pathfinding Cloud Labs</a></strong> is a catalog of 100+ hands-on AWS IAM privilege escalation labs across EC2, Lambda, ECS, SageMaker, and cross-account scenarios.</p></li><li><p><strong><a href="https://github.com/murrdb/murr">Murr</a></strong> is a Rust RocksDB-backed caching layer for ML inference that manages tiered storage across RAM, NVMe, and S3 with zero-copy conversion.</p></li><li><p><strong><a href="https://github.com/HeidiSQL/HeidiSQL">HeidiSQL</a></strong> is a GUI database client that supports MariaDB, MySQL, PostgreSQL, SQL Server, SQLite, Interbase, and Firebird.</p></li><li><p><strong><a href="https://github.com/Kaelio/ktx-ai-data-agents-mcp-context-skills">ktx</a></strong> is an MCP context layer that helps AI agents query data warehouses accurately by ingesting metric definitions and schema metadata from dbt, LookML, Looker, Metabase, and Notion.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BN7l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BN7l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 424w, https://substackcdn.com/image/fetch/$s_!BN7l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 848w, https://substackcdn.com/image/fetch/$s_!BN7l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 1272w, https://substackcdn.com/image/fetch/$s_!BN7l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BN7l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png" width="449" height="371.8758503401361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:974,&quot;width&quot;:1176,&quot;resizeWidth&quot;:449,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How Senior Must Be Treated&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How Senior Must Be Treated" title="How Senior Must Be Treated" srcset="https://substackcdn.com/image/fetch/$s_!BN7l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 424w, https://substackcdn.com/image/fetch/$s_!BN7l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 848w, https://substackcdn.com/image/fetch/$s_!BN7l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.png 1272w, https://substackcdn.com/image/fetch/$s_!BN7l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9e06ea9-e84c-478d-aa49-85e157538e10_1176x974.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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #215: AI DevOps Engineer, GitHub's 3,800-Repo Breach, Docker's Hidden microVM API, Terraform 1.15 and compromising Claude Code]]></title><description><![CDATA[A malicious VSCode extension compromised 3,800 GitHub repositories, Rivet's team reverse-engineered Docker Sandbox's undocumented microVM API, Terraform 1.15 landed with dynamic sources and variable.]]></description><link>https://www.devopsbulletin.com/p/digest-215-ai-devops-engineer-githubs</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-215-ai-devops-engineer-githubs</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 22 May 2026 15:43:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/gwTQLZSIlsU" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.mendral.com/?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JTHa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png" width="232" height="64.92537313432835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/73ff9826-c449-474f-a82b-26f222f70146_268x75.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:75,&quot;width&quot;:268,&quot;resizeWidth&quot;:232,&quot;bytes&quot;:7238,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.mendral.com/?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/198730899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.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_!JTHa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 424w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 848w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1272w, https://substackcdn.com/image/fetch/$s_!JTHa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F73ff9826-c449-474f-a82b-26f222f70146_268x75.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>The team behind Docker and Dagger built <a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral</a>, an autonomous AI DevOps engineer that investigates root causes across your repos, CI logs, Dockerfiles, and IaC, then ships fixes as reviewable PRs. Worth a look if supply chain security or slow CI is eating your engineers&#8217; time.</p><p>A malicious VS Code extension granted attackers access to 3,800 GitHub repositories this week, raising fresh questions about extension trust in developer toolchains. Docker Sandbox&#8217;s undocumented microVM API was fully reverse-engineered and documented by the Rivet team; Terraform 1.15 landed with dynamic source references and variable deprecation; and Anthropic engineers are dropping Markdown in favor of raw HTML when building with Claude Code.</p><p>On the tutorial side: security researchers show exactly how malicious skills and agents can compromise Claude Code, Teads walks through cutting BigQuery slot usage by 90% after a production outage, there&#8217;s a deep-dive into building a distributed search engine in pure Go, and a postmortem on how unused Postgres indexes silently ate 41GB. Plus canary deployments with AWS SAM, root cause analysis with the AWS DevOps Agent, and Bedrock API key security.</p><p>For videos this week: how a single PR nearly hijacked the NPM registry, and a candid take on what moving too fast in software actually costs you.</p><p>This week&#8217;s projects include SCAM, a 1Password benchmark that tests AI agents&#8217; security awareness in real-world workplace scenarios; pgsqlite, a Postgres wire protocol adapter for SQLite; swamp, a CLI for building reviewable AI agent workflows stored in Git; and capsule, a multi-tenancy framework for Kubernetes.</p><h4>The team behind Docker and Dagger built an AI DevOps engineer</h4><p><a href="https://www.mendral.com/?utm_source=devopsbulletin">Mendral</a> is an autonomous AI DevOps engineer that handles the work your engineers shouldn't be doing manually anymore: supply chain security, flaky CI, slow builds, and anything else specific to your stack. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.mendral.com/?utm_source=devopsbulletin" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HkKI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 424w, https://substackcdn.com/image/fetch/$s_!HkKI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 848w, https://substackcdn.com/image/fetch/$s_!HkKI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 1272w, https://substackcdn.com/image/fetch/$s_!HkKI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HkKI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png" width="1122" height="713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:713,&quot;width&quot;:1122,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:214808,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.mendral.com/?utm_source=devopsbulletin&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/198730899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.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_!HkKI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 424w, https://substackcdn.com/image/fetch/$s_!HkKI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 848w, https://substackcdn.com/image/fetch/$s_!HkKI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.png 1272w, https://substackcdn.com/image/fetch/$s_!HkKI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2ddea8-5e88-4618-9634-bf2bdbc6f367_1122x713.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>It investigates root causes across your repos, CI logs, Dockerfiles, lockfiles, and IaC, then ships the fix as a reviewable PR - pinning CVEs, killing flakes, tuning cache layers, and upgrading dependencies without taking your engineers off product work - <a href="https://www.mendral.com/?utm_source=devopsbulletin">Try it out!</a></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.mendral.com/blog/llms-are-good-at-sql">LLMs are good at SQL. We gave our terabytes of CI logs</a></strong></p></li><li><p><strong><a href="https://www.dheeth.blog/real-unit-of-llm-infrastructure-is-the-token/">The request is the wrong unit of scale for LLMs on Kubernetes</a></strong></p></li><li><p><strong><a href="https://rivet.dev/blog/2026-02-04-we-reverse-engineered-docker-sandbox-undocumented-microvm-api/">We reverse-engineered Docker Sandbox&#8217;s undocumented microVM API</a></strong></p></li><li><p><strong><a href="https://www.bleepingcomputer.com/news/security/github-confirms-breach-of-3-800-repos-via-malicious-vscode-extension/">GitHub confirms breach of 3,800 repos via malicious VSCode extension</a></strong></p></li><li><p><strong><a href="https://techcommunity.microsoft.com/blog/azuretoolsblog/from-prompt-to-production-open-in-vs-code-for-terraform-in-azure-copilot/4494931">Open in VSCode for Terraform in Azure Copilot</a></strong></p></li><li><p><strong><a href="https://www.hashicorp.com/en/blog/new-in-terraform-115-dynamic-sources-variable-deprecation-and-more">How Anthropic engineers are building with Claude</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://aws.amazon.com/blogs/aws-cloud-financial-management/identifying-security-risks-using-aws-cost-and-usage-report-data/">Identifying security risks using AWS Cost and Usage Report data</a></strong></p></li><li><p><strong><a href="https://medium.com/@RDarrylR/live-canary-deployments-with-aws-sam-the-new-websocket-api-resource-and-lambda-durable-functions-4b029533b34f">Live canary deployments with AWS SAM</a></strong></p></li><li><p><strong><a href="https://jvns.ca/blog/2023/12/04/mounting-git-commits-as-folders-with-nfs/">Mounting Git commits as folders with NFS</a></strong></p></li><li><p><strong><a href="https://aws.amazon.com/blogs/devops/automate-root-cause-analysis-across-datadog-and-elasticsearch-with-aws-devops-agent/">Automate root cause analysis across Datadog and Elasticsearch with AWS DevOps Agent</a></strong></p></li><li><p><strong><a href="https://labs.reversec.com/posts/2026/05/skill-issues-compromising-claude-code-with-malicious-skills-agents-part-1">Compromising Claude Code with malicious skills and agents</a></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://labs.reversec.com/posts/2026/05/skill-issues-compromising-claude-code-with-malicious-skills-agents-part-1" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3R3O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 424w, https://substackcdn.com/image/fetch/$s_!3R3O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 848w, https://substackcdn.com/image/fetch/$s_!3R3O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 1272w, https://substackcdn.com/image/fetch/$s_!3R3O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3R3O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp" width="1456" height="787" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:787,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Attack Scenario&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://labs.reversec.com/posts/2026/05/skill-issues-compromising-claude-code-with-malicious-skills-agents-part-1&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Attack Scenario" title="Attack Scenario" srcset="https://substackcdn.com/image/fetch/$s_!3R3O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 424w, https://substackcdn.com/image/fetch/$s_!3R3O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 848w, https://substackcdn.com/image/fetch/$s_!3R3O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 1272w, https://substackcdn.com/image/fetch/$s_!3R3O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bd79dd5-f200-4263-8edc-0fbdece361a8_3317x1794.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p><strong><a href="https://antfly.io/blog/distributed-search-engine-go">Building a distributed search engine in pure Go</a></strong></p></li><li><p><strong><a href="https://medium.com/teads-engineering/how-we-cut-bigquery-slot-usage-by-90-on-one-of-our-most-resource-hungry-service-after-an-outage-c491af09e77e">How we cut BigQuery slot usage by 90% </a></strong></p></li><li><p><strong><a href="https://www.beyondtrust.com/blog/entry/aws-bedrock-security-guide-api-keys-detection-response">AWS Bedrock security guide: API keys, detection, and response</a></strong></p></li><li><p><strong><a href="https://peerlist.io/raviojhax/articles/how-unused-indexes-ate-41gb-postgres">How unused indexes ate 41GB of Postgres storage</a></strong></p></li><li><p><strong><a href="https://claude.com/blog/best-practices-for-computer-and-browser-use-with-claude">Best practices for computer and browser use with Claude</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-gwTQLZSIlsU" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;gwTQLZSIlsU&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/gwTQLZSIlsU?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-46PcZ47StDA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;46PcZ47StDA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/46PcZ47StDA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/erans/pgsqlite">pgsqlite</a></strong> is a PostgreSQL protocol adapter for SQLite, allowing any PostgreSQL client to connect to and query SQLite databases over the standard wire protocol.</p></li><li><p><strong><a href="https://github.com/1Password/SCAM">SCAM</a></strong> is a benchmark from 1Password that tests AI agents&#8217; security awareness through realistic, multi-turn workplace scenarios.</p></li><li><p><strong><a href="https://github.com/grokability/snipe-it">snipe-it</a></strong> is an IT asset and license management system.</p></li><li><p><strong><a href="https://github.com/dgtlmoon/changedetection.io">changedetection.io</a></strong> is a website change-detection tool that alerts you when content, prices, or stock levels change.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/dgtlmoon/changedetection.io" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hezm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 424w, https://substackcdn.com/image/fetch/$s_!Hezm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 848w, https://substackcdn.com/image/fetch/$s_!Hezm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 1272w, https://substackcdn.com/image/fetch/$s_!Hezm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hezm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png" width="1148" height="571" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:571,&quot;width&quot;:1148,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:204461,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/dgtlmoon/changedetection.io&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/198730899?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.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_!Hezm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 424w, https://substackcdn.com/image/fetch/$s_!Hezm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 848w, https://substackcdn.com/image/fetch/$s_!Hezm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.png 1272w, https://substackcdn.com/image/fetch/$s_!Hezm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf780d3-ac1a-4426-8bfc-e014244dda9f_1148x571.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><ul><li><p><strong><a href="https://github.com/systeminit/swamp">swamp</a></strong> is a CLI that supercharges AI agents to build reviewable, shareable operational workflows, stored as versioned YAML in a Git directory.</p></li><li><p><strong><a href="https://github.com/projectcapsule/capsule">capsule</a></strong> is a multi-tenancy and policy framework for Kubernetes that enforces namespace isolation and resource policies across tenant clusters.</p></li><li><p><strong><a href="https://github.com/Avijit07x/git-switch">git-switch</a></strong> is a native Git client that runs dev servers directly from the UI.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HRgx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HRgx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HRgx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HRgx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HRgx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HRgx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg" width="464" height="464" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1200,&quot;resizeWidth&quot;:464,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Did You Ask Claude&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Did You Ask Claude" title="Did You Ask Claude" srcset="https://substackcdn.com/image/fetch/$s_!HRgx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 424w, https://substackcdn.com/image/fetch/$s_!HRgx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 848w, https://substackcdn.com/image/fetch/$s_!HRgx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!HRgx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f170553-959e-4606-8339-4c7bfa9ecd51_1200x1200.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #214: GitHub Under AI Load, microVMs Aren't Optional Anymore, AI Assistants Leak Your Chats and StackOverflow Drops Ingress-NGINX]]></title><description><![CDATA[GitHub buckles under AI-generated code volume, pushing users toward Forgejo. Plus: microVM isolation goes mandatory, trackers leak Claude and ChatGPT conversations, and Stack Overflow swaps Ingress-NG]]></description><link>https://www.devopsbulletin.com/p/digest-214-github-under-ai-load-microvms</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-214-github-under-ai-load-microvms</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 15 May 2026 15:29:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/LBn9JCChrYw" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>On the news side, a detailed case that your container was never a security boundary, and why microVM isolation is now mandatory for running untrusted agent code. GitHub is having its worst stretch in years: the Pragmatic Engineer explains why AI-generated code volume breaks GitHub and not its competitors, LeadDev documents the reliability crisis and user exodus, and one engineer walks through his move to self-hosted Forgejo. LeakyLM researchers caught trackers inside Claude, ChatGPT, Grok, and Perplexity leaking conversations to Meta, Google, and TikTok ad networks, while Wiz published part two of its teardown of prompt injection and secret exfiltration in AI-powered GitHub Actions. Plus: how Stack Overflow replaced Ingress-NGINX with Istio, the 15 CI/CD metrics worth tracking, and how malicious identity providers can inject ghost identities into multi-SSO AWS Cognito user pools.</p><p>On the tutorial side: zero-downtime blue-green frontend deploys on a single EC2 instance with Docker and Nginx, a ten-control GitHub Actions security checklist for surviving supply chain attacks, a breakdown of how Docker&#8217;s ONBUILD directive becomes a hidden attack vector in base images, Anthropic&#8217;s own guide to running Claude Code in large codebases, a walkthrough of automating dev workflows with MCP, schema validation for Terraform input configs using CUE, and querying Redis with plain SQL.</p><p>For videos this week: an argument for why Jenkins is now effectively dead, and a look at the single hottest programming skill to have in 2026.</p><p>This week's open source picks include deepsec, a Vercel Labs scanner that runs coding agents across microVMs to find vulnerabilities in large repos; coroot, an eBPF observability platform with zero-instrumentation telemetry and AI root cause analysis; dockhand, a Docker management UI on a hardened Wolfi OS layer; re_gent, version control for AI coding agents that records which prompt wrote each line; petri, a drop-in PostgreSQL replacement that hands every test its own isolated database; tfrev, a Claude-powered reviewer that flags dangerous Terraform plan mismatches; and workshop, a local debugger for coding agents that streams traces and self-heals failing code.</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://emirb.github.io/blog/microvm-2026">Your container is not a sandbox</a></strong></p></li><li><p><strong><a href="https://blog.pragmaticengineer.com/the-pulse-ai-load-breaks-github">AI load breaks GitHub, why not other vendors?</a></strong></p></li><li><p><strong><a href="https://leaddev.com/software-quality/whats-gone-wrong-at-github">What&#8217;s gone wrong at GitHub?</a></strong></p></li><li><p><strong><a href="https://jorijn.com/en/blog/leaving-github-for-forgejo/">Why I&#8217;m leaving GitHub for Forgejo</a></strong></p></li><li><p><strong><a href="https://leakylm.github.io/">AI assistants are leaking your conversations</a></strong></p></li><li><p><strong><a href="https://www.wiz.io/blog/github-actions-security-ai-powered-actions-vulnerabilities">The (in)security landscape of AI-powered GitHub Actions</a></strong></p></li><li><p><strong><a href="https://www.dheeth.blog/llm-serving-is-not-normal-web-serving">Everything you know about scaling web apps breaks when you serve an LLM</a></strong></p></li><li><p><strong><a href="https://stackoverflow.blog/2026/05/06/how-we-replaced-nginx-ingress-at-stack-overflow">How we replaced Ingress-NGINX at Stack Overflow</a></strong></p></li><li><p><strong><a href="https://spacelift.io/blog/ci-cd-metrics">Top 15 CI/CD metrics</a></strong></p></li><li><p><strong><a href="https://blog.doyensec.com/2026/05/05/cloudsectidbits-masso-cognito-sso.html">The danger of multi-SSO AWS Cognito user pools</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://corgea.com/learn/github-actions-security-checklist">GitHub Actions security checklist for supply chain attacks</a></strong></p></li><li><p><strong><a href="https://brendanthompson.com/schema-validation-for-terraform-input-configuration">Schema validation for Terraform input configuration</a></strong></p></li><li><p><strong><a href="https://redis.io/blog/use-redis-with-sql">Use Redis with SQL</a></strong></p></li><li><p><strong><a href="https://saadh393.github.io/projects/blue-green-deployment-zero-downtime">Zero downtime frontend deploys with blue-green on a single EC2</a></strong></p></li><li><p><strong><a href="https://www.o3c.no/knowledge/unmasking-the-docker-onbuild-supply-chain-attack-vector">Unmasking the Docker ONBUILD supply chain attack vector</a></strong></p></li><li><p><strong><a href="https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start">How Claude Code works in large codebases</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZjEr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 424w, https://substackcdn.com/image/fetch/$s_!ZjEr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 848w, https://substackcdn.com/image/fetch/$s_!ZjEr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!ZjEr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZjEr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png" width="516" height="354.0412087912088" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:999,&quot;width&quot;:1456,&quot;resizeWidth&quot;:516,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://claude.com/blog/how-claude-code-works-in-large-codebases-best-practices-and-where-to-start&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZjEr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 424w, https://substackcdn.com/image/fetch/$s_!ZjEr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 848w, https://substackcdn.com/image/fetch/$s_!ZjEr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.png 1272w, https://substackcdn.com/image/fetch/$s_!ZjEr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83e96b10-b593-4181-ac0c-e57e75a7c8ee_2880x1976.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://www.youtube.com/watch?v=6VBhFq5SJ0s">Automate your dev workflows with MCP</a></strong></p></li><li><p><strong><a href="https://theburningmonk.com/2026/05/inbox-outbox-patterns-for-reliable-event-processing">Inbox and outbox patterns for reliable event processing</a></strong></p></li><li><p><strong><a href="https://medium.com/@antooo5113/my-favorite-go-back-end-architecture-pattern-122a5affd370">My favorite Go backend architecture pattern</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-LBn9JCChrYw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;LBn9JCChrYw&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/LBn9JCChrYw?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-keOpLOs_vhA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;keOpLOs_vhA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/keOpLOs_vhA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/vercel-labs/deepsec">deepsec</a></strong> runs coding agents across microVMs to scan large repos for vulnerabilities, resuming where it left off after interruptions.</p></li><li><p><strong><a href="https://github.com/coroot/coroot">coroot</a></strong> is an eBPF-based observability platform with zero-instrumentation metrics, logs, traces, and AI-powered root cause analysis.</p></li><li><p><strong><a href="https://github.com/Finsys/dockhand">dockhand</a></strong> is a Docker management UI for container orchestration, Compose stacks, and Git-based deployments.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/Finsys/dockhand/tree/main" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YbOs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 424w, https://substackcdn.com/image/fetch/$s_!YbOs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 848w, https://substackcdn.com/image/fetch/$s_!YbOs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 1272w, https://substackcdn.com/image/fetch/$s_!YbOs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YbOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp" width="1456" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:298844,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:&quot;https://github.com/Finsys/dockhand/tree/main&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/197822817?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YbOs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 424w, https://substackcdn.com/image/fetch/$s_!YbOs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 848w, https://substackcdn.com/image/fetch/$s_!YbOs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 1272w, https://substackcdn.com/image/fetch/$s_!YbOs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647a2e6f-5e94-4866-a3d4-c1ddc57e09c1_3680x2276.webp 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><strong><a href="https://github.com/regent-vcs/re_gent">re_gent</a></strong> is version control for AI coding agents that records which prompt wrote each line, with rgt log, rgt blame, and rgt show.</p></li><li><p><strong><a href="https://github.com/taktekhq/petri">petri</a></strong> is a drop-in PostgreSQL replacement that gives every test its own isolated, seeded database with no cleanup or shared-state flakiness.</p></li><li><p><strong><a href="https://github.com/bishalOps/tfrev">tfrev</a></strong> uses Claude to review Terraform plans against code changes and flag intent mismatches like a tag edit triggering a full destroy and recreate.</p></li><li><p><strong><a href="https://github.com/raindrop-ai/workshop">workshop</a></strong> is a local debugger for coding agents that streams traces in real time, writes evals, and self-heals failing code until assertions pass.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XWln!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XWln!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XWln!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XWln!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XWln!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XWln!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg" width="434" height="428.4674220963173" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:697,&quot;width&quot;:706,&quot;resizeWidth&quot;:434,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Meanwhile WinRAR Users Treating The Trial Expired Pop-Up Like A Side Quest&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Meanwhile WinRAR Users Treating The Trial Expired Pop-Up Like A Side Quest" title="Meanwhile WinRAR Users Treating The Trial Expired Pop-Up Like A Side Quest" srcset="https://substackcdn.com/image/fetch/$s_!XWln!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XWln!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XWln!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XWln!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc941e943-7649-4d5d-b0e4-03bd6fbbf6f5_706x697.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #213: Terraform is dead, AI finds 20-year-old PostgreSQL bugs, AWS ships S3 Files and 54 days with port 22 open]]></title><description><![CDATA[AI uncovers 20-year-old RCE bugs in PostgreSQL and MariaDB, AWS ships a native filesystem layer in front of S3, and one engineer documents 54 days of port 22 exposed to the internet]]></description><link>https://www.devopsbulletin.com/p/digest-213-terraform-is-dead-ai-finds</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-213-terraform-is-dead-ai-finds</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 08 May 2026 16:23:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/m5t08CREHcE" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png" width="268" height="83" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cMSn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 424w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 848w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1272w, https://substackcdn.com/image/fetch/$s_!cMSn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a6c02f1-19c9-4125-b185-7abd26d37a72_268x83.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><a href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email">IaCConf 2026</a> is this edition&#8217;s sponsor, a virtual event on May 14th that brings together platform engineering leaders to discuss what happens to your platform abstractions and metrics when AI becomes a first-class consumer of your infrastructure.</p><p>On the news side, a direct argument that Terraform is now obsolete, as LLM can translate intent into infrastructure without an intermediate DSL. One engineer left port 22 open on the internet for 54 days and documented exactly who showed up. AWS shipped S3 Files, a native NFS layer that lets Lambda, EKS, and EC2 mount S3 buckets as shared filesystems without changing application code. Researchers using AI tools found RCE vulnerabilities in PostgreSQL&#8217;s pgcrypto extension and MariaDB&#8217;s JSON validation logic that had been sitting there for over 20 years, with patches now out for both. Postman shared how they scaled security reviews across engineering without creating a bottleneck. Google published its official BigQuery threat model covering 14 attack vectors, including privilege escalation and data exfiltration.</p><p>On the tutorial side: a SQL learning game built around Squid Game&#8217;s format with 9 progressive levels, a PCI-DSS compliant GKE framework walkthrough for financial institutions, building a serverless AI agent code review system on top of AWS S3 Files and Lambda, a step-by-step guide to fixing CrashLoopBackoff in Kubernetes, Cilium&#8217;s CI/CD security lessons from running a large open source project, Slack&#8217;s migration of 700+ EMR pipeline jobs from SSH to REST with zero downtime, and a practical look at stopping Claude Code from leaking sensitive data using Cedar policy-as-code.</p><p>For videos this week: on networking concepts every DevOps engineer needs to know, and a deep dive into why the GitHub situation just got worse.</p><p>This week&#8217;s open source picks include late.sh, a Rust SSH terminal with real-time chat, lofi streaming, and games on a PostgreSQL backend; frak, a Node.js CLI that deploys files over rsync with interactive diffs and post-deploy hooks; Sn1per, an offensive security platform in Shell and Lua orchestrating 90+ tools with 600+ exploits in a single Docker workspace; GreptimeDB, a Rust observability database unifying metrics, logs, and traces as a drop-in for Prometheus, Loki, and Elasticsearch at 50x lower storage cost; waffle, a Go CLI that runs AWS Well-Architected reviews against Terraform files via Amazon Bedrock; and graphify, a Python tool that turns codebases, docs, PDFs, and videos into knowledge graphs for Claude Code, Cursor, and GitHub Copilot.</p><h4>Your Platform Engineering playbook needs an AI rethink</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eQn3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!eQn3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!eQn3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!eQn3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eQn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png" width="1200" height="640" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:640,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:189357,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/196771244?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.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_!eQn3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 424w, https://substackcdn.com/image/fetch/$s_!eQn3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 848w, https://substackcdn.com/image/fetch/$s_!eQn3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.png 1272w, https://substackcdn.com/image/fetch/$s_!eQn3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a9c0e2b-91d1-4d7c-abba-820aaed789b7_1200x640.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><a href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email">Join</a> the sharpest minds in platform engineering from Google, AHEAD, Mondelez, &amp; Weave Intelligence to learn if the metrics, abstractions, and practices you&#8217;re relying on today will still hold up as AI becomes a first-class consumer of your platform.</p><p><strong><a href="https://www.iacconf.com/iacconf-2026?refid=DevOps-Bulletin&amp;utm_campaign=40984474-FY26%20-%20WW%20-%20Virtual%20Event%20-%20IaCConf%20-%20May%202026&amp;utm_source=DevOps-Bulletin&amp;utm_medium=email">Register Now - May 14th</a></strong></p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://grahamgilbert.com/blog/2026/04/20/terraform-is-dead/">Terraform is dead</a></strong></p></li><li><p><strong><a href="https://arman-bd.hashnode.dev/i-left-port-22-open-on-the-internet-for-54-days-here-s-who-showed-up">I left port 22 open on the internet for 54 days, here&#8217;s who showed up</a></strong></p></li><li><p><strong><a href="https://www.lastweekinaws.com/blog/s3-is-not-a-filesystem-but-now-theres-one-in-front-of-it/">S3 is not a filesystem, but now there&#8217;s one in front of it</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/04/30/ai-sandboxing-is-having-its-kubernetes-moment">AI sandboxing is having its Kubernetes moment</a></strong></p></li><li><p><strong><a href="https://blog.postman.com/how-we-scaled-security-reviews-without-slowing-down-engineering/">How we scaled security reviews without slowing down engineering</a></strong></p></li><li><p><strong><a href="https://gordonmurray.ie/data/2026/05/02/s3-is-the-perfect-place-to-store-data-until-you-try-to-search-it.html">S3 is the perfect place to store data, until you try to search it</a></strong></p></li><li><p><strong><a href="https://docs.cloud.google.com/docs/security/threat-model/bigquery-threat-model">BigQuery threat model report</a></strong></p></li><li><p><strong><a href="https://www.csoonline.com/article/4167137/ai-finds-20-year-old-bugs-in-postgresql-and-mariadb.html">AI finds 20-year-old bugs in PostgreSQL and MariaDB</a></strong></p></li><li><p><strong><a href="https://codecraftdiary.com/2026/04/29/trunk-based-development-your-pull-requests-are-still-too-big">Trunk-based development: your pull requests are still too big</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://datalemur.com/sql-game">SQL Squid Game</a></strong></p></li><li><p><strong><a href="https://blog.devops.dev/building-a-pci-dss-compliant-gke-framework-for-financial-institutions-33868007fd6a">Building a PCI-DSS compliant GKE framework for financial institutions</a></strong></p></li><li><p><strong><a href="https://edjgeek.com/blog/s3-files-lambda-agents/">Lambda just got a file system. I put AI agents on it</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://edjgeek.com/blog/s3-files-lambda-agents/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BiQp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 424w, https://substackcdn.com/image/fetch/$s_!BiQp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 848w, https://substackcdn.com/image/fetch/$s_!BiQp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 1272w, https://substackcdn.com/image/fetch/$s_!BiQp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BiQp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png" width="1200" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Architecture diagram showing the orchestrator cloning a repo to the S3 Files mount, then security and style agents reading from the same mount in parallel&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://edjgeek.com/blog/s3-files-lambda-agents/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Architecture diagram showing the orchestrator cloning a repo to the S3 Files mount, then security and style agents reading from the same mount in parallel" title="Architecture diagram showing the orchestrator cloning a repo to the S3 Files mount, then security and style agents reading from the same mount in parallel" srcset="https://substackcdn.com/image/fetch/$s_!BiQp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 424w, https://substackcdn.com/image/fetch/$s_!BiQp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 848w, https://substackcdn.com/image/fetch/$s_!BiQp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.png 1272w, https://substackcdn.com/image/fetch/$s_!BiQp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4240e8cd-a61c-43b2-b5d8-2c0220e1472f_1200x730.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><ul><li><p><strong><a href="https://momjian.us/main/writings/pgsql/mcp.pdf">Building an MCP server using PostgreSQL</a></strong></p></li><li><p><strong><a href="https://securityboulevard.com/2026/04/how-do-i-fix-crashloopbackoff-in-kubernetes-step-by-step">How do I fix CrashLoopBackoff in Kubernetes? </a></strong></p></li><li><p><strong><a href="https://blogs.halodoc.io/secured-pii-encryption">Building secure PII encryption at scale</a></strong></p></li><li><p><strong><a href="https://cilium.io/blog/2026/05/06/securing-cicd-open-source-lessons-from-cilium">Securing CI/CD for an open source project</a></strong></p></li><li><p><strong><a href="https://slack.engineering/from-ssh-to-rest-a-security-driven-modernization-of-slacks-emr-data-pipelines">A security-driven modernization of Slack&#8217;s EMR data pipelines</a></strong></p></li><li><p><strong><a href="https://blog.sondera.ai/p/claude-code-data-leaks-security">How to stop Claude Code from leaking sensitive data</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-w0SQGCt-6Ro" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;w0SQGCt-6Ro&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/w0SQGCt-6Ro?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-m5t08CREHcE" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;m5t08CREHcE&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/m5t08CREHcE?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/mpiorowski/late-sh">late.sh</a></strong> is a Rust-based terminal social platform over SSH with real-time chat, lofi streaming, and shared TUI games.</p></li><li><p><strong><a href="https://github.com/frakjs/frak">frak</a></strong> is a Node.js CLI that deploys files to remote servers via rsync over SSH with interactive diffs and post-deploy hooks.</p></li><li><p><strong><a href="https://github.com/1N3/Sn1per">Sn1per</a></strong> is a Shell/Lua offensive security platform consolidating recon, scanning, exploitation, and reporting across 90+ tools in one Docker workspace.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/1N3/Sn1per" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!psM0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 424w, https://substackcdn.com/image/fetch/$s_!psM0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 848w, https://substackcdn.com/image/fetch/$s_!psM0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!psM0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!psM0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png" width="1456" height="1021" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1021,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:255281,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://github.com/1N3/Sn1per&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/196771244?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.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_!psM0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 424w, https://substackcdn.com/image/fetch/$s_!psM0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 848w, https://substackcdn.com/image/fetch/$s_!psM0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!psM0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c28d9b7-bc05-44cd-b4f7-f41465fe2d96_1720x1206.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><ul><li><p><strong><a href="https://github.com/GreptimeTeam/greptimedb">GreptimeDB</a></strong> is a Rust observability database that unifies metrics, logs, and traces as a drop-in replacement for Prometheus, Loki, and Elasticsearch.</p></li><li><p><strong><a href="https://github.com/partly-notes/waffle">waffle</a></strong> is a Go CLI that runs AWS Well-Architected Framework reviews against Terraform files via Amazon Bedrock.</p></li><li><p><strong><a href="https://github.com/pgEdge/ai-dba-workbench">ai-dba-workbench</a></strong> is a Go/TypeScript PostgreSQL monitoring platform with AI anomaly detection and natural language cluster queries via MCP.</p></li><li><p><strong><a href="https://github.com/abdosorour7/git-commands-cheatsheet">git-commands-cheatsheet</a></strong> is a zero-dependency HTML reference covering 115 Git commands.</p></li><li><p><strong><a href="https://github.com/safishamsi/graphify">graphify</a></strong> is a Python tool that turns codebases, docs, PDFs, and videos into queryable knowledge graphs for Claude Code, Cursor, and GitHub Copilot.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XSUY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XSUY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XSUY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XSUY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XSUY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XSUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg" width="461" height="436.21505376344084" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:616,&quot;width&quot;:651,&quot;resizeWidth&quot;:461,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/ProgrammerHumor - hearMeOutThisWillHappenLaterThisYear&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/ProgrammerHumor - hearMeOutThisWillHappenLaterThisYear" title="r/ProgrammerHumor - hearMeOutThisWillHappenLaterThisYear" srcset="https://substackcdn.com/image/fetch/$s_!XSUY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XSUY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XSUY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XSUY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89193715-56fd-4a80-aff5-79efc156d338_651x616.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Digest #212: GitHub Actions Weakest Link, Lambda's Invisible Network, Cloudflare's AI Stack and Terragrunt is Dead]]></title><description><![CDATA[Pulling back the curtain on Lambda's invisible network to GitHub Actions being the biggest CI/CD attack surface. Add Cloudflare sharing the internal AI engineering stack they actually use.]]></description><link>https://www.devopsbulletin.com/p/digest-212-github-actions-weakest</link><guid isPermaLink="false">https://www.devopsbulletin.com/p/digest-212-github-actions-weakest</guid><dc:creator><![CDATA[Mohamed Labouardy]]></dc:creator><pubDate>Fri, 01 May 2026 15:54:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/P6u0K3-z2p4" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://info.jetbrains.com/teamcity-livestream-may12-2026.html?utm_source=newsletter_devops-bulletin&amp;utm_medium=cpc&amp;utm_campaign=dzone-nl-livestream" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9KW_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 424w, https://substackcdn.com/image/fetch/$s_!9KW_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 848w, https://substackcdn.com/image/fetch/$s_!9KW_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 1272w, https://substackcdn.com/image/fetch/$s_!9KW_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9KW_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png" width="268" height="76" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18d00937-2800-4f55-b0e3-505a91de521d_268x76.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:76,&quot;width&quot;:268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5721,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://info.jetbrains.com/teamcity-livestream-may12-2026.html?utm_source=newsletter_devops-bulletin&amp;utm_medium=cpc&amp;utm_campaign=dzone-nl-livestream&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/196123668?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.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_!9KW_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 424w, https://substackcdn.com/image/fetch/$s_!9KW_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 848w, https://substackcdn.com/image/fetch/$s_!9KW_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 1272w, https://substackcdn.com/image/fetch/$s_!9KW_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18d00937-2800-4f55-b0e3-505a91de521d_268x76.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p><a href="https://info.jetbrains.com/teamcity-livestream-may12-2026.html?utm_source=newsletter_devops-bulletin&amp;utm_medium=cpc&amp;utm_campaign=dzone-nl-livestream">TeamCity 2026.1</a> introduces a set of focused improvements that make your CI/CD more intuitive, intelligent, and enterprise-ready.</p><p>Werner Vogels published a detailed look at the engineering behind Lambda&#8217;s network. On the security side, GitHub Actions is identified as the weakest link in your CI/CD chain, with a thorough breakdown of how supply chain attacks can move through workflows. Cloudflare shared the internal AI engineering stack they actually run, including how they&#8217;re orchestrating AI code review at scale across their own engineering org. Halodoc documented their migration of AWS MSK from ZooKeeper to KRaft using a canary approach, and one team explains why Dockerfile practices cost you before they ever become a security problem.</p><p>On the tutorial side: a $1,432 to $233/month hosting cut by moving from DigitalOcean to Hetzner with zero downtime, Terraform module design via an AI agent skill built around design decisions first and code generation second, a detailed argument that Terragrunt&#8217;s run-all is broken beyond repair by multi-state transactions, benchmarking workflow execution scalability on Postgres, building a production MCP server in Go, auto-diagnosing Kubernetes alerts with HolmesGPT, and Cloudflare&#8217;s own AI code review pipeline in depth.</p><p>For videos this week: a practical terminal setup combining Tmux, btop, and GPU monitoring into a single system monitoring workflow, a real-world look at what a billion database rows actually looks like in production, and an investigation into why companies spend millions buying GitHub stars.</p><p>This week&#8217;s open source picks include JuiceFS, a Go-based POSIX file system that stores data in S3 and metadata in Redis or MySQL with 10x the sequential throughput of EFS; Gatus, a Go health dashboard that monitors over HTTP, TCP, DNS, gRPC, and 40+ alerting integrations; kured, the CNCF Sandbox Kubernetes daemonset that automates safe node reboots using API server locking; and RedAI, a TypeScript and Python workbench that validates AI-discovered vulnerabilities in live browser and simulator environments before generating reports.</p><h4>AI, Pipelines, and Enterprise CI/CD</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://info.jetbrains.com/teamcity-livestream-may12-2026.html?utm_source=newsletter_devops-bulletin&amp;utm_medium=cpc&amp;utm_campaign=dzone-nl-livestream" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fBav!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!fBav!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!fBav!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!fBav!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fBav!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:683771,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://info.jetbrains.com/teamcity-livestream-may12-2026.html?utm_source=newsletter_devops-bulletin&amp;utm_medium=cpc&amp;utm_campaign=dzone-nl-livestream&quot;,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/196123668?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.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_!fBav!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!fBav!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!fBav!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!fBav!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F600ad9b6-466d-49a1-94cd-7303adc6786d_2560x1440.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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>TeamCity 2026.1 introduces a set of focused improvements that make your CI/CD more intuitive, intelligent, and enterprise-ready. <a href="https://info.jetbrains.com/teamcity-livestream-may12-2026.html?utm_source=newsletter_devops-bulletin&amp;utm_medium=cpc&amp;utm_campaign=dzone-nl-livestream">Join us</a> on May 12th for a live walkthrough of the latest updates, including the new TeamCity CLI and MCP support!</p><h4>Newsworthy stories</h4><ul><li><p><strong><a href="https://www.allthingsdistributed.com/2026/04/the-invisible-engineering-behind-lambdas-network.html">The invisible engineering behind Lambda&#8217;s network</a></strong></p></li><li><p><strong><a href="https://nesbitt.io/2026/04/28/github-actions-is-the-weakest-link.html">GitHub Actions is the weakest link</a></strong></p></li><li><p><strong><a href="https://blog.cloudflare.com/internal-ai-engineering-stack">The AI engineering stack we built internally</a></strong></p></li><li><p><strong><a href="https://cloudnativenow.com/contributed-content/dockerfile-practices-are-a-devops-tax-before-they-are-a-security-concern">Dockerfile practices are a DevOps tax before they are a security concern</a></strong></p></li><li><p><strong><a href="https://blogs.halodoc.io/migrating-aws-msk-from-zookeeper-to-kraft-a-canary-approach">Migrating AWS MSK from ZooKeeper to KRaft</a></strong></p></li></ul><h4>Tutorials of the week</h4><ul><li><p><strong><a href="https://thomasthornton.cloud/terraform-module-design-is-the-hard-part-so-i-built-an-agent-skill-for-it/">Terraform module design is the hard part, so I built an agent skill for it</a></strong></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://thomasthornton.cloud/terraform-module-design-is-the-hard-part-so-i-built-an-agent-skill-for-it/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7bwu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 424w, https://substackcdn.com/image/fetch/$s_!7bwu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 848w, https://substackcdn.com/image/fetch/$s_!7bwu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 1272w, https://substackcdn.com/image/fetch/$s_!7bwu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7bwu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png" width="825" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:825,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram showing the MCP Tools integration with Terraform module creator skill&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://thomasthornton.cloud/terraform-module-design-is-the-hard-part-so-i-built-an-agent-skill-for-it/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram showing the MCP Tools integration with Terraform module creator skill" title="Diagram showing the MCP Tools integration with Terraform module creator skill" srcset="https://substackcdn.com/image/fetch/$s_!7bwu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 424w, https://substackcdn.com/image/fetch/$s_!7bwu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 848w, https://substackcdn.com/image/fetch/$s_!7bwu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.png 1272w, https://substackcdn.com/image/fetch/$s_!7bwu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22c301c5-c30b-4eaa-97cc-cd7422a8665d_825x563.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 buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://isayeter.com/posts/digitalocean-to-hetzner-migration">Migrating from DigitalOcean to Hetzner: from $1,432 to $233/month with zero downtime</a></strong></p></li><li><p><strong><a href="https://stategraph.com/blog/terragrunt-is-dead">Terragrunt is dead: multi-state transactions killed run-all</a></strong></p></li><li><p><strong><a href="https://www.dbos.dev/blog/benchmarking-workflow-execution-scalability-on-postgres">Does Postgres scale?</a></strong></p></li><li><p><strong><a href="https://blog.cloudflare.com/ai-code-review">Orchestrating AI code review at scale</a></strong></p></li><li><p><strong><a href="https://blog.marcolancini.it/2026/blog-my-claude-code-setup">My Claude Code setup</a></strong></p></li><li><p><strong><a href="https://awsfundamentals.com/blog/aws-devops-agent">AWS DevOps Agent: your AI SRE is now on call</a></strong></p></li><li><p><strong><a href="https://www.cncf.io/blog/2026/04/21/auto-diagnosing-kubernetes-alerts-with-holmesgpt-and-cncf-tools/">Auto-diagnosing Kubernetes alerts with HolmesGPT and CNCF tools</a></strong></p></li><li><p><strong><a href="https://foojay.io/today/dockerizing-a-java-26-project-with-docker-init">Dockerizing a Java 26 project with Docker Init</a></strong></p></li><li><p><strong><a href="https://blog.arcjet.com/building-a-production-mcp-server-in-go">Building a production MCP server in Go</a></strong></p></li></ul><h4>Videos of the week</h4><div id="youtube2-xnQWLPGjcOQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;xnQWLPGjcOQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/xnQWLPGjcOQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-sEQ1ecQq0HI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;sEQ1ecQq0HI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/sEQ1ecQq0HI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div id="youtube2-P6u0K3-z2p4" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;P6u0K3-z2p4&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/P6u0K3-z2p4?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h4>Projects of the week</h4><ul><li><p><strong><a href="https://github.com/juicedata/juicefs">JuiceFS</a></strong> is a Go-based POSIX distributed file system that stores data in S3 and metadata in Redis or MySQL, with 10x more throughput than EFS.</p></li><li><p><strong><a href="https://github.com/TwiN/gatus">Gatus</a></strong> is a Go health dashboard that monitors services over HTTP, TCP, DNS, gRPC, and SSH with 40+ alerting integrations.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://github.com/TwiN/gatus" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vfeg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vfeg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vfeg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vfeg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vfeg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg" width="1456" height="1001" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg&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;:548995,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:&quot;https://github.com/TwiN/gatus&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devopsbulletin.com/i/196123668?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vfeg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Vfeg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Vfeg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Vfeg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9952974c-7ae5-4179-b7b7-e8e525a40206_2560x1760.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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><ul><li><p><strong><a href="https://github.com/kernalix7/winpodx">winpodx</a></strong> is a Python tool that runs Windows apps as native Linux windows using FreeRDP RemoteApp and a containerized Windows instance.</p></li><li><p><strong><a href="https://github.com/kubereboot/kured">kured</a></strong> is a Go Kubernetes daemonset that safely reboots nodes one at a time using API server locking. CNCF Sandbox project.</p></li><li><p><strong><a href="https://github.com/kpolley/redai">RedAI</a></strong> is a TypeScript/Python workbench that uses AI agents to find and validate vulnerabilities in live browser and simulator environments.</p></li><li><p><strong><a href="https://github.com/rocky-data/rocky">Rocky</a></strong> is a Rust control plane for data warehouse pipelines with column-level lineage, schema drift detection, and compile-time data contracts.</p></li></ul><h4>Meme of the week</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cx3b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cx3b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cx3b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cx3b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cx3b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cx3b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg" width="340" height="426.59375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:803,&quot;width&quot;:640,&quot;resizeWidth&quot;:340,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/ProgrammerHumor - reasonBehindPrematureExhaustionOfTokens&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/ProgrammerHumor - reasonBehindPrematureExhaustionOfTokens" title="r/ProgrammerHumor - reasonBehindPrematureExhaustionOfTokens" srcset="https://substackcdn.com/image/fetch/$s_!cx3b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 424w, https://substackcdn.com/image/fetch/$s_!cx3b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 848w, https://substackcdn.com/image/fetch/$s_!cx3b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!cx3b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fded75f94-1a1a-4dfd-8183-b3f76414be62_640x803.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><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" class="icon-noB79L"><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 buttonBase-GK1x3M"><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 icon-noB79L"><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="pullquote"><p> If you have feedback to share or are interested in <a href="https://www.devopsbulletin.com/p/sponsorships">sponsoring</a> this newsletter, feel free to reach out via <em><a href="https://www.linkedin.com/in/mlabouardy/">LinkedIn</a></em> or simply reply to this email. </p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devopsbulletin.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading DevOps Bulletin! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>