Cursor Just Released Composer 2.5. Here’s What Actually Changed for AI Coding Agents.

Cursor has spent the last year moving from “AI coding assistant” into something much more ambitious: a vertically integrated agentic software engineering stack. Yesterday’s release of Composer 2.5 makes that direction impossible to ignore.

This is not just a faster autocomplete model. Cursor is explicitly optimizing for long-horizon coding agents that can plan, execute, recover from failures, and stay coherent across large multi-step engineering tasks.

The Problem It’s Solving

Most coding models still break the moment a task stops being local.

They can generate a React component, patch a bug, or refactor a function. But once the task becomes multi-file, infrastructure-heavy, or operationally ambiguous, the cracks show quickly. Context drifts. Tool calls fail. The model loops. Terminal sessions become chaotic. Long-running execution loses coherence.

That is the real bottleneck in agentic software engineering right now.

Cursor says Composer 2.5 was specifically trained to improve “long-horizon agentic tasks” and follow complex instructions more reliably. The company also claims substantial behavioral improvements around effort calibration, communication style, and execution consistency. (Cursor)

This matters because the next phase of AI coding is no longer about code generation quality alone. It is about whether agents can operate inside real engineering environments without constantly collapsing under state management and execution complexity.

How Composer 2.5 Actually Works

Under the hood, Composer 2.5 continues Cursor’s strategy from Composer 2: domain-specialized reinforcement learning for software engineering workflows.

Cursor’s technical report for Composer 2 describes a two-stage training pipeline:

  1. Continued pretraining on a base model
  2. Large-scale reinforcement learning inside real software engineering environments and agent harnesses (arXiv)

The important detail is not the benchmark number. It is the training environment.

Cursor is training models directly inside the same operational harness used by deployed coding agents — including terminals, tools, multi-step execution chains, and realistic repository interactions. That creates a feedback loop where the model is optimized for actual agent workflows instead of isolated benchmark prompts. (arXiv)

Composer 2.5 reportedly improves:

  • Long-running task reliability
  • Multi-step execution planning
  • Instruction adherence
  • Agent communication behavior
  • Effort calibration during coding workflows (The Indian Express)

There is another important layer here: infrastructure economics.

Composer 2 originally gained attention because Cursor delivered strong coding performance at dramatically lower token costs than frontier proprietary models. Cursor positioned it as a cheaper alternative to systems from Anthropic and OpenAI. (Cursor)

That pricing advantage came with controversy.

After launch, developers discovered Composer 2 was built on top of Moonshot AI‘s open-weight Kimi K2.5 model. Cursor later acknowledged this publicly and admitted it should have disclosed the base model earlier. (Business Insider)

Composer 2.5 reportedly still builds on the same Kimi base checkpoint, but Cursor is increasingly differentiating through RL infrastructure, agent training environments, and deployment tooling rather than raw foundational pretraining. (The Indian Express)

That is a very different strategy from the “train everything from scratch” approach most frontier labs market publicly.

What Developers Are Actually Using It For

The interesting part about Cursor’s recent releases is that they increasingly resemble operational AI infrastructure rather than a standalone IDE.

Over the last few months, Cursor has launched:

  • Cursor SDK for programmatic agents
  • Cloud development environments for agents
  • Bugbot autonomous debugging systems
  • Multi-agent execution workflows
  • Cursor 3, a broader agentic workspace layer (Cursor)

Composer 2.5 sits in the middle of that stack.

The target use case is no longer “help me write code faster.” It is:

  • Autonomous repository maintenance
  • Long-running refactors
  • Infrastructure migration workflows
  • Multi-step debugging
  • Agent-managed terminal execution
  • PR generation and validation
  • Extended software tasks that may run for hours

That direction aligns closely with where the broader MCP and agentic ecosystem is heading.

The future competitive advantage is not just model intelligence. It is orchestration quality: tool reliability, memory handling, execution recovery, context persistence, and operational safety across long-running workflows.

This is exactly why infrastructure companies like Gentoro and MCP ecosystem players like Glama.ai matter increasingly in the stack. Models are becoming interchangeable faster than orchestration layers are.

Why This Is a Bigger Deal Than It Looks

Cursor is quietly proving something the broader AI market still underestimates:

Specialized agent training may matter more than raw frontier scale for real-world developer workflows.

Composer 2.5 is not trying to be a universal reasoning model. It is being optimized aggressively for software execution environments.

That shift has major implications.

The AI coding market is rapidly splitting into two layers:

  • Foundation model providers
  • Agent orchestration and execution platforms

Cursor appears to be betting the second layer becomes more defensible over time.

That also explains why the company is investing heavily in infrastructure. Reports indicate Cursor plans to train Composer 2.5 using xAI compute infrastructure with tens of thousands of GPUs. (Business Insider)

The strategic signal here is important:
AI coding is moving from “chatbot in an editor” toward persistent software agents operating inside full execution environments.

And once that happens, infrastructure quality becomes the actual moat.

Availability and Access

Composer 2.5 is now available through Cursor.

The release follows Cursor’s broader push into autonomous coding systems and arrives during intensifying competition from Claude Code, OpenAI, and other agentic developer tooling platforms. (WIRED)

The bigger story is not whether Composer 2.5 wins a benchmark cycle. It is that Cursor is steadily building an operational stack for autonomous software engineering.

The IDE war is turning into an agent infrastructure war.

Follow for more coverage on MCP, agentic AI, and AI infrastructure.

What Wrong Docs Cost Test Automation Teams

