<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Siddhesh Surve</title>
    <description>The latest articles on DEV Community by Siddhesh Surve (@siddhesh_surve).</description>
    <link>https://dev.to/siddhesh_surve</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3674466%2F4395d561-d8af-4cbb-be2a-2fd3696ad2b2.png</url>
      <title>DEV Community: Siddhesh Surve</title>
      <link>https://dev.to/siddhesh_surve</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/siddhesh_surve"/>
    <language>en</language>
    <item>
      <title>🚨 Anthropic Just Dropped "Claude Duet" and It's the Most Proactive AI Yet (Here's How It Works)</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Fri, 23 Oct 2026 02:10:48 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/anthropic-just-dropped-claude-duet-and-its-the-most-proactive-ai-yet-heres-how-it-works-11ig</link>
      <guid>https://dev.to/siddhesh_surve/anthropic-just-dropped-claude-duet-and-its-the-most-proactive-ai-yet-heres-how-it-works-11ig</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe5sx60bmm1g4pqy0md4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe5sx60bmm1g4pqy0md4g.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've been using AI tools to summarize text or generate code, you know the drill: you talk, the AI responds, and nothing happens unless you ask for it. But on October 21, 2026, Anthropic completely flipped that dynamic with the release of &lt;strong&gt;Claude Duet&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Currently in a waitlisted research preview for Pro and Max users in the US, Claude Duet isn't just a chatbot—it is a proactive agent powered by Opus 5.5. It doesn't wait for your instructions. It monitors your work, builds out tasks on its own virtual machine, and then taps you on the shoulder when it needs your approval.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of why this is Anthropic's answer to Meta's Muse, and how its architecture shifts us away from prompt-engineering into true autonomous delegation.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 The "Proactive" Shift: How Duet Actually Works
&lt;/h2&gt;

&lt;p&gt;The central proposition of Claude Duet is that you shouldn't have to initiate every interaction. Instead of acting like a search engine, it acts like an actual Chief of Staff.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Morning Briefing &amp;amp; Background Checks
&lt;/h3&gt;

&lt;p&gt;Each morning, Duet sends you a short brief summarizing the most critical items across your connected apps. Throughout the day, it checks those connected accounts every few hours. (Anthropic limits this to periodic checks rather than real-time supervision, as constant monitoring would rapidly burn through your plan's usage limits.) &lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Isolated Virtual Machine
&lt;/h3&gt;

&lt;p&gt;When you assign Duet a complex task, it doesn't run locally on your device. Under the hood, Duet runs on a virtual machine equipped with its own browser. You can describe a task in a short message and step away; Duet will figure out which apps to use, take the necessary steps in the background, and notify you when it's done. It does not require your laptop or phone to be awake.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Approval Gate (Trust, but Verify)
&lt;/h3&gt;

&lt;p&gt;Duet can read, draft, and prepare work on its own, but it has strict security boundaries. Before it sends a message, signs a document via Docusign, deletes a file, or makes a payment, it pauses and shows you exactly what it is about to do. It waits for your explicit approval before executing. Certain actions—like trading securities or moving money between bank accounts—are completely off-limits, even if you approve them.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 6,000+ Integrations: Building the Nervous System
&lt;/h2&gt;

&lt;p&gt;An agent is only as good as the tools it can access. Duet inherits your existing context, memory, and skills from your standard Claude account. But it also taps into over 6,000 connectors and plugins in the Claude Marketplace. &lt;/p&gt;

&lt;p&gt;Here is what early testers and small business owners are already doing with it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;CRM &amp;amp; Sales:&lt;/strong&gt; Drafting follow-up emails using contact and deal history directly from HubSpot.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Marketing:&lt;/strong&gt; Turning a product launch into an automated social campaign in Canva.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;E-Commerce:&lt;/strong&gt; Setting up, designing, and managing Shopify stores (with a richer visual storefront editor coming soon).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Finance &amp;amp; Payroll:&lt;/strong&gt; Checking for unpaid invoices in Stripe or QuickBooks, drafting reminders, and running payroll in Gusto.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Handling Real-World Payments
&lt;/h3&gt;

&lt;p&gt;For business purchases, Duet integrates directly with Stripe's digital wallet, &lt;strong&gt;Link&lt;/strong&gt;. If Duet needs to buy software or supplies, it confirms the item with you, prompts Link to ask for approval, and then processes the payment using a virtual card so your actual credit card number is never shared. It can also use Shop Pay for online checkouts.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 The Architecture of Delegation (Conceptual Code)
&lt;/h2&gt;

&lt;p&gt;While Duet operates as a consumer app, if we look at the underlying architecture Anthropic is using to orchestrate these proactive checks, it resembles a sophisticated asynchronous job queue with state management.&lt;/p&gt;

&lt;p&gt;If you were building a similar proactive loop for your own internal tools, it might look conceptually like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;claude_mcp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ToolRegistry&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ProactiveAgent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;connected_tools&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;user_context&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connected_tools&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_running&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;background_monitoring_loop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_running&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# 1. Periodically check connected accounts (e.g., every 3 hours)
&lt;/span&gt;            &lt;span class="n"&gt;new_events&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fetch_updates_from_tools&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;new_events&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="c1"&gt;# 2. Opus 5.5 evaluates if the event needs attention
&lt;/span&gt;                &lt;span class="n"&gt;priority&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluate_urgency&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;priority&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;HIGH&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="c1"&gt;# 3. Draft a response or prepare an action
&lt;/span&gt;                    &lt;span class="n"&gt;proposed_action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;draft_solution&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

                    &lt;span class="c1"&gt;# 4. The Approval Gate: Alert the user and wait
&lt;/span&gt;                    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;notify_user_for_approval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;proposed_action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

            &lt;span class="c1"&gt;# Sleep to preserve rate limits / token usage
&lt;/span&gt;            &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10800&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 3 hours
&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute_approved_action&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;requires_payment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Invoke secure virtual card provisioning (e.g., Stripe Link)
&lt;/span&gt;            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;provision_virtual_card&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Anthropic is making a massive bet that the future of AI isn't a chat window you type into—it's an active colleague that runs in the background. While Anthropic admits the preview can sometimes misjudge the urgency of tasks and is currently weaker at personal errands than professional work, the ability to hand off a multi-step project and literally close your laptop is a game-changer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you on the waitlist for Claude Duet? What is the first background task you would assign to it? Let's discuss in the comments below! 👇&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>techtalks</category>
    </item>
    <item>
      <title>🛑 Stop Building Custom OAuth Flows. Do This Instead.</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Tue, 20 Oct 2026 03:17:45 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/stop-building-custom-oauth-flows-do-this-instead-ah9</link>
      <guid>https://dev.to/siddhesh_surve/stop-building-custom-oauth-flows-do-this-instead-ah9</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdhh5n0g0tlwgn2yaozbi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdhh5n0g0tlwgn2yaozbi.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AI boom has exposed the biggest bottleneck in modern software engineering: &lt;strong&gt;Integration plumbing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are building an AI agent, a developer tool, or a productivity app in 2026, your application is useless if it cannot access your users' data. Your users expect your app to seamlessly connect to their Slack channels, GitHub pull requests, Google Drive files, and Salesforce CRM. &lt;/p&gt;

&lt;p&gt;But to actually build these connections, you have to run the dreaded OAuth gauntlet. You have to register an app with every single provider, build the OAuth flow, manage secure token storage, write logic for token refreshes, and handle the inevitable edge cases when tokens expire. Multiply that by 10 different providers, and you have just spent weeks building infrastructure that doesn't actually differentiate your core product.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;WorkOS Pipes&lt;/strong&gt;, the tool that is officially killing the custom OAuth flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔌 What is WorkOS Pipes?
&lt;/h3&gt;

&lt;p&gt;WorkOS Pipes is a new API and embeddable widget that handles the entire lifecycle of third-party integrations for you. It is designed to let you connect your application to external data sources without forcing you to build and manage the underlying authorization infrastructure yourself. &lt;/p&gt;

&lt;p&gt;Instead of dealing with tokens directly, you drop the Pipes widget into your app, let users connect their accounts with a single click, and then make &lt;em&gt;one&lt;/em&gt; API call to WorkOS to get a fresh, valid access token whenever you need it. &lt;/p&gt;

&lt;h3&gt;
  
  
  💻 How it Works (The Code)
&lt;/h3&gt;

&lt;p&gt;The integration experience is brilliantly simple and divided into two parts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Frontend Widget&lt;/strong&gt;&lt;br&gt;
Pipes provides a pre-built, embeddable UI component (built with Radix Themes and TanStack Query) that displays a list of available integrations. Your users simply check a box to connect their Google Workspace, GitHub, or Notion. No complex setup is required on their end, and the OAuth handshake happens entirely behind the scenes. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The Backend API Call&lt;/strong&gt;&lt;br&gt;
When your app actually needs to fetch data from the connected service, you don't query your own database for a stored token or write refresh logic. You simply ask the Pipes API for a token, and it guarantees you get a fresh one.&lt;/p&gt;

&lt;p&gt;Here is what it looks like in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// 1. Get a fresh, guaranteed-valid access token from Pipes&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;workos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pipes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAccessToken&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; 
  &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;github&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; 
&lt;span class="p"&gt;});&lt;/span&gt; 

&lt;span class="c1"&gt;// 2. Pass it directly to the provider's official SDK&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;github&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GitHubClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pullRequests&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getPullRequests&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it. WorkOS handles securely storing the credentials, automatically refreshing expired tokens, managing the exact scopes you requested, and surfacing errors if re-authorization is ever needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤖 Why This is Massive for AI Agents
&lt;/h3&gt;

&lt;p&gt;This architecture is an absolute game-changer for AI applications. AI assistants require immense amounts of context from multiple sources to be useful. If you are building an AI scheduler, it needs access to Gmail and Google Calendar. If you are building an autonomous coding platform, it needs access to code repositories and task management tools.&lt;/p&gt;

&lt;p&gt;By decoupling the integration flow from your core authentication (like Okta or Auth0), Pipes allows users to independently authorize specific data silos for your AI to access.&lt;/p&gt;

&lt;p&gt;Pipes supports a massive list of over 100 providers, including GitHub, Google, Slack, Salesforce, Asana, Dropbox, HubSpot, Intercom, and Sentry.&lt;/p&gt;

&lt;p&gt;If you are tired of spending your engineering cycles on token management instead of shipping actual features, it is time to delete your custom OAuth code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you ever had to build a complex multi-provider OAuth system? Let's discuss the pain in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>api</category>
      <category>architecture</category>
    </item>
    <item>
      <title>🚨 The AI Code Boom is Breaking CI/CD Budgets (And How to Fix It)</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Tue, 06 Oct 2026 03:11:44 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/the-ai-code-boom-is-breaking-cicd-budgets-and-how-to-fix-it-35lc</link>
      <guid>https://dev.to/siddhesh_surve/the-ai-code-boom-is-breaking-cicd-budgets-and-how-to-fix-it-35lc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsupzo6ltiulex0oaleya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsupzo6ltiulex0oaleya.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're a developer in 2026, you're likely using AI tools like Cursor, Claude, or GitHub Copilot to write code faster than ever before. Productivity is through the roof, and teams are shipping features at unprecedented speeds. &lt;/p&gt;

&lt;p&gt;But talk to your DevOps or Platform Engineering team, and you'll hear a different story. They are panicking. &lt;/p&gt;

&lt;p&gt;Why? Because when code volume explodes, pull request volume explodes. And when pull requests explode, &lt;strong&gt;your CI/CD bill skyrockets&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is why the AI coding revolution is breaking traditional CI/CD budgets, why the hottest AI company on the planet just abandoned the legacy CI model, and how you can fix your infrastructure before your next cloud bill arrives.&lt;/p&gt;




&lt;h2&gt;
  
  
  💸 The "Per-Minute" Pricing Trap
&lt;/h2&gt;

&lt;p&gt;Traditional CI/CD platforms were built for a time when humans typed out every single line of code by hand. Because code was written slowly, platforms adopted a "pay-per-build-minute" pricing model. &lt;/p&gt;

&lt;p&gt;But AI assistants changed the math. &lt;/p&gt;

&lt;p&gt;A 20-developer team heavily utilizing AI might easily run 150 Linux builds per day, averaging 8 minutes each, which translates to around 25,000 build minutes per month. On a platform like GitHub Actions, after blowing past the 3,000 included minutes, you are paying $0.006 per minute for every overage. When AI allows your team to easily double or triple their output, your per-minute CI costs scale linearly (and painfully) right alongside it.&lt;/p&gt;

&lt;p&gt;The more productive your developers become with AI, the more you are penalized by your CI/CD vendor. &lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ The Hybrid Architecture Solution
&lt;/h2&gt;

&lt;p&gt;To solve this, engineering teams are migrating to a "hybrid" CI/CD architecture—and &lt;strong&gt;Buildkite&lt;/strong&gt; is leading the charge. &lt;/p&gt;

&lt;p&gt;Unlike legacy platforms, Buildkite is one of the few major CI/CD platforms that does not charge by the build minute. Instead, they use a hybrid model:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The Orchestrator:&lt;/strong&gt; The control plane (UI, webhooks, pipeline management) lives securely in Buildkite's cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Agents:&lt;/strong&gt; The actual build steps execute on agents that you operate within your own AWS, GCP, or on-prem infrastructure. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because Buildkite doesn't run the compute, they don't charge you for it. Once you pay the flat per-user seat fee ($30/user/month on the Pro plan), &lt;strong&gt;the builds are unlimited&lt;/strong&gt; and &lt;strong&gt;the build minutes are unlimited&lt;/strong&gt;. The Pro plan supports up to 50 users and includes 10 self-hosted agents (with additional agents costing just $3.50 each per month). &lt;/p&gt;

&lt;p&gt;If your builds exceed roughly 100,000 monthly minutes, moving the compute to your own cloud and paying Buildkite's per-seat license is almost always cheaper than paying a vendor's per-minute markup.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Why Cursor Chose Buildkite for "Origin"
&lt;/h2&gt;

&lt;p&gt;You don't have to look far to see this shift in action. In August 2026, the team behind Cursor (the incredibly popular AI code editor) launched &lt;strong&gt;Origin&lt;/strong&gt;, a brand new git forge designed specifically for agentic scale. &lt;/p&gt;

&lt;p&gt;Origin supports repositories, code browsing, and pull requests directly within the Cursor environment, bringing the code closer to the AI assistant. But when it came to running the massive CI workloads generated by AI agents, Cursor didn't build their own runners. &lt;/p&gt;

&lt;p&gt;Instead, &lt;strong&gt;Cursor Origin was built on Buildkite&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Buildkite launched as an official partner for Origin. When you open a pull request on an Origin repository, Buildkite instantly picks up the pipeline and runs the build. Origin holds the code, and Buildkite runs the build. &lt;/p&gt;

&lt;p&gt;Because Buildkite allows teams to run unlimited builds on self-hosted infrastructure, it is the perfect engine for an AI tool that generates massive amounts of code. &lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Code Example: Scaling AI CI/CD
&lt;/h2&gt;

&lt;p&gt;Transitioning to Buildkite to handle your AI-generated code volume is surprisingly easy. You can even install official &lt;strong&gt;Buildkite Skills&lt;/strong&gt; directly into Cursor or Claude Code. This allows your AI agent to automatically generate correct pipeline YAML and configure agents for you.&lt;/p&gt;

&lt;p&gt;Here is an example of how you define a dynamically scaling testing pipeline in Buildkite (&lt;code&gt;.buildkite/pipeline.yml&lt;/code&gt;). Notice how easily you can parallelize tests across your own infrastructure to speed up feedback loops for AI-generated code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .buildkite/pipeline.yml&lt;/span&gt;
&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;🚀&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Linter"&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;npm&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;run&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;lint"&lt;/span&gt;
    &lt;span class="c1"&gt;# Runs on your own VPC, costing you standard AWS EC2 rates, not CI markup!&lt;/span&gt;
    &lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;queue&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;default"&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;wait&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;🧪&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Parallel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Test&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Suite"&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;npm&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;run&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;test"&lt;/span&gt;
    &lt;span class="c1"&gt;# Effortlessly split your test suite across 10 concurrent jobs &lt;/span&gt;
    &lt;span class="c1"&gt;# Since you don't pay Buildkite per minute, parallelize away!&lt;/span&gt;
    &lt;span class="na"&gt;parallelism&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
    &lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;queue&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;test-runners"&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;wait&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;📦&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Build&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Push&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Artifact"&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./scripts/build-and-push.sh"&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;main"&lt;/span&gt;
    &lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;queue&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deploy-runners"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run this, you simply start the open-source Buildkite Agent on your own server or cluster, pointing it to your queue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Start a Buildkite agent on your own infrastructure&lt;/span&gt;
buildkite-agent start &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--token&lt;/span&gt; &lt;span class="s2"&gt;"YOUR_AGENT_TOKEN"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tags&lt;/span&gt; &lt;span class="s2"&gt;"queue=test-runners"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--spawn&lt;/span&gt; 10 &lt;span class="c"&gt;# Spin up 10 workers immediately &lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔮 The Bottom Line
&lt;/h2&gt;

&lt;p&gt;We are entering an era where AI agents will write more code than humans do. If your infrastructure charges you a penalty every time your AI successfully generates a new pull request, your budget is going to break.&lt;/p&gt;

&lt;p&gt;The future of software development requires decoupling the CI/CD control plane from the raw compute layer. By shifting to a per-seat model like Buildkite, you can unleash your AI coding tools without fear of the end-of-month invoice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is your team's CI/CD bill creeping up as you adopt more AI tools? Let's discuss in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>ai</category>
      <category>devops</category>
      <category>architecture</category>
    </item>
    <item>
      <title>🚨 The "Always-On" Agent is Here: OpenAI Just Launched 'Dots' (And It Changes How We Code)</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Thu, 01 Oct 2026 01:36:21 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/the-always-on-agent-is-here-openai-just-launched-dots-and-it-changes-how-we-code-5779</link>
      <guid>https://dev.to/siddhesh_surve/the-always-on-agent-is-here-openai-just-launched-dots-and-it-changes-how-we-code-5779</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmn1t6yeo9007bvm0s9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffmn1t6yeo9007bvm0s9y.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On September 29, 2026, OpenAI officially announced "Dots"—a new class of always-on AI agents that operate 24/7. Positioned as a direct rival to Meta's popular Muse agent, Dots are designed to handle ongoing projects, taking the concept of an AI assistant from a simple chatbot to an autonomous digital worker.&lt;/p&gt;

&lt;p&gt;If you are a developer, this is a massive paradigm shift. You are no longer just sending a prompt and waiting for a single response; you are assigning a task to a background worker that has its own computing environment and continues to work while you step away.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of what Dots actually are, how the architecture works, and how they will impact your daily workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What Exactly is a "Dot"?
&lt;/h2&gt;

&lt;p&gt;Powered by OpenAI's new GPT-6 Astra model, a Dot is a named, persistent agent. Unlike traditional ChatGPT sessions that lose context or sit idle when you close the tab, Dots can continuously work toward your goals in the background.&lt;/p&gt;

&lt;p&gt;Here are the standout features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Its Own Cloud Computer:&lt;/strong&gt; Every Dot is provisioned with its own cloud computer and browser. You can open up your Dot's computer at any time to visually inspect its ongoing work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Massive Integrations:&lt;/strong&gt; Through OpenAI's plugin ecosystem, Dots can connect to over 4,000 different applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Channel Access:&lt;/strong&gt; You don't have to keep a ChatGPT window open. You can interact with your Dot directly inside Slack and Microsoft Teams, or even hop on a voice call with it to talk through a problem. Texting capabilities are also coming soon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous Learning:&lt;/strong&gt; The more you interact and correct its work, the more your Dot learns your specific preferences, goals, and standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💻 How Developers Will Use Dots
&lt;/h2&gt;

&lt;p&gt;Think about the tasks that currently drag down your velocity: tracking down a bug reported in Slack, updating documentation after a feature launch, or keeping an analysis current.&lt;/p&gt;

&lt;p&gt;For example, when a bug appears in a Slack channel, your Dot can immediately start investigating the issue on its own. You could grant it access to your software project and feedback channels so it can trace the error, prepare a fix, and ask you for a review.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conceptual API Integration
&lt;/h3&gt;

&lt;p&gt;While Dots act as out-of-the-box personal agents, developers can leverage OpenAI's infrastructure, such as the Agents API which exposes a Codex harness, to programmatically trigger and manage background tasks.&lt;/p&gt;

&lt;p&gt;Here is a conceptual example of how a developer might programmatically spawn a background task using a durable session API framework:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;delegateBugFix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;issueContext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Creating a durable background session for an always-on agent&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dot-eng-primary&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Your dedicated engineering Dot&lt;/span&gt;
    &lt;span class="na"&gt;goal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Investigate the React rendering bug reported in #frontend-alerts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;issueContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github_repo_access&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;slack_read_write&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cloud_browser&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;run_in_background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Dot is investigating. Session ID: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// The dot will message you on Slack or Teams when the PR is ready for review!&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;delegateBugFix&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;error_log&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Uncaught TypeError: Cannot read properties of undefined (reading 'map')&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;UserProfile.tsx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2026-09-30T10:00:00Z&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the Dot has its own computing environment, it can theoretically clone the repo, run the tests, write the patch, and then just ping you for the final PR approval.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔒 Security, Pricing, and Availability
&lt;/h2&gt;

&lt;p&gt;Handing over the keys to your codebase and apps requires massive trust. OpenAI has implemented safety and privacy safeguards, allowing you to set strict boundaries, monitor progress, and remain the final decision-maker for critical actions. You can also give your Dot permission to securely connect to and use your local laptop directly alongside you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rollout Details:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dots are currently rolling out to users on Pro, Business Premium, and Enterprise plans in eligible markets.&lt;/li&gt;
&lt;li&gt;The first Dot is included at no extra cost on Pro and Business Premium subscriptions.&lt;/li&gt;
&lt;li&gt;OpenAI is also previewing "specialist dots" designed for enterprise systems, which come with IT-provisioned hardware, strict access management, and deep integrations into company systems of record.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 The Bottom Line
&lt;/h2&gt;

&lt;p&gt;We are officially moving from "AI as a Copilot" to "AI as a Colleague." By giving the AI its own persistent environment and the ability to work asynchronously, OpenAI is fundamentally changing what we consider to be a "developer tool."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What will you assign your Dot to do first? Let's discuss in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>openai</category>
      <category>dots</category>
    </item>
    <item>
      <title>🚨 OpenAI Just Killed the Banner Ad: Inside ChatGPT’s New "Sponsored Agents</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Fri, 18 Sep 2026 02:18:55 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/openai-just-killed-the-banner-ad-inside-chatgpts-new-sponsored-agents-3986</link>
      <guid>https://dev.to/siddhesh_surve/openai-just-killed-the-banner-ad-inside-chatgpts-new-sponsored-agents-3986</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2vnne6w4ueb93do6v7f8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2vnne6w4ueb93do6v7f8.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The era of the pay-per-click banner ad is officially on life support.&lt;/p&gt;

&lt;p&gt;On September 16, 2026, OpenAI fundamentally changed how commercial intent is handled inside Large Language Models (LLMs). Instead of passively serving text links when you ask ChatGPT for product recommendations, they are rolling out &lt;strong&gt;Sponsored Agents&lt;/strong&gt;—autonomous, brand-specific AI sub-agents that take over the conversation to close the sale natively.&lt;/p&gt;

&lt;p&gt;If you are a developer, an enterprise architect, or building in the AI ecosystem, you need to understand the architecture behind this shift. This is no longer just a chatbot; it is a full-funnel, intent-driven commerce platform.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of what OpenAI just shipped and why it breaks the traditional search marketing model.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 What are "Sponsored Agents"?
&lt;/h2&gt;

&lt;p&gt;Historically, if a user asked an AI for the "best running shoes for marathon training," they might get a generated list and a static sponsored link at the top.&lt;/p&gt;

&lt;p&gt;Under the new model, clicking a labeled ad inside ChatGPT does not kick the user out to a slow-loading external landing page. Instead, it spins up a &lt;strong&gt;separate, clearly labeled side chat&lt;/strong&gt; with an AI agent built directly by the advertiser.&lt;/p&gt;

&lt;p&gt;This agent is context-aware and goal-oriented. It can fetch live inventory, answer highly specific domain questions, and guide the user through a transaction without ever leaving the OpenAI ecosystem. It’s currently in a US-only beta, but it signals a massive shift from "index matching" to "conversational intent."&lt;/p&gt;

&lt;h2&gt;
  
  
  🔌 The Ecosystem Integrations: Shopify &amp;amp; HubSpot
&lt;/h2&gt;

&lt;p&gt;An AI sales agent is useless if it hallucinates stock levels or misquotes prices. To solve the deterministic data problem, OpenAI simultaneously launched deep, native integrations with Shopify and HubSpot.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Real-Time Native E-Commerce via Shopify
&lt;/h3&gt;

&lt;p&gt;A dedicated Shopify app (rolling out globally on September 23, 2026) allows merchants to connect their stores directly to OpenAI's ad network.&lt;/p&gt;

&lt;p&gt;The campaigns pull current product data automatically. If a pair of sneakers sells out or drops in price, the Sponsored Agent knows instantly. There is no manual CSV uploading or batch syncing required—the agent has real-time visibility into product variants and metadata via structured JSON payloads.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. CRM Sync via HubSpot
&lt;/h3&gt;

&lt;p&gt;Acquiring a user via a conversational agent is great, but capturing the lead data is better. Businesses using HubSpot can now connect their ChatGPT Ads account directly to their CRM. When a user interacts with a Sponsored Agent, the generated leads are automatically enriched with intent scores and interaction histories, allowing sales teams to track performance and automate post-conversation follow-ups without switching platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 How Intent Routing Works (Conceptual Architecture)
&lt;/h2&gt;

&lt;p&gt;Behind the scenes, orchestrating these hand-offs requires sophisticated function calling. When a user’s prompt crosses a specific commercial intent threshold, the system must securely provision the brand's agent.&lt;/p&gt;

&lt;p&gt;Here is a conceptual look at how you might route a user's prompt to a Sponsored Agent using Python and standard function calling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;evaluate_and_route_intent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_query&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# The primary router evaluates if the query has commercial intent
&lt;/span&gt;    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;o3-mini&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You are a commercial routing agent. If the user expresses strong intent to purchase or compare products, invoke the appropriate brand&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s Sponsored Agent.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user_query&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;provision_sponsored_agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Spins up an isolated side-chat with a brand&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s specific AI agent.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parameters&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;brand_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The registered ID of the Shopify/HubSpot connected brand.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                            &lt;span class="p"&gt;},&lt;/span&gt;
                            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intent_category&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
                        &lt;span class="p"&gt;},&lt;/span&gt;
                        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;brand_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intent_category&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
                    &lt;span class="p"&gt;}&lt;/span&gt;
                &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;tool_choice&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔒 The Privacy Firewall
&lt;/h2&gt;

&lt;p&gt;With AI handling direct sales conversations, data privacy is the obvious concern. OpenAI architected this with strict boundaries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Walled-Off Context:&lt;/strong&gt; The advertiser's Sponsored Agent &lt;em&gt;only&lt;/em&gt; sees the messages sent within that specific side conversation. It does not get access to the user's regular ChatGPT history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aggregate Only:&lt;/strong&gt; Advertisers receive aggregate performance data, not individual user dossiers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sensitive Safeguards:&lt;/strong&gt; Ads and Sponsored Agents are completely withheld from accounts flagged as under 18 or queries touching on sensitive topics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 The AI Ads Manager
&lt;/h2&gt;

&lt;p&gt;To lower the barrier to entry, OpenAI also shipped an AI assistant directly inside their Ads Manager. Marketers can simply describe their campaign goals in plain text. The AI will parse the business's existing landing page, suggest copy and images, and configure the targeting. You just review and approve before anything goes live.&lt;/p&gt;

&lt;p&gt;The platform dependency here is massive. By bringing the ad creation, the inventory sync (Shopify), the CRM pipeline (HubSpot), and the actual customer interaction into a single interface, OpenAI is attempting to own the entire commerce loop.&lt;/p&gt;

&lt;p&gt;How long do you think it will take for conversational commerce to completely replace traditional search engine queries for product discovery? Let's debate in the comments! 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>openai</category>
      <category>marketing</category>
    </item>
    <item>
      <title>🛑 Stop Building CRM Schemas. The "Schema-Less" AI Architecture is Taking Over</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Fri, 11 Sep 2026 02:20:35 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/stop-building-crm-schemas-the-schema-less-ai-architecture-is-taking-over-3e8n</link>
      <guid>https://dev.to/siddhesh_surve/stop-building-crm-schemas-the-schema-less-ai-architecture-is-taking-over-3e8n</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcuw53ln4rkfawxg0rown.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcuw53ln4rkfawxg0rown.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are a software engineer who has ever been tasked with setting up, migrating, or maintaining a CRM for a startup, you know the absolute nightmare it can be. &lt;/p&gt;

&lt;p&gt;First, you have to define the data model. You spend hours configuring custom fields, dropdown menus, and strict pipeline stages. Then, the go-to-market strategy shifts, the Ideal Customer Profile (ICP) changes, and your entire database schema becomes obsolete overnight. Even worse, the CRM only works if humans actually do the manual data entry to keep it updated—which they never do.&lt;/p&gt;

&lt;p&gt;But a new architectural paradigm is emerging in 2026. Developers and founders are ditching rigid database structures for &lt;strong&gt;"Customer Memory"&lt;/strong&gt;—and an AI-native tool called &lt;strong&gt;Lightfield&lt;/strong&gt; is leading the charge.&lt;/p&gt;

&lt;p&gt;Here is why the era of manual CRM data entry is officially over, and why you should care about schema-less AI applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What is "Customer Memory"?
&lt;/h2&gt;

&lt;p&gt;Lightfield is an AI-native CRM specifically built for venture-backed startups and founder-led sales teams. Created by the founders of Tome, it completely abandons the traditional data entry model. &lt;/p&gt;

&lt;p&gt;Instead of forcing your sales reps to log every interaction into predefined fields, Lightfield operates on a &lt;strong&gt;Customer Memory&lt;/strong&gt; architecture. It ingests the raw, unstructured reality of your business—every email, meeting transcript, Slack message, and calendar invite—and builds a living, breathing model of your relationships.&lt;/p&gt;

&lt;p&gt;The system automatically captures these interactions and turns them into structured context. No manual data entry—ever.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Schema-Less Matters for Startups
&lt;/h3&gt;

&lt;p&gt;Traditional CRMs force you to define your data model upfront. But early-stage companies are constantly iterating. Lightfield is fundamentally different because it is &lt;strong&gt;schema-less from day one&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;It captures everything immediately and allows your data model to evolve naturally alongside your business. You don't have to rebuild your CRM every time your product pivots. &lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 Agents That Actually Do The Work
&lt;/h2&gt;

&lt;p&gt;Storing unstructured data isn't new, but making it highly actionable is. Because Lightfield stores the full text of your interactions, it makes everything queryable via natural language. &lt;/p&gt;

&lt;p&gt;You can ask the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"What objections keep coming up across all my calls?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"How has our ICP shifted in the last 3 months?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI agent doesn't just guess; it answers with citations linking directly back to the original conversations.&lt;/p&gt;

&lt;p&gt;But it goes beyond just answering questions. Lightfield utilizes agentic workflows that can actually take action. The system can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically draft and send personalized re-engagement emails based on the actual history of what was discussed.&lt;/li&gt;
&lt;li&gt;Bulk-update pipeline stages based on conversation signals rather than manual field updates.&lt;/li&gt;
&lt;li&gt;Identify stale deals and autonomously draft revival emails. &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💻 Building on Top of the AI CRM (Code Example)
&lt;/h2&gt;

&lt;p&gt;For developers, the most exciting part is Lightfield's workflow builder. It allows you to create multi-step automated processes using webhook triggers and HTTP integrations, essentially letting you build custom logic directly on top of the customer memory layer.&lt;/p&gt;

&lt;p&gt;Imagine building a webhook listener that triggers automatically when the AI detects a prospect is showing high buying intent during a Zoom call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Example Node.js/Express Webhook for Agentic CRM Automation&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/webhooks/lightfield/intent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;eventType&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;accountContext&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;aiAnalysis&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="c1"&gt;// Triggered when Lightfield's AI detects high intent from unstructured data&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;eventType&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;HIGH_BUYING_INTENT_DETECTED&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Alert: High intent detected for &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;accountContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;companyName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 1. Alert the engineering team in Slack with the technical questions asked&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;slackClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;postMessage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#sales-engineering&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Hot Deal: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;accountContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;companyName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;. Technical objections detected: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;aiAnalysis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;technicalQuestions&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="c1"&gt;// 2. Automatically generate a customized technical proposal&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;proposal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;generateProposalDraft&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accountContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fullConversationHistory&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 3. Queue the draft for the Account Executive's review&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;crm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;queueDraftEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;accountContext&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;decisionMakerEmail&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;proposal&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Workflow executed seamlessly&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 The Bottom Line
&lt;/h2&gt;

&lt;p&gt;We are rapidly moving toward a future where software doesn't just &lt;em&gt;store&lt;/em&gt; our work, but actually &lt;em&gt;understands&lt;/em&gt; it.&lt;/p&gt;

&lt;p&gt;Lightfield offers a free plan to get started, with paid tiers beginning at $36 per user per month for startup teams. By removing the friction of manual data entry and leveraging continuous, schema-less AI capture, teams can replace hours of daily admin work with simple, natural language queries.&lt;/p&gt;

&lt;p&gt;If you are a founder doing your own sales or an engineer tired of maintaining fragile CRM integrations, the AI-native approach is exactly what CRM should have been all along.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you ready to ditch the custom fields and let AI manage your database? Let's discuss in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>startup</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>🛑 Stop Guessing Why Your AI Agent Broke. Debugging Them is Fundamentally Different</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Fri, 11 Sep 2026 01:59:08 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/stop-guessing-why-your-ai-agent-broke-debugging-them-is-fundamentally-different-25o3</link>
      <guid>https://dev.to/siddhesh_surve/stop-guessing-why-your-ai-agent-broke-debugging-them-is-fundamentally-different-25o3</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flmdg44eez1cdzvt60fdf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flmdg44eez1cdzvt60fdf.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building with AI is inherently unreliable. We've all been there: you ship a shiny new autonomous AI workflow, it works flawlessly in your local terminal, and then it spectacularly fails in production. Why? Because a dozen things can go wrong per run.&lt;/p&gt;

&lt;p&gt;Debugging traditional code is relatively straightforward: a single line fails, you get a stack trace, and you fix it. But debugging agents is a completely different paradigm. Today's AI systems are not just a stream of logs or a simple API call. As developers, we are orchestrating complex combinations of language models, retrieval pipelines, tool calls, and business logic.&lt;/p&gt;

&lt;p&gt;Here is why your print statements aren't going to cut it anymore, and how new tooling is fundamentally changing AI observability.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⬛ The "Black Box" Problem in Production
&lt;/h2&gt;

&lt;p&gt;When an agent breaks, it fails across a chain of steps. It's rarely a single line of code. Without end-to-end visibility, fixing these issues is slow, reactive, and incredibly expensive. You are left wondering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was the prompt dropped?&lt;/li&gt;
&lt;li&gt;Did a missing variable cause a KeyError during prompt construction?&lt;/li&gt;
&lt;li&gt;Did the model return malformed JSON that crashed your frontend when parsing?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To solve this, Sentry recently launched a major upgrade to their Agent Tracing functionality, specifically built for how AI systems actually break. It acts like a black box recorder for your AI features.&lt;/p&gt;

&lt;p&gt;Instead of treating the model as a closed system, agent tracing tracks the complete agent lifecycle, including multi-step reasoning, tool execution, sub-agent transfers, and how individual calls combine into workflows.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ The Flight Data Recorder for AI
&lt;/h2&gt;

&lt;p&gt;Sentry's updated platform connects AI-specific data to your entire application stack and debugging context. Here are the capabilities that make it a game-changer for large-scale distributed systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full Execution Breakdowns:&lt;/strong&gt; You can trace the exact flow from the system prompts, user input, model generation, tool usage, down to the final output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conversational Replays:&lt;/strong&gt; It groups multi-turn AI activity into a single replay of messages and tool calls. This turns raw AI spans into a readable, chat-like replay of any user session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identify Slow Tools:&lt;/strong&gt; Instead of assuming the model is slow, Sentry gives a full breakdown of every tool and model call. If your calendar tool suddenly starts timing out, you'll immediately see its latency spike.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trace MCP Interactions:&lt;/strong&gt; Model Context Protocol (MCP) tool calls appear directly inside your agent traces. You can see which MCP servers the agent called, what they returned, how long they took, and whether they failed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost and Token Tracking:&lt;/strong&gt; Monitor spending across different models, compare costs, and see the token usage breakdown to identify expensive operations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💻 How to Instrument Your Agents (Code Examples)
&lt;/h2&gt;

&lt;p&gt;The best part? You don't have to rewrite your entire codebase. Sentry auto-instruments frameworks like OpenAI Agents, Vercel AI SDK, LangChain, Pydantic AI, Anthropic, and Google GenAI.&lt;/p&gt;

&lt;p&gt;If you are using the Vercel AI SDK, enabling telemetry just requires flipping a boolean. To correctly capture spans, pass the &lt;code&gt;experimental_telemetry&lt;/code&gt; object with &lt;code&gt;isEnabled: true&lt;/code&gt; to your generation function calls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;generateText&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;openai&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@ai-sdk/openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;generateText&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-4o&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="c1"&gt;// Enables Sentry's agent tracing for this specific execution&lt;/span&gt;
  &lt;span class="na"&gt;experimental_telemetry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;isEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To get the most out of the &lt;strong&gt;Conversations&lt;/strong&gt; view, you need to group spans together. Use &lt;code&gt;setConversationId()&lt;/code&gt; so every AI span in a chat session shares the same ID. You can also track the exact impacted user by calling &lt;code&gt;Sentry.setUser()&lt;/code&gt; before any AI calls. The Conversations view includes a User column when you populate it with &lt;code&gt;setUser&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Sentry&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@sentry/node&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Identify the user experiencing the AI workflow&lt;/span&gt;
&lt;span class="nx"&gt;Sentry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setUser&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; 
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jane@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jane&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🚀 The Future of AI Observability
&lt;/h2&gt;

&lt;p&gt;In production environments, an eval score might flag a general quality drop, but the trace tells you exactly &lt;em&gt;why&lt;/em&gt;. Sentry connects what your agents are doing to what your users are experiencing and what your systems are logging.&lt;/p&gt;

&lt;p&gt;If you are building autonomous agents, you cannot rely on guesswork. You need full-stack observability to understand why an LLM hallucinated or why a tool silently failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How are you currently debugging your AI workflows? Are you still relying on standard console logs, or have you made the jump to dedicated agent tracing? Let's discuss in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>observability</category>
      <category>debugging</category>
    </item>
    <item>
      <title>🤯 Stop Managing 15 Different AI API Keys. Do This Instead</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Tue, 01 Sep 2026 03:28:45 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/stop-managing-15-different-ai-api-keys-do-this-instead-42p4</link>
      <guid>https://dev.to/siddhesh_surve/stop-managing-15-different-ai-api-keys-do-this-instead-42p4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxu83p0i0p0m49ekvw91b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxu83p0i0p0m49ekvw91b.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are building AI applications in 2026, you know the absolute headache of the "Model Merry-Go-Round."&lt;/p&gt;

&lt;p&gt;One week, OpenAI releases GPT-5.6 Sol and it's the smartest thing on the planet. The next week, Google drops Gemini 3.7 Flash and undercuts everyone on price. Meanwhile, Anthropic’s Claude Opus 5 remains the king of coding tasks. &lt;/p&gt;

&lt;p&gt;If you want to provide the best experience for your users, you need access to &lt;em&gt;all&lt;/em&gt; of them. &lt;/p&gt;

&lt;p&gt;Historically, that meant writing custom wrappers for 10 different SDKs, managing a spreadsheet full of API keys, juggling multiple monthly subscriptions, and praying one of the providers doesn't randomly go down during your peak hours. &lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;OpenRouter&lt;/strong&gt;—the ultimate unified interface for every major AI model on the market. If you are building AI tooling, this is the architecture upgrade you need to make today.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 What is OpenRouter?
&lt;/h2&gt;

&lt;p&gt;OpenRouter is a single API endpoint that gives you access to over &lt;strong&gt;500+ models across 80+ providers&lt;/strong&gt; (including OpenAI, Google, Meta, Anthropic, DeepSeek, and more). &lt;/p&gt;

&lt;p&gt;It acts as a universal router for AI inference. Instead of building integrations for AWS Bedrock, Google Cloud AI Studio, and OpenAI separately, you write code &lt;em&gt;once&lt;/em&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Why Developers are Making the Switch:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Zero Vendor Lock-in:&lt;/strong&gt; You can swap out the backend LLM by changing a single string in your code. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;High Availability (Auto-Fallbacks):&lt;/strong&gt; If OpenAI's servers crash, OpenRouter can automatically route your request to Anthropic or Google, keeping your application online.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Standardized Pricing:&lt;/strong&gt; You pay exactly the cost of the model's compute. No monthly subscription fees. You buy unified credits and spend them across any provider.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Multi-Modal Built-In:&lt;/strong&gt; It’s not just text. You can generate images, video, and audio through the exact same unified interface. &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💻 The 60-Second Integration (Code Example)
&lt;/h2&gt;

&lt;p&gt;The absolute best part about OpenRouter is that it is &lt;strong&gt;100% compatible with the standard OpenAI SDK&lt;/strong&gt;. You don't even need to learn a new library.&lt;/p&gt;

&lt;p&gt;If you are building a Node.js/TypeScript backend, migrating takes less than a minute. You just change the &lt;code&gt;baseURL&lt;/code&gt;, swap in your OpenRouter API key, and you immediately have access to the entire AI ecosystem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// 1. Initialize with OpenRouter's baseURL&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;aiRouter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[https://openrouter.ai/api/v1](https://openrouter.ai/api/v1)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OPENROUTER_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;defaultHeaders&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Optional: Helps rank your app on OpenRouter's leaderboards&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HTTP-Referer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;[https://yourapp.com](https://yourapp.com)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;My Awesome AI App&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;runInference&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;completion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;aiRouter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="c1"&gt;// 2. Access ANY model by simply changing this string!&lt;/span&gt;
      &lt;span class="c1"&gt;// Examples: "openai/gpt-5.6-sol", "anthropic/claude-opus-5", "meta-llama/llama-4-70b-instruct"&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;google/gemini-3.7-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
      &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt; 
          &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
          &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are an expert autonomous software engineer.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt; 
          &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
          &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Review this pull request and optimize the database queries.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;completion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Inference failed:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;runInference&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to test how Claude Opus 5 handles that exact same prompt? Just change &lt;code&gt;model: "google/gemini-3.7-flash"&lt;/code&gt; to &lt;code&gt;model: "anthropic/claude-opus-5"&lt;/code&gt;. That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛡️ Enterprise-Grade Controls: Custom Data Policies
&lt;/h2&gt;

&lt;p&gt;For engineering teams working with sensitive data, bouncing between random AI providers sounds like a security nightmare.&lt;/p&gt;

&lt;p&gt;OpenRouter solves this with &lt;strong&gt;Custom Data Policies&lt;/strong&gt;. You can configure your organization's settings at the API level to ensure that your prompts &lt;em&gt;only&lt;/em&gt; go to trusted providers that have zero-data-retention agreements. This gives you the flexibility of a massive model catalog while strictly maintaining compliance.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 The Bottom Line
&lt;/h2&gt;

&lt;p&gt;We are building in an era where AI models are rapidly becoming commoditized. The competitive advantage no longer comes from forcing your app to use one specific LLM, but from intelligently routing workloads to the fastest, cheapest, or smartest model for that &lt;em&gt;specific&lt;/em&gt; second in time.&lt;/p&gt;

&lt;p&gt;If you are tired of updating your infrastructure every time a new AI drops on Twitter, OpenRouter is the missing puzzle piece in your tech stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Have you integrated a unified AI gateway into your apps yet? Which model is currently your daily driver for coding? Let me know in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>machinelearning</category>
      <category>architecture</category>
    </item>
    <item>
      <title>🚀 How Apple &amp; Google Just Solved the Biggest Problem in GenAI (And Why You Should Care)</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Wed, 26 Aug 2026 03:59:16 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/how-apple-google-just-solved-the-biggest-problem-in-genai-and-why-you-should-care-4ke4</link>
      <guid>https://dev.to/siddhesh_surve/how-apple-google-just-solved-the-biggest-problem-in-genai-and-why-you-should-care-4ke4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fneuba2x2vvhtd84rjta9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fneuba2x2vvhtd84rjta9.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The AI boom has a massive bottleneck, and we all know what it is: &lt;strong&gt;Privacy.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;For years, enterprises and developers have hesitated to send highly sensitive, proprietary data to cloud-based LLMs. It’s the ultimate blocker for building autonomous AI agents and personalized ML ranking systems. If you can't guarantee that user data is safe from &lt;em&gt;everyone&lt;/em&gt; (including the cloud provider), you simply can't use it.&lt;/p&gt;

&lt;p&gt;But at WWDC 2026, Apple and Google Cloud dropped an architectural bombshell that changes the game: &lt;strong&gt;The Private Cloud Compute (PCC)&lt;/strong&gt;, powered by a new era of &lt;strong&gt;Confidential AI&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here is a deep dive into the engineering behind this collaboration, why "Confidential Computing" is the missing piece of the AI puzzle, and what it means for those of us building large-scale distributed systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 The Missing Link: Data "In Use"
&lt;/h2&gt;

&lt;p&gt;When we talk about protecting data in modern big data infrastructure, we usually talk about two states:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data at Rest:&lt;/strong&gt; Encrypted on the disk (standard).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data in Transit:&lt;/strong&gt; Encrypted as it moves over the network via TLS (standard).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;But traditional cloud computing has a fatal flaw for hyper-sensitive AI workloads. To actually process the data—to run an inference on an LLM or calculate weights in an ML ranking system—the data has to be decrypted in the CPU or GPU's memory. This is &lt;strong&gt;Data in Use&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;During that fraction of a second, the data is technically visible in plain text to the host OS, the hypervisor, or a highly privileged cloud administrator. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confidential Computing&lt;/strong&gt; fixes this by processing data inside a hardware-based &lt;strong&gt;Trusted Execution Environment (TEE)&lt;/strong&gt;. Think of a TEE as an impenetrable black box inside the processor. Even the cloud provider cannot look inside. &lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ The Dream Team Architecture: How PCC Works
&lt;/h2&gt;

&lt;p&gt;To build Apple's Private Cloud Compute, it took a historic collaboration across the biggest names in hardware and cloud architecture: &lt;strong&gt;Apple, Google Cloud, Intel, and NVIDIA.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is the stack that makes verifiable, confidential AI inference possible:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Google Titanium &amp;amp; The Titan Chip
&lt;/h3&gt;

&lt;p&gt;At the foundation is Google's custom Titanium security architecture. The hardware root of trust is provided by the Titan chip, which verifies the integrity of the infrastructure from the moment the server boots up. &lt;/p&gt;

&lt;h3&gt;
  
  
  2. Intel TDX (Trust Domain Extensions)
&lt;/h3&gt;

&lt;p&gt;For the CPU layer, the infrastructure leverages Intel TDX. This provides hardware-level isolation for virtual machines. It ensures that the environment where the AI workloads run is cryptographically isolated from the rest of the cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. NVIDIA Blackwell GPUs
&lt;/h3&gt;

&lt;p&gt;AI inference isn't just a CPU game. The real magic of this announcement is extending Confidential Computing to the GPU. By securing the entire compute path—from the Intel CPU to the NVIDIA GPU—data remains protected during high-performance AI inference. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Open-Source Transparency
&lt;/h3&gt;

&lt;p&gt;The most impressive part? Apple and Google collaborated on an &lt;strong&gt;open-source host stack&lt;/strong&gt; specifically for PCC. Security by obscurity is dead. By open-sourcing the stack, independent security researchers can actively inspect and verify the system's security properties. &lt;/p&gt;




&lt;h2&gt;
  
  
  💻 How Do You Actually Verify Trust? (Code Example)
&lt;/h2&gt;

&lt;p&gt;If you are building AI tooling or large-scale autonomous agents, you can't just "trust" that the server is secure—you have to cryptographically prove it using &lt;strong&gt;Attestation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When a workload boots up in a TEE, the hardware generates a cryptographic token proving exactly what code is running and that the environment is secure.&lt;/p&gt;

&lt;p&gt;Here is a conceptual look at how you might fetch an attestation token from a Confidential Space environment using Node.js/TypeScript. This is how your application proves its identity before accessing sensitive datasets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node-fetch&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
 * Fetches the hardware attestation OIDC token from the 
 * Google Cloud metadata server inside a TEE.
 */&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getAttestationToken&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// The metadata server URL specifically for the TEE instance&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;metadataUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token](http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;metadataUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
        &lt;span class="c1"&gt;// Required header to access the metadata server&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Metadata-Flavor&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Google&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; 
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`HTTP Error! Status: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;✅ Verified TEE Token Acquired!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// This token can now be passed to Key Management Systems (KMS)&lt;/span&gt;
    &lt;span class="c1"&gt;// to unlock encrypted datasets for your AI models.&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Failed to fetch attestation token:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By passing this hardware-signed token to your Key Management System (KMS), the system only releases decryption keys &lt;em&gt;if&lt;/em&gt; the token proves the code is running securely inside the TEE. If the environment is tampered with, the signature changes, the KMS rejects the request, and your data remains safe.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌍 Why This Changes Everything for ML Systems
&lt;/h2&gt;

&lt;p&gt;For engineering teams working on &lt;strong&gt;machine learning ranking systems&lt;/strong&gt; and &lt;strong&gt;big data infrastructure&lt;/strong&gt;, this is a paradigm shift.&lt;/p&gt;

&lt;p&gt;Historically, building highly personalized ML systems required aggregating user data into massive, centralized data lakes. This created a massive attack surface and a compliance nightmare.&lt;/p&gt;

&lt;p&gt;With the normalization of Confidential AI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;True Autonomy:&lt;/strong&gt; We can finally build autonomous AI agents that handle highly sensitive personal or financial data in the cloud without violating user trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Trust Infrastructure:&lt;/strong&gt; We don't have to trust the cloud provider. We only have to trust the math and the hardware cryptography.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unlocking Regulated Industries:&lt;/strong&gt; Healthcare, finance, and enterprise sectors can finally leverage state-of-the-art LLMs using their own private data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;The Google Cloud and Apple collaboration isn't just a win for iOS users—it's a blueprint for the future of cloud computing. By ensuring that every layer of the stack (CPU, GPU, and open-source software) contributes to a verifiable system, they've set a new gold standard for AI infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are your thoughts on Confidential Computing? Will this finally push heavily regulated industries to fully adopt Cloud AI? Let's discuss in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>googlecloud</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>🚨 LEAKED: Anthropic's 'Project Parka' Turns Meetings Into Code 🤯</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Tue, 25 Aug 2026 02:53:24 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/leaked-anthropics-project-parka-turns-meetings-into-code-1hg5</link>
      <guid>https://dev.to/siddhesh_surve/leaked-anthropics-project-parka-turns-meetings-into-code-1hg5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxk0so6e48yyti82ag36j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxk0so6e48yyti82ag36j.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The era of manual meeting notes might be over. A newly discovered leak inside the Claude Desktop macOS app reveals an unreleased feature internally codenamed &lt;strong&gt;Project Parka&lt;/strong&gt;. Rather than simply transcribing your meetings, Parka is designed to listen to your calls and directly assign the resulting action items to AI agents like Claude Code.&lt;/p&gt;

&lt;p&gt;Here is a breakdown of what we know about Anthropic's ambitious new workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Project Parka Works Under the Hood
&lt;/h2&gt;

&lt;p&gt;Reverse-engineered macOS packages reveal that Parka is a Mac-first feature currently hidden behind a production kill switch. It is built to handle the entire meeting lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Audio Capture:&lt;/strong&gt; Takes in system audio, microphone audio, and calendar-event metadata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Transcription:&lt;/strong&gt; Streams speaker-attributed transcripts in real-time while generating summaries and editable notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task Routing:&lt;/strong&gt; Converts spoken follow-ups into structured assignments for Claude Cowork, Claude Code, or a human.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of merely summarizing what was said, Parka translates the conversation into actionable, runnable work. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Action Schema: Where It Gets Real
&lt;/h2&gt;

&lt;p&gt;The secret sauce lies in Parka’s highly structured follow-up schema. Each extracted task contains specific instructions that act as a handoff to an AI agent. &lt;/p&gt;

&lt;p&gt;Based on the leaked design, here is a conceptual example of what the action schema looks like under the hood:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Update main tech stack"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Refactor the backend services to use the new authentication flow."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Claude Code"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"fullPrompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Implement the updated JWT auth strategy in auth.ts according to the meeting discussion."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"executionType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"autoRunnable"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sessionUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"claude://session/..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The inclusion of an &lt;code&gt;autoRunnable&lt;/code&gt; field is particularly striking. It suggests that tasks generated during a noisy meeting could immediately spin up AI workflows without requiring human intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Competitive Threat
&lt;/h2&gt;

&lt;p&gt;This leak positions Anthropic in direct competition with AI meeting assistants like Granola, Notion AI, and Otter. While most tools stop at recapping who said what, Parka treats the meeting as an automated prompt generator for its existing ecosystem of agents.&lt;/p&gt;

&lt;p&gt;Currently, Parka remains an empty native stub. However, if Anthropic brings this design to reality, it will fundamentally change how developer teams handle post-meeting workflows.&lt;/p&gt;

&lt;p&gt;How do you feel about an AI agent automatically writing code based on what was casually discussed in a meeting?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>anthropic</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Wasting API Tokens: Why We Need to Kill 'max_iterations' in AI Agents 🛑</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Tue, 21 Jul 2026 03:58:26 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/stop-wasting-api-tokens-why-we-need-to-kill-maxiterations-in-ai-agents-1kod</link>
      <guid>https://dev.to/siddhesh_surve/stop-wasting-api-tokens-why-we-need-to-kill-maxiterations-in-ai-agents-1kod</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6licv49v7etf73pmlsx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa6licv49v7etf73pmlsx.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have built an AI agent in the last year, you have probably written a line of code that looks exactly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;MAX_ITERATIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="c1"&gt;# Just guessing and hoping for the best
&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When building verify-revise loops using frameworks like LangGraph, AutoGen, or CrewAI, we all rely on this universal hack. We set a fixed cap on our agent loops because we don't want an LLM spinning endlessly and racking up a massive OpenAI or Anthropic bill.&lt;/p&gt;

&lt;p&gt;But this hardcoded cap is fundamentally broken in both directions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You stop too early:&lt;/strong&gt; The loop is cut off right when it was just one iteration away from solving the complex logic problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You stop too late:&lt;/strong&gt; The model solved the problem on iteration two, but the loop keeps running until iteration five, hallucinating a worse answer and wasting API tokens every step of the way.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What if your agent could automatically measure its own progress and stop the &lt;em&gt;exact&lt;/em&gt; moment it converges?&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;&lt;a href="https://github.com/loopgain-ai/loopgain?utm_source=tldrdev" rel="noopener noreferrer"&gt;LoopGain&lt;/a&gt;&lt;/strong&gt;, a fascinating new open-source library that applies electrical control theory to AI agent loops.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ The Control Theory Solution
&lt;/h2&gt;

&lt;p&gt;The creator of LoopGain noticed that AI agent loops look almost identical to electrical circuit diagrams. In control theory, you can measure a circuit's "loop gain" (Aβ) to determine if it is stabilizing or oscillating out of control.&lt;/p&gt;

&lt;p&gt;LoopGain applies this exact math to LLM error rates.&lt;/p&gt;

&lt;p&gt;Instead of arbitrarily capping your agent, LoopGain continuously monitors the ratio of the current error to the previous error. It reads the trajectory of the loop and categorizes it into real-time states:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🟢 &lt;strong&gt;FAST_CONVERGE / CONVERGING:&lt;/strong&gt; The error is dropping. The agent is doing great. &lt;em&gt;Action: Keep going.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🟡 &lt;strong&gt;STALLING:&lt;/strong&gt; The agent is just changing the text but the error rate isn't moving. &lt;em&gt;Action: Stop.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🔴 &lt;strong&gt;DIVERGING / OSCILLATING:&lt;/strong&gt; The agent is making things worse and breaking previously working code. &lt;em&gt;Action: Stop and rollback.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, if the loop degrades, LoopGain doesn't just return the final garbage output—&lt;strong&gt;it rolls back and returns the &lt;code&gt;best-so-far&lt;/code&gt; iteration.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📉 The Benchmark: 92% Less Spend
&lt;/h2&gt;

&lt;p&gt;The team ran a massive benchmark of 2,000 paired trials across multiple models and frameworks. The results of replacing &lt;code&gt;max_iterations=20&lt;/code&gt; with LoopGain are staggering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💸 &lt;strong&gt;92.8% reduction in API spend:&lt;/strong&gt; Dropped from $27.05 to $1.94 across the benchmark workloads.&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;15x Faster:&lt;/strong&gt; Median wall-clock time plummeted from 30.9 seconds to just 2.1 seconds.&lt;/li&gt;
&lt;li&gt;🏆 &lt;strong&gt;Better Quality:&lt;/strong&gt; AI judges preferred LoopGain's output simply because it successfully rescued the best iteration before the LLM went off the rails.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💻 How to Drop It Into Your Code
&lt;/h2&gt;

&lt;p&gt;LoopGain comes with pre-built adapters for LangGraph, CrewAI, AutoGen, LangChain, and the Claude Agent SDK, but you can also use the raw API in just a few lines of Python.&lt;/p&gt;

&lt;p&gt;Here is what the basic raw integration looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;loopgain

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;loopgain&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;LoopGain&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Initialize the controller
&lt;/span&gt;&lt;span class="n"&gt;lg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;LoopGain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target_error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# The agent's first attempt
&lt;/span&gt;
&lt;span class="c1"&gt;# 2. Gate the loop using should_continue()
&lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;should_continue&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;

    &lt;span class="c1"&gt;# Run your custom evaluation (e.g., test failures, linting errors)
&lt;/span&gt;    &lt;span class="n"&gt;errors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

    &lt;span class="c1"&gt;# 3. Feed the error signal to LoopGain
&lt;/span&gt;    &lt;span class="n"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;observe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

    &lt;span class="c1"&gt;# LLM attempts to fix the errors
&lt;/span&gt;    &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;revise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

&lt;span class="c1"&gt;# 4. Boom. It stopped at the perfect time. 
# Get the iteration that had the lowest error!
&lt;/span&gt;&lt;span class="n"&gt;best_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;best_output&lt;/span&gt; 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🔮 The Era of Guesswork is Over
&lt;/h2&gt;

&lt;p&gt;As agentic architecture moves from neat weekend prototypes into massive enterprise production pipelines, we cannot afford to rely on hardcoded magic numbers like &lt;code&gt;max_iterations = 5&lt;/code&gt;. It is inefficient, unpredictable, and expensive.&lt;/p&gt;

&lt;p&gt;Tools like LoopGain represent the next maturity phase of LLM engineering: shifting from prompt-hacking to actual software reliability and systems engineering.&lt;/p&gt;

&lt;p&gt;If you want to stop burning tokens on stalling loops, check out the raw data, documentation, and source code on their &lt;a href="https://github.com/loopgain-ai/loopgain?utm_source=tldrdev" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Are you still using &lt;code&gt;max_iterations&lt;/code&gt; in your AI apps? Let me know your current loop strategies in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>agents</category>
    </item>
    <item>
      <title>The Future of Hardware is Alive: How Sakana AI is Building Self-Healing Smart Bricks 🧱</title>
      <dc:creator>Siddhesh Surve</dc:creator>
      <pubDate>Wed, 15 Jul 2026 02:30:08 +0000</pubDate>
      <link>https://dev.to/siddhesh_surve/the-future-of-hardware-is-alive-how-sakana-ai-is-building-self-healing-smart-bricks-45hf</link>
      <guid>https://dev.to/siddhesh_surve/the-future-of-hardware-is-alive-how-sakana-ai-is-building-self-healing-smart-bricks-45hf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3jet0rkcu54zhddpl0cv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3jet0rkcu54zhddpl0cv.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you chop off a salamander's tail, it grows back. If you smash a server rack... well, you are buying a new server rack. &lt;/p&gt;

&lt;p&gt;But what if hardware could act like biology? &lt;/p&gt;

&lt;p&gt;The research team at &lt;strong&gt;Sakana AI&lt;/strong&gt; just published a mind-bending paper in &lt;em&gt;Nature Communications&lt;/em&gt; detailing their work on &lt;strong&gt;Smart Cellular Bricks&lt;/strong&gt;. They have successfully taken the concept of collective intelligence out of software simulations and brought it directly into the physical world. &lt;/p&gt;

&lt;p&gt;Here is a breakdown of how they are using decentralized deep learning to build self-aware hardware, and why this is a massive leap forward for robotics and smart materials.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Problem with Centralized Control
&lt;/h2&gt;

&lt;p&gt;In traditional robotics and IoT, systems rely on a "brain" (a central controller) that knows where every sensor and actuator is. If the brain fails, or the communication bus is severed, the whole system collapses. &lt;/p&gt;

&lt;p&gt;Biology doesn't work this way. In a colony of ants or a cluster of living tissue, complex behavior emerges from simple, local interactions. There is no central CEO cell telling a liver how to be a liver. &lt;/p&gt;

&lt;p&gt;Sakana AI wanted to replicate this using &lt;strong&gt;Neural Cellular Automata (NCA)&lt;/strong&gt;. They created hundreds of physical 3D cubic bricks. Each brick is a simple modular unit with a microcontroller and electrical connectors on all six faces. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The catch?&lt;/strong&gt; None of the bricks know their global position. They don't know what shape they are a part of. They can &lt;em&gt;only&lt;/em&gt; communicate with the immediate neighbors they are physically touching.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧬 How It Works: Neural Cellular Automata
&lt;/h2&gt;

&lt;p&gt;Instead of hard-coding the logic, Sakana AI used NCAs. In this framework, the local update rules for the cells are learned via gradient descent rather than hand-crafted. &lt;/p&gt;

&lt;p&gt;Every brick runs the exact same tiny neural network. At each step, a brick looks at the signals coming from its neighbors, processes them through its hidden states, and updates its output. Over a few minutes (about 60 update cycles), these localized ripples of information allow the entire collective of bricks to reach a consensus on what overall shape they form—whether that's a guitar, a boat, a table, or an airplane.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 The Code: Simulating a 3D NCA
&lt;/h3&gt;

&lt;p&gt;If you want to understand the math under the hood, it essentially boils down to a 3D convolution representing the communication between neighboring physical blocks. &lt;/p&gt;

&lt;p&gt;Here is a simplified PyTorch mental model of how a single update step works for these cellular networks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch.nn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CellularBrickNCA&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Module&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;channels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hidden_dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;super&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="c1"&gt;# The channels represent the memory state and the messages passed to neighbors
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;channels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;channels&lt;/span&gt;

        &lt;span class="c1"&gt;# A 3D Convolution allows a cell to perceive its immediate neighbors (kernel_size=3)
&lt;/span&gt;        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update_network&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Sequential&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Conv3d&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;channels&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hidden_dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kernel_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;padding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ReLU&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
            &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Conv3d&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hidden_dim&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;channels&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kernel_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Initialize the final layer weights to zero for stability at the start
&lt;/span&gt;        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;no_grad&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update_network&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;zero_&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update_network&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;bias&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;zero_&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;state_grid&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="c1"&gt;# state_grid shape: (Batch, Channels, Depth, Height, Width)
&lt;/span&gt;
        &lt;span class="c1"&gt;# 1. Perceive neighbors and calculate the state delta
&lt;/span&gt;        &lt;span class="n"&gt;state_delta&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update_network&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state_grid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# 2. Simulate hardware reality (asynchronous, noisy communication)
&lt;/span&gt;        &lt;span class="c1"&gt;# Not every cell updates perfectly at the same time in the real world
&lt;/span&gt;        &lt;span class="n"&gt;stochastic_mask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rand_like&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state_grid&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...])&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="c1"&gt;# 3. Apply the localized update
&lt;/span&gt;        &lt;span class="n"&gt;new_state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;state_grid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;state_delta&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;stochastic_mask&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;new_state&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: In the physical world, this logic is running distributed across hundreds of individual microcontrollers communicating over a serial protocol, rather than a single GPU tensor.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛡️ Unbreakable Hardware: The Self-Healing Test
&lt;/h2&gt;

&lt;p&gt;Because the intelligence is distributed, the system is insanely robust.&lt;/p&gt;

&lt;p&gt;During hardware testing, the researchers physically disabled up to 15% of the bricks in an airplane shape—preventing them from sending or receiving any data. Despite the massive localized failure, the remaining network just routed around the damage and still correctly identified the global shape.&lt;/p&gt;

&lt;p&gt;Even cooler: the system naturally developed "morphogen-like" activation patterns. Just like embryos develop an axis to figure out where the head and tail go, these bricks established left-right and anterior-posterior gradients purely through local chatter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Detecting and "Regrowing" Damage
&lt;/h3&gt;

&lt;p&gt;Sakana AI didn't stop at classification. They trained the cells to detect if a neighboring block was missing. By starting with a small "seed" cluster of blocks, the system could mathematically predict where new blocks needed to be added to complete a broken shape—essentially acting as a blueprint for self-regeneration.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Why This is a Game Changer for the Tech World
&lt;/h2&gt;

&lt;p&gt;We are looking at the foundational steps for programmable matter.&lt;/p&gt;

&lt;p&gt;Imagine deploying sensors in extreme environments—like deep-sea cables or space stations. Instead of sending a technician to diagnose a structural fault, the material itself could isolate the damage, report it, and dynamically reconfigure its active components to maintain structural integrity.&lt;/p&gt;

&lt;p&gt;It paves the way for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Resilient Architecture:&lt;/strong&gt; Buildings or bridges that can detect microscopic fault lines locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconfigurable Robotics:&lt;/strong&gt; Swarm bots that combine to form specialized tools on the fly and detach when the job is done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The gap between biological resilience and artificial hardware just got a lot smaller.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What are your thoughts on Neural Cellular Automata? Could this completely replace centralized orchestration in the future of IoT? Let’s discuss in the comments below! 👇&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>robotics</category>
      <category>hardware</category>
    </item>
  </channel>
</rss>