GitHub logo

You know the feeling. You copy a code example from the official docs, wire it into your test suite, and everything passes. Green across the board. Three months later, the framework ships a major version, that example uses a deprecated command, and suddenly 200 tests across 50 teams are failing on Monday morning.

Nobody changed the tests. Nobody changed the application. The docs were wrong, and the tests were built on them.

In test automation, a wrong code example does not break one test. It breaks every test that was modeled after it.

The ecosystem is bigger than you think

Test automation frameworks are infrastructure now, not niche tools.

GitHub logo

microsoft
/
playwright

Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.

🎭 Playwright

npm version Chromium version Firefox version WebKit version Join Discord

Playwright is a framework for web automation and testing. It drives Chromium, Firefox, and WebKit with a single API — in your tests, in your scripts, and as a tool for AI agents.

Get Started

Choose the path that fits your workflow:

Best for Install
Playwright Test End-to-end testing npm init playwright@latest
Playwright CLI Coding agents (Claude Code, Copilot) npm i -g @playwright/cli@latest
Playwright MCP AI agents and LLM-driven automation npx @playwright/mcp@latest
Playwright Library Browser automation scripts npm i playwright
VS Code Extension Test authoring and debugging in VS Code Install from Marketplace

Playwright Test

Playwright Test is a full-featured test runner built for end-to-end testing. It runs tests across Chromium, Firefox, and WebKit with full browser isolation, auto-waiting, and web-first assertions.

Install

npm init playwright@latest

Or add manually:

npm i -D @playwright/test
npx playwright install

Write a test

import { test, expect

…

GitHub logo

cypress-io
/
cypress

Fast, easy and reliable testing for anything that runs in a browser.

Cypress Logo

Documentation |
Changelog |
Roadmap

The web has evolved. Finally, testing has too.

Fast, easy and reliable testing for anything that runs in a browser.

Join us, we’re hiring.


npm


Discord chat


StackShare

What is Cypress?


Why Cypress Video

Installing

npm version

Install Cypress for Mac, Linux, or Windows, then get started.

npm install cypress --save-dev

or

yarn add cypress --dev

or

pnpm add cypress --save-dev

installing-cli e1693232

Contributing

cypress
CircleCI – develop branch

Please see our Contributing Guideline which explains repo organization, linting, testing, and other steps.

License

license

This project is licensed under the terms of the MIT license.

Badges

Configure a badge for your project’s README to show your test status or test count in the Cypress Cloud.

cypress

cypress

Or let the world know your project is using Cypress with the badge below.

Cypress.io

[![Cypress.io](https://img.shields.io/badge/tested%20with-Cypress-04C38E.svg)](https://www.cypress.io/)

Framework GitHub Stars Dependent Projects
Playwright 85,100+ 451,000+
Cypress 49,600+ 1,500,000+

Playwright publishes documentation across four languages: Node.js, Python, Java, and .NET. That is four times the surface area for documentation drift. Cypress has shipped 389 releases since its inception, and each release can deprecate commands, change default behaviors, or introduce new APIs.

A code example written for Cypress 12 may use cy.intercept() patterns that behave differently in Cypress 15. The example still runs. It just does not do what you expect.

The real cost, by the numbers

Here is where stale docs hit your team’s budget, velocity, and trust.

Test maintenance eats 40-60% of all testing effort

The Capgemini World Quality Report consistently finds that test maintenance consumes 40-60% of total testing effort. That is not writing new tests. That is fixing existing ones that broke because something changed underneath them.

When a QA engineer fixes a failing test, the first thing they check is the framework docs. If the docs still show the old pattern, the engineer cannot tell whether the test is wrong or the framework changed. They burn time debugging a problem that accurate documentation would have prevented.

The Katalon State of Software Quality Report 2025 found that only 11% of QA teams have reached an optimized level of test automation maturity. 56% of QA teams report they cannot keep up with testing demands. Documentation that adds friction instead of removing it makes this gap wider.

72% of developers abandon tools over bad docs

The Postman 2023 State of the API Report found that 72% of developers have abandoned an API due to poor documentation. 54% cite documentation as the number one factor when evaluating a tool.

The Stack Overflow Developer Survey 2023 found that 90.36% of developers use technical documentation as their primary learning resource. For test frameworks competing for adoption (Cypress vs. Playwright vs. Selenium vs. AI-powered tools like Mabl and Testim), your docs are the product evaluation. A developer who hits a broken quickstart example does not file a bug. They try the other framework.

CI pipeline failures: the cost nobody tracks

Each engineering-escalated support ticket costs $150 to $250 (DevRelCon / MetricNet). For a framework with thousands of users, a single stale example that generates 100 support tickets costs $15,000 to $25,000 in direct support alone. The real cost is the engineering hours spent debugging a documentation problem instead of shipping features.

What this looks like in your codebase

Your testing framework docs show this page object pattern:

// Cypress 12 page object pattern (outdated)
class LoginPage {
  visit() {
    cy.visit('/login')
  }

  fillUsername(username) {
    cy.get('#username').type(username)
  }

  fillPassword(password) {
    cy.get('#password').type(password)
  }

  submit() {
    cy.get('form').submit()
  }
}

But Cypress 15 recommends the App Actions pattern with cy.session() for authentication:

// Cypress 15 recommended pattern
Cypress.Commands.add('login', (username, password) => {
  cy.session([username, password], () => {
    cy.visit('/login')
    cy.get('[data-testid="username"]').type(username)
    cy.get('[data-testid="password"]').type(password)
    cy.get('[data-testid="submit"]').click()
    cy.url().should('include', '/dashboard')
  })
})

Both compile. Both run. But the first pattern creates a new browser session for every test, making the suite 3-5x slower. A team that follows the old docs builds 500 tests on the slow pattern before discovering the performance problem. Rewriting 500 tests is not a bug fix. It is a quarter of engineering time.

Three things that close the gap

1. Automated review on every PR. When framework code changes, check if documentation references the changed commands, selectors, or configuration options. Flag stale examples before they merge. For a framework shipping 30+ releases per year, manual review cannot keep pace.

2. Version-aware example validation. Your documentation linting should know which framework version each example targets. An example using cy.server() (removed in Cypress 12) or page.waitForNavigation() (deprecated in Playwright) should trigger a warning in the PR where the deprecation happens, not after a user reports it.

3. Cross-language freshness tracking. For frameworks like Playwright that publish docs in four languages, track which language variants have been updated when the underlying API changes. A Node.js example that gets updated while the Python equivalent stays stale creates an inconsistency that users of the less-maintained language will hit first.

The bottom line

If your testing framework documentation is the first thing a QA engineer reads when evaluating your tool, it needs the same quality bar as the framework itself.

How does your team keep test framework docs in sync? Drop your workflow in the comments. I am genuinely curious whether anyone has solved the version drift problem across multiple language SDKs.

If your team has this problem, where stale code examples in docs are creating downstream test failures, EkLine automates documentation review in your GitHub PR workflow. It catches stale code examples, broken links, and style violations before they reach developers. See how it works.

How I Built 4 AI-Assisted Projects Using Multiple AI Coding Tools

Most people ask:

“What’s the best AI coding tool?”

After building 4 AI-assisted projects, I realized the better question is:

“Which tool fits each stage of the workflow?”

My current workflow:

  • ChatGPT → ideas and prompts
  • Windsurf → rough project structure
  • Codex → fix and refactor logic
  • Cursor → production polish

Using this workflow, I built:

  1. Parent-child emotional connection app
  2. English learning platform
  3. AI video project
  4. Affiliate marketing system

Biggest lesson:

AI doesn’t magically replace developers.

It reduces friction between:
idea → prototype → working product.

That’s where the real leverage is.

Pushing Kiro’s Free Tier to Its Limits

50 credits a month, no credit card, and a lineup of models that actually ship code. How far can you push it?

Kiro’s Free Tier Just Got Clearer

If you’ve been watching the agentic IDE space, you know things move fast. Kiro launched in the summer of 2025 with something different from the pack: specs. Structured artifacts that formalize your development process so AI agents build the right thing instead of guessing.

Here’s what changed recently. The Kiro free tier now has an official model lineup, 50 credits per month, and zero credit card required. If you decide to upgrade to a paid plan later, you get a one time bonus of $20 worth of credits (1,000 credits).

In this post I’ll walk you through how to squeeze maximum value out of those 50 monthly credits. We’re talking model selection strategy, prompt efficiency, and the credit optimization tactics that let you build something real without spending a cent.

If you want to get started today you can download the Kiro IDE for Windows, Mac, and Linux or install the Kiro CLI for Mac and Linux using curl -fsSL https://cli.kiro.dev/install | bash

What’s on the Free Tier Now

The official breakdown for new users signing up today:

  • 50 credits per month, no credit card required
  • 4 Standout Models Including:

    • Claude Sonnet 4.5
    • Qwen3 Coder Next (70%+ on SWE-Bench Verified)
    • DeepSeek v3.2 (strong at agentic workflows)
    • MiniMax 2.1 (multi-language and frontend work)
  • Rate limits and weekly quota: check the docs for specifics

  • What’s NOT included: Premium models like Claude Opus 4.7 and Claude Sonnet 4.6 are reserved for paid plans

Previously it wasn’t clear which models were supported on the free tier. Now you know exactly what you’re working with. And these aren’t throwaway models. Qwen3 Coder Next scores above 70% on SWE-Bench Verified. DeepSeek v3.2 handles complex multi-step tasks well.

What is a Kiro Credit?

A credit is a unit of work in response to user prompts. Simple prompts can consume less than 1 credit. More complex prompts, like executing a spec task, typically cost more than 1 credit. Credits are metered to the second decimal point, so the least a task can consume is 0.01 credits.

Why does that matter? Different models consume credits at different rates. A given task that costs X credits with Auto model selection will cost you roughly:

Model Multiplier Credits for same task
Qwen3 Coder Next 0.05X Cheapest option
MiniMax 2.1 0.15X Budget-friendly
DeepSeek v3.2 0.25X Budget-friendly
Claude Sonnet 4.5 1.3X Full price

This means your 50 credits stretch much further if you’re intentional about model choice. Running DeepSeek for scaffolding and bulk code generation gives you roughly 4x more interactions than running everything through Sonnet.

Picking the Right Model for the Right Task

Not every prompt needs the most expensive model. I like to think about model selection on the free tier like so:

Qwen3 Coder Next – Your workhorse for scaffolding and complex logic

  • Multi-file project generation
  • Algorithm implementation
  • Code that needs to be correct on the first pass

DeepSeek v3.2 – The efficiency play for agentic workflows

  • Refactoring and restructuring existing code
  • Multi-step tasks where you’re iterating
  • When you need volume (lots of back-and-forth) without burning through credits

MiniMax 2.1 – The frontend and polyglot specialist

  • UI component generation
  • Projects spanning multiple languages
  • CSS-heavy work and layout tasks

Claude Sonnet 4.5 – Reserve for reasoning-heavy moments

  • Debugging tricky logic
  • Architecture decisions where you need nuanced analysis
  • Tasks where getting it wrong means burning more credits on corrections

My strategy: Start every session with DeepSeek or Qwen for the heavy lifting. Switch to Sonnet only when you hit a wall or need precise reasoning. This approach roughly doubles your effective interaction count.

Picking the Right Project

Not every project is a good fit for a 50-credit monthly budget. Here are some things to consider before you start building:

  • Bounded scope – A single-page app beats a multi-service platform. You want something you can describe in one or two paragraphs.
  • Familiar territory – If you already know the stack, you spend fewer credits asking “how does XYZ work?” and more credits writing actual code.
  • Clear deliverable – “Build a CLI that converts CSV to JSON” is better than “build something cool with data.” Remember, ambiguity costs credits.

The Art of the First Prompt

Your first prompt is the most important credit you’ll spend. A vague opener like “build me a todo app” will get you a generic scaffold, and then you’ll burn 10 more credits course-correcting.

What works

  • Be specific about the stack – “React with TypeScript, Vite, Tailwind CSS” saves a round trip.
  • Describe the end state – “A single page with a form that takes X and displays Y” gives Kiro a target.
  • Include constraints upfront – “No external APIs, no database, everything in-memory” prevents the agent from over-engineering.
  • Specify the model – Start with DeepSeek or Qwen for your initial scaffold. You can always switch to Sonnet later for refinement.

Example first prompt

Build a [project] using [stack]. It should [core behavior].
Keep it to [N] files. No tests unless I ask. No markdown summaries.

Credit Optimization Strategies

1. Front-load context with steering files

Kiro’s .kiro/steering/ directory lets you inject persistent instructions into every interaction. This is free. It doesn’t cost a single credit to set up, and it saves you from repeating yourself.

Things worth putting in steering:

  • Your preferred stack and conventions
  • “Don’t add tests unless asked”
  • “Don’t create summary markdown files”
  • “Use minimal code, no boilerplate”

2. Batch your requests

One prompt that says “add feature A, refactor component B, and fix the bug in C” is one credit. Three separate prompts is three credits. Group related changes whenever possible.

3. Use specs for multi-step features

Kiro’s spec mode lets you break a feature into tasks and iterate on the design before writing code. The planning phase helps you avoid wasted implementation credits on the wrong approach.

4. Lean on hooks for automation

Set up hooks to auto-lint or auto-format on save. This means you’re not spending credits asking Kiro to fix style issues when the tooling can handle it.

5. Do the easy stuff yourself

If you can write a CSS tweak or rename a variable faster than you can describe it, just do it. Save credits for the work where Kiro’s code generation actually saves you time.

6. Use #File and #Folder context

Dragging in the right file or referencing it with #File means Kiro doesn’t have to spend tool calls reading your codebase. Less exploration = fewer internal steps = more efficient credit usage.

What I Built

Over the last couple weeks I wanted to build two things to help my workflow as a developer advocate.

1/ An event resources website that I share during every event I present at (all links, QR codes, surveys, etc found in one place)
2/ A way to generate motion video that adheres to branding guidelines that I can use as B-roll in my videos

For this Kiro free tier demonstration I ran with #2 and still had leftover credits to attempt #1 later.

By the Numbers

  • Credits used: 17.87 / 50
  • Files created: 8
  • Lines of code: 799
  • Time spent: 36 minutes
  • Primary model used: DeepSeek v3.2, Claude Sonnet 4.5
  • Model switches: 2 times

My Prompt

/hyperframes using the #assets create a 30sec clip for a kiro promotional video. 
conform to all brand guidelines, render locally. 
clip should include aspects of what makes kiro standout like specs, powers, skills etc. 
You can augment your knowledge using the public site kiro.dev. 
Background has to be solid, no gradients. 
make sure all font in the clip is the branded diatype from the font folder.

Sample Clip Generated:

Where Credits Got Wasted

  • I hadn’t set up steering files for this project. DeepSeek created unnecessary validation files and summary markdowns, burning credits I could’ve saved

  • Opensource Hyperframes package was not installed globally before I started. Kiro agent could not render the video clip and wasted cycles trying to execute. With the initial prompt the agent was not able to render the video until I installed the package properly.

  • Should’ve switched models from DeepSeek to Sonnet once the initial video composition file was created so the model would have less trouble thinking through the next task. Sonnet was able to do that in one shot versus DeepSeek trying to iterate over and over on its mistake.

When to Upgrade: The $20 Paid Bonus Path

If 50 credits a month isn’t cutting it you can experiment with an upgrade to a paid plan. For the first time you do this, Kiro gives you $20 worth of credits (that’s 1,000 credits). You’ll need a valid credit card, and billing is prorated from your upgrade date.

What you unlock with paid:

  • Premium models: Claude Opus 4.7, Claude Sonnet 4.6
  • Higher rate limits
  • 1,000 bonus credits

Is it worth it? If you’ve exhausted your free tier and want to build something bigger, absolutely. But depending on the proof of concept you’re building, the free tier is enough to form a real opinion about whether Kiro fits your workflow.

Tips for Your Own 50-Credit Build

  1. Plan before you prompt. Spend 15 minutes with a notepad before you spend a credit.
  2. Write your steering file first. It’s the highest-ROI setup you can do.
  3. Pick your model intentionally. DeepSeek for volume, Sonnet for precision.
  4. Use specs for anything beyond a single feature. The upfront cost pays for itself.
  5. Don’t fight the agent. If Kiro’s going in a direction you don’t love, course-correct early. Letting it build the wrong thing and then asking for a rewrite is a two-credit penalty.
  6. Know when to type. Not everything needs to go through the agent. Small edits are faster by hand.

Don’t forget to give me a 🦄 if you got this far and let me know what you built with your 50 credits in the comments!

Additional Resources 📚

Microsoft Just Framed MCP as Part of the Open Agentic Stack. Here’s What That Actually Means.

For years, Microsoft’s open source strategy was mostly about cloud adoption and developer ecosystems. At Open Source Summit North America 2026, the company made something much bigger clear: it now sees open protocols and agent infrastructure as the next foundational layer of computing.

And buried inside that announcement was the real signal for the MCP ecosystem.

The Problem It’s Solving

Right now, most AI agents are still trapped inside fragmented execution environments.

Every framework has its own tooling model. Every cloud vendor has its own orchestration stack. Tool access, memory handling, governance, and runtime execution are all implemented differently depending on the platform. That fragmentation becomes a serious problem once agents move from demos into production infrastructure.

Microsoft’s latest messaging is essentially acknowledging that agentic systems need the equivalent of what Kubernetes became for containers: portable infrastructure primitives and open interoperability standards. ([Microsoft Open Source][1])

That is where MCP starts becoming strategically important.

Model Context Protocol was initially framed as a standardized interface for connecting models to tools and external systems. But the ecosystem around it has evolved rapidly. MCP is increasingly becoming a shared interoperability layer for agent execution environments, tool routing, UI delivery, and cross-platform orchestration. ([Wikipedia][2])

Microsoft’s Open Source Summit announcement strongly suggests the company understands that shift.

How Microsoft’s Open Agentic Stack Actually Works

In its official summit post, Microsoft explicitly described its vision around “frameworks, protocols, and governance for AI agents” and repeatedly emphasized the need for agents to operate “across frameworks, clouds, languages, and runtimes.” ([Microsoft Open Source][1])

That wording matters.

The company is no longer talking about isolated copilots. It is talking about infrastructure portability.

Microsoft’s announcement centered around several major layers:

  • Azure Linux 4.0
  • Azure Container Linux
  • Open governance tooling
  • Secure software supply chain infrastructure
  • Open agentic system interoperability ([SDxCentral][3])

The Linux layer is especially important here.

Microsoft says Azure Linux 4.0 is being positioned as a hardened operating system foundation for cloud-native and AI-native workloads. The company also confirmed that Linux infrastructure now underpins large parts of Azure’s AI stack, including services tied to GitHub, Microsoft 365, and ChatGPT-scale deployments. ([Cloud Native Now][4])

That changes the MCP conversation significantly.

MCP servers do not exist in isolation. Real-world deployment requires:

  • Sandboxed execution
  • Tool governance
  • Authentication layers
  • Runtime isolation
  • Observability
  • Secure software supply chains
  • Container orchestration
  • Cross-agent communication

In other words, MCP adoption eventually becomes an infrastructure problem, not just a protocol problem.

Microsoft’s summit positioning suggests the company increasingly sees agent interoperability and runtime portability as core platform primitives — similar to how Kubernetes standardized container orchestration a decade ago.

What Developers Are Actually Building With MCP

The MCP ecosystem has quietly moved far beyond simple tool calling.

Developers are now using MCP to build:

  • Multi-agent orchestration systems
  • Secure enterprise tool gateways
  • Agent memory layers
  • Remote execution environments
  • Interactive AI application interfaces
  • Cross-model tool portability
  • Agent observability pipelines

That evolution is happening fast across the open ecosystem.

The Agentic AI Foundation recently positioned MCP as a key interoperability layer for “secure, scalable agentic AI systems” operating across tools, models, and platforms. ([Linux Foundation][5])

At the same time, infrastructure companies are racing to operationalize the stack around it.

Platforms like Glama.ai are increasingly focused on MCP gateway quality, discoverability, and secure tool integration. Companies like Gentoro are working on orchestration and infrastructure layers for enterprise-grade agent systems.

This is the important shift:
the protocol itself is becoming less valuable than the operational ecosystem forming around it.

And Microsoft appears to be positioning Azure directly underneath that future stack.

Why This Is a Bigger Deal Than It Looks

The most important part of Microsoft’s announcement was not Linux.

It was the company openly framing agentic AI as an open systems problem rather than a proprietary model problem.

That is a major strategic distinction.

The AI industry spent the last two years competing almost entirely on model intelligence. But production agent systems introduce a completely different bottleneck:

  • interoperability
  • execution reliability
  • governance
  • runtime security
  • infrastructure portability
  • software supply chain trust

Those are open infrastructure problems.

That is also why Open Source Summit North America 2026 heavily centered discussions around AI infrastructure, supply chain security, embedded systems, and agentic AI on the same stage. ([Cloud Native Now][6])

The ecosystem is converging around a new reality:
agents are becoming distributed systems.

And distributed systems historically standardize around open protocols faster than proprietary interfaces.

That creates a very favorable environment for MCP.

Availability and Access

Microsoft’s announcements around Azure Linux 4.0 and Azure Container Linux were unveiled during Open Source Summit North America 2026, with broader rollout activity expected around Microsoft Build. ([SDxCentral][3])

The more important takeaway is strategic:
Microsoft is increasingly treating agent infrastructure as a first-class cloud layer.

And once cloud vendors start organizing around open agent interoperability, MCP stops looking like a niche protocol and starts looking like foundational infrastructure.

Follow for more coverage on MCP, agentic AI, and AI infrastructure.

Found a GitHub Follow Botnet. Then I Found the Operator.

This is Part 2 of an ongoing investigation. Part 1 documented the initial discovery of a coordinated GitHub follow botnet — 8 accounts with Jaccard following-list similarity of 0.99+ across ~29,800 entries each, evading cross-follow detection entirely.

In Part 1, I identified 8 accounts operating as a coordinated follow botnet and showed the statistical fingerprint that exposed them. After publishing, I kept pulling.

Subsequent analysis expanded the cluster to 9 accounts, recovered infrastructure linkage to a specific GitHub identity, and mapped the generation pipeline responsible for all 552 repositories across the cluster. The pipeline left recoverable artifacts in every repository it produced.

Here is what the data shows.

The Cluster Expanded

Running Jaccard similarity analysis against the original 8 accounts and their extended follower graphs surfaced a ninth account: lynewinter.

Jaccard similarity against mariwatts: 0.9898.

The same methodology that identified the original 8 applies here. A similarity coefficient of 0.9898 across ~29,800 following entries does not occur between unrelated accounts. At this scale, unrelated GitHub users do not organically converge on near-identical follow graphs.

The confirmed cluster is now 9 accounts:

canestein, hazexone, domcomit, kylehyne, jaderytm,
vierystein, hanyvert, mariwatts, lynewinter

552 Repositories, One Pipeline, 34 Minutes

Each of the 9 accounts has between 57 and 63 public repositories. Total across the cluster: 552 repositories.

Every repository was created on May 12, 2026. Fetching the first repository per account and extracting an HTML comment embedded in every generated README reveals the exact creation timestamp and a job identifier for each:

2026-05-12 11:10:39  |  hanyvert    |  SwapLink    |  job=48099
2026-05-12 11:18:46  |  jaderytm   |  GasSync     |  job=39412
2026-05-12 11:27:52  |  hazexone   |  BitForge    |  job=63871
2026-05-12 11:30:00  |  canestein  |  BlockLink   |  job=51606
2026-05-12 11:33:07  |  mariwatts  |  MintChain   |  job=82564
2026-05-12 11:35:37  |  vierystein |  HashSync    |  job=20845
2026-05-12 11:38:58  |  kylehyne   |  SmartLink   |  job=38575
2026-05-12 11:42:07  |  lynewinter |  YieldChain  |  job=78012
2026-05-12 11:44:30  |  domcomit   |  ProjectCloud|  job=26977

All 9 accounts provisioned across a 34-minute window. Job IDs are non-sequential, consistent with a job queue system dispatching parallel workers rather than a simple sequential script.

The comment format embedded in every README:

<!-- fallback_BlockLink_20260512113000_51606 -->

fallback_ is a named prefix — consistent across all accounts and repos. The timestamp and job ID vary per generation run. This is a recoverable generator fingerprint present in all 552 repositories.

The central finding of Part 2 follows directly from this: a single automated pipeline provisioned all 9 accounts and generated all 552 repositories in a 34-minute window. Every subsequent finding — the template leak, the commit metadata, the email domain — is evidence of that same pipeline’s operation.

Repo Contents Are Hollow

Fetching file trees and raw content from sampled repositories confirms the repositories contain no functional code.

A representative Python file (blocklink.py, 1,656 bytes):

class BlockLink:
    def run(self) -> bool:
        try:
            self.logger.info("Starting BlockLink processing")
            # Add your main logic here
            self.logger.info("Processing completed successfully")
            return True

The comment # Add your main logic here is the entirety of the implementation. Every repository follows this pattern: a class stub, a logging setup, an argparse entry point, and a test file that imports and instantiates the stub. No logic. No purpose. The repositories exist as props.

Repo names follow a consistent [Word][Suffix] pattern where suffixes are drawn from a fixed set: Core, Chain, Sync, Vault, Forge, Link. Names and descriptions are AI-generated. Stars: zero. Forks: zero, across all 552.

A Template Leak Confirms Shared Generation

The LICENSE section of every generated README contains a hardcoded URL pointing to mariwatts regardless of which account’s repository it appears in:

From canestein/BlockLink:

See the LICENSE file at https://github.com/mariwatts/BlockLink/blob/main/LICENSE

From lynewinter/YieldChain:

See the LICENSE file at https://github.com/mariwatts/YieldChain/blob/main/LICENSE

The account name substitution in the generator did not apply to the LICENSE URL field. mariwatts appears as the base account in the generator template. The substitution pattern replaced account names in repo metadata and README body text but missed this field.

Pipeline Linked to a Single GitHub Account via Authenticated Commit Metadata

Every repository across all 9 accounts contains commits with the following co-author line:

Co-authored-by: Hajigur <66867581+hajigur69@users.noreply.github.com>

The format [email protected] is GitHub’s authenticated noreply scheme. GitHub generates this address from the account’s internal numeric ID. The ID is immutable and assigned at account creation.

Fetching commits from hajigur69‘s own repository (Cloud9, created February 2, 2026) confirms the same identifier:

Author: Hajigur | 66867581+hajigur69@users.noreply.github.com

The same authenticated GitHub ID (66867581) appears both in the cluster commits and in commits authored directly by hajigur69.

hajigur69 is pipeline-linked. GitHub account created June 13, 2020. 903 followers. 679 following. Public bio: lamer.

Pipeline-Associated Infrastructure: carox.tech

Two accounts in the cluster — canestein and lynewinter — use a custom domain in their git commit author fields rather than GitHub’s noreply format:

canestein  →  [email protected]
lynewinter →  [email protected]

These addresses appear in the git author field of every commit on those accounts, recorded at commit time by the pipeline’s local git configuration.

WHOIS on carox.tech:

Creation Date:  2025-07-19
Updated Date:   2025-08-01
Registrar:      Namify Domains Inc
Name Server:    raphaela.ns.cloudflare.com
Name Server:    uriah.ns.cloudflare.com

DNS enumeration:

A record:   none
MX records: route1.mx.cloudflare.net (priority 44)
            route2.mx.cloudflare.net (priority 84)
            route3.mx.cloudflare.net (priority 28)
TXT record: v=spf1 include:_spf.mx.cloudflare.net ~all

No web presence. MX records point to Cloudflare Email Routing — a free service that forwards custom domain email to an external inbox. The domain functions exclusively as an email forwarding layer. The destination inbox is not publicly recoverable.

The 12-day gap between creation and update date is consistent with the time to configure email routing after registration. Beyond that, the domain predates the repo generation by several months — it was in place before the pipeline ran, not stood up alongside it.

Additional Artifact: Malformed Co-Author Address

In addition to the hajigur69 co-author signature, a second co-author line appears on the GOOD commit across 8 of the 9 accounts:

Co-authored-by: v <v@users.noreply.github.com>

GitHub’s authenticated noreply format is [email protected]. The numeric ID prefix is machine-generated by GitHub’s credential system at authentication time — it cannot be produced by typing a username, only by pushing through a properly authenticated git session. The address [email protected] contains no such prefix and does not match the format GitHub generates for any account.

There is a GitHub account with the login v (ID: 627846, created 2011). Its correctly formatted noreply address would be [email protected]. The string present in these commits is not that address.

The most likely explanation is a misconfigured git identity on whichever machine ran the pipeline — a user.email set to [email protected] rather than the proper authenticated format. Whether placeholder or misconfiguration, the effect is the same: it was baked into the pipeline’s commit template and executed across the majority of accounts unchanged. It’s a pipeline artifact, not a deliberate attribution.

What the Repos Are Actually For

The following is inference from the confirmed findings above, not an independently verified claim.

The repositories are not the product. Hollow stubs with no stars and no forks have no value on their own.

The follow botnet from Part 1 is the product. The accounts need to look like real developers for the botnet to work — real developers have repositories. The 552 repos are set dressing: enough surface area to pass a casual profile inspection without requiring the operator to produce anything functional.

The pipeline’s role is to manufacture that surface area at scale and speed. Nine accounts, 552 repositories, 34 minutes. A human doing this by hand would take weeks and produce inconsistent output. Automation produces it uniformly and leaves the fingerprints documented above.

What the inflated follower counts are ultimately used for — social proof laundering for phishing accounts, legitimacy for malicious package distribution, resale of aged accounts — is not established by this data. The confirmed finding is the coordination and the shared infrastructure. The downstream use is an open question.

The follower graph itself appears to be the primary maintained asset. ~29,682 developers curated into a target population, followed across 9 aged accounts. The repos are disposable scaffolding.

Summary of Confirmed Findings

Finding Source
9 coordinated accounts, Jaccard 0.98–0.99 API-derived following list comparison
All 552 repos created May 12 in 34-minute window Embedded HTML comment timestamps
<!-- fallback_NAME_TIMESTAMP_JOBID --> in every README Direct file fetch, all accounts
mariwatts hardcoded in LICENSE URLs across foreign accounts Direct file fetch, multiple accounts
66867581+hajigur69 co-author on all puppet account commits Raw commit data, GitHub API
66867581+hajigur69 author on hajigur69’s own repo Raw commit data, GitHub API
[email protected], [email protected] in commit author fields Raw commit data, canestein, lynewinter
carox.tech: no A record, Cloudflare MX, registered July 2025 WHOIS, DNS
[email protected] lacks numeric ID prefix Raw commit message, canestein/BlockLink
All repo code: hollow stubs with no implementation Direct file fetch
Zero stars, zero forks across all 552 repos GitHub API

What This Demonstrates

The finding is the pipeline. A single automation system provisioned 9 apparently independent GitHub accounts, generated 552 repositories across all of them in 34 minutes, embedded the same co-author identity in commits across the cluster, and left recoverable fingerprints in every generated file — all while the accounts maintained behavioral patterns designed to evade the most common detection heuristic (cross-following).

Attribution was possible here because of operational mistakes: a hardcoded template account, an unformatted co-author string, and email domain leakage in git config. A pipeline with better hygiene — consistent noreply formatting, template substitution coverage, and throwaway email addresses — would produce the same coordinated behavioral output with substantially less recoverable linkage.

This analysis identifies operational linkage and shared infrastructure; it does not independently establish the real-world identity of the individual operating the pipeline.

The hajigur69 co-author fingerprint that surfaced in this investigation didn’t start here. The same identifier — same numeric ID, same fallback_ generator artifact — appears in an earlier operation running nine months before this botnet was provisioned: a crypto spam network with fabricated commit histories, purchased star services, and 163 active pip install vectors targeting developers through search poisoning.

Part 3 covers that earlier operation and what it tells us about the infrastructure behind both.

Read Part 3 →

Open-Source Software Is Starting to Help Robots Think

When a group of academics started making open-source robotics hardware, a generation of roboticists got years of their lives back. Now, the bigger challenge is getting robots to think—and that’s starting to be open-sourced too.

The shift is still early, but companies including Hugging Face, Nvidia, and Alibaba have all made significant bets on open-source robotics in the last two years, releasing tools and models aimed at the higher-level work of getting robots to reason, decide, and act.

The open source movement that accelerated other AI applications is now being applied to the problem of making robots smarter. If these attempts to bring AI to robotics with open-source platforms succeed, the barrier to building a capable robot could fall as fast as the barrier to building an AI application did.

The world ROS built

Open-source robotics software has been around since the mid-1990s, with early projects like Carnegie Mellon’s Inter-Process Communication package and the Player project in the early 2000s laying the groundwork. But these were often tied to specific research groups, and the field remained fragmented.

The Robot Operating System, ROS, changed that when it made its debut in 2007. By bundling tools and attracting more users, it became the de facto standard. The story of open-source robotics, in many ways, starts there.

Despite its name, ROS is not actually an operating system. Rather, it is a software framework that sits on top of Linux and handles robotic fundamentals like moving data between components, talking to hardware, building maps, planning paths, and supporting developer tools, such as data logging and visualization. Before ROS, every robotics team wrote that infrastructure themselves. It often took a year or two before a lab could get to the research it actually cared about.

Brian Gerkey, who helped build ROS in the mid-2000s, says he was drawn to the project because of how much open source had already changed the world, pointing out that nearly the entire internet is built on it.

“I’m a tool builder, and I like to share everything as openly as I possibly can, because I think that’s where we get the most impact out of what we build,” says Gerkey, Board Chair at Open Robotics and now CTO at Intrinsic, a robotics and AI unit of Google.

As it was developing, the AI community largely took the same approach, sharing research, models, and data openly, and the field accelerated faster than almost anyone predicted. Now some of those same advancements are arriving in robotics.

Open-source AI for robotics

Computer vision, once a hard problem, has advanced dramatically in just a few years, says Spencer Huang, Nvidia’s director of product for robotics. What once required significant expertise can now be done in a few lines of code. Simulation tools have become accurate enough to be useful for training, and access to the tooling that once required a specialized lab is now widely available, much of it open source.

“To get into robotics, you no longer need a Ph.D.,” he says. The result is a much larger pool of people who can contribute, and the field is starting to look less like a specialized discipline and more like a platform that anyone can build on.

Nvidia has built out an open-source robotics stack that covers the full development pipeline. Its Cosmos world models generate synthetic training data and simulate physical environments. Its GR00T models give robots the ability to reason about and execute complex tasks. And its Isaac frameworks handle the orchestration that ties training, simulation, and deployment together. Not everyone needs to train the robots from scratch, Huang says, and most people probably shouldn’t.

“If you gate pre-training, the field just never grows,” he says. “We should be able to provide a high-quality, state-of-the-art pre-trained model that anyone can go and take and fine tune for their own purposes.”

All of Nvidia’s open-source models live on Hugging Face, the open-source AI platform that has become the default place to share models and datasets. Hugging Face launched LeRobot, a community platform for robotics AI, in May 2024. Since its launch, the number of robotics datasets on the platform grew from 1,145 at the end of 2024 to more than 58,000 today, making it the single largest dataset category on the hub.

Hugging Face has also moved into hardware, acquiring robotics company Pollen Robotics. The acquisition came from a realization that software alone was not enough, according to Clement Delangue, Hugging Face’s CEO. The goal, as with the software, was to bring more people in.

The contributors to LeRobot include the biggest names in the industry, academic labs, and hobbyists building robots in their spare time. For instance, Alibaba released RynnBrain earlier this year, an open-source foundation model for physical AI that the company claims outperforms comparable offerings from Google and Nvidia on benchmarks. That diversity of projects, Delangue says, is important.

“It is not just one model or one dataset or one hardware,” he says. “It is a lot of small contributions that everyone can be part of.”

Commercial incentives muddle the field

The stakes, Delangue says, go beyond convenience. A world where only a few proprietary systems control the robots in people’s homes is a concerning one. “Having robots at home that you don’t really understand, that you don’t really control, that a few people in Silicon Valley control is a scary thought,” he says. “Open source gives an alternative path.”

But getting there is not straightforward. The open sourcing happening now looks different from what produced ROS, which emerged largely from academics pooling their work with no commercial stake in the outcome. The biggest contributors today are companies with clear business reasons to want more people building on their platforms. That’s not necessarily a bad thing, says Bill Smart, a professor at Oregon State University who was part of the early open-source robotics community. But the incentives are worth being aware of.

He also worries that the lowered barrier to entry has a downside. Researchers coming from AI without a robotics background are sometimes solving problems the field already solved. A newcomer might spend a week training a neural network to move a robot’s hand from one point to another, unaware that the same task can be accomplished with a few lines of code using decades-old techniques. The incentives are not always pointing in the same direction as the progress.

Smart is not without hope though. Whatever the motives behind the open sourcing, he says, the effect is real. More people are in the field than ever before, the tools are genuinely easier to use, and the community is bigger and more diverse than anything that existed when ROS was getting started.

“Anyone can make a robot move now,” he says. “As an old tech guy, that makes me happy and sad, because I’m no longer special.”