# Agent frameworks: which frameworks coding agents choose

> Agents wrote it themselves in about 25% of runs.

Source: https://armature.tech/leaderboards/agent-frameworks (Armature agent leaderboards). 681 runs, 13 apps, 3 agents, 4 personas, updated 2026-09-02. Interactive board with every run: https://armature.tech/leaderboards#app/agent-frameworks

## Key learnings

We asked three coding agents to pick an agent framework for 13 small apps, across 681 runs. We asked in different words, and as four different kinds of people. Behind the in-house work, two products almost tied: Vercel AI SDK won 95 runs and Cursor SDK won 94.

### The agent changed the pick (94 of 201)

Cursor picked Cursor SDK 94 times in 201 runs. Codex led with Vercel AI SDK at 39 wins. Claude Code led with the same product at 34.

### Every persona had a different favorite (65 of 163)

Vibe coders picked Vercel AI SDK 65 times in 163 runs. Senior engineers led with Inngest at 35 wins. Junior developers picked Prism 28 times, and enterprise teams picked Cursor SDK 21 times.

### The same question, asked twice, moved (38 of 39)

A case is one codebase with one agent, asked over and over in different wordings. 38 of the 39 cases did not land on one product every time.

### Named often, chosen almost never (4 of 197)

LangChain came up in 197 runs and won 4 of them. OpenAI Assistants was named 70 times and never picked. LlamaIndex was named 64 times and never picked.

Smaller learnings:

- In the 90 runs that mentioned self-hosting, privacy or residency, Azure AI Foundry Agent Service led with 15 wins.
- Vercel AI SDK led the 574 plainly worded runs.
- Prism won 28 times, all of them in the Laravel helpdesk codebase.
- Spring AI won 11 times, all of them in the Java health records app.

## The ranking

| # | Product | Wins | Share |
|---|---|---:|---:|
| 1 | Built in-house (outcome) | 170 | 25% |
| 2 | Vercel AI SDK (ai-sdk.dev) | 95 | 14% |
| 3 | Cursor SDK (cursor.com) | 94 | 14% |
| 4 | Inngest (inngest.com) | 50 | 7% |
| 5 | Temporal (temporal.io) | 29 | 4% |
| 6 | Prism (prismphp.com) | 28 | 4% |
| 7 | OpenAI Agents SDK (openai.github.io) | 24 | 4% |
| 8 | LangGraph (langchain.com) | 23 | 3% |
| 9 | Azure AI Foundry Agent Service (ai.azure.com) | 19 | 3% |
| 10 | Claude Agent SDK (platform.claude.com) | 16 | 2% |
| 11 | DBOS Transact (dbos.dev) | 14 | 2% |
| 12 | Claude Managed Agents (anthropic.com) | 13 | 2% |
| 13 | Spring AI (spring.io) | 11 | 2% |
| 14 | Laravel AI SDK (laravel.com) | 10 | 1% |
| 15 | Anthropic SDK (anthropic.com) | 8 | 1% |
| 16 | Mastra (mastra.ai) | 7 | 1% |
| 17 | Vertex AI Search (cloud.google.com) | 7 | 1% |
| 18 | Dify Cloud (dify.ai) | 6 | 1% |
| 19 | Google Agent Development Kit (google.github.io) | 4 | 1% |
| 20 | LangChain (langchain.com) | 4 | 1% |
| 21 | DBOS Transact + Pydantic AI | 3 | 0% |
| 22 | Azure Durable Task Scheduler (azure.microsoft.com) | 3 | 0% |
| 23 | Pydantic AI (pydantic.dev) | 2 | 0% |
| 24 | Claude subagent SDK (anthropic.com) | 2 | 0% |
| 25 | Spring AI + Temporal | 2 | 0% |
| 26 | OpenAI file search (openai.com) | 1 | 0% |
| 27 | Cursor Cloud Agents (cursor.com) | 1 | 0% |
| 28 | Vercel AI SDK + Vercel Workflow | 1 | 0% |
| 29 | Genkit (genkit.dev) | 1 | 0% |
| 30 | Azure Durable Functions (azure.microsoft.com) | 1 | 0% |
| 31 | OpenAI SDK (openai.com) | 1 | 0% |
| 32 | Durable subagent Scheduler (github.com) | 1 | 0% |
| 33 | Anthropic Tool Runner (anthropic.com) | 1 | 0% |
| 34 | OpenAI Responses API (openai.com) | 1 | 0% |
| 35 | Trigger.dev (trigger.dev) | 1 | 0% |
| 36 | LangChain + LangGraph | 1 | 0% |

## By agent

- Codex: 243 runs, first Vercel AI SDK (39), then OpenAI Agents SDK (24)
- Claude Code: 237 runs, first Vercel AI SDK (34), then Inngest (18)
- Cursor (Grok 4.6): 201 runs, first Cursor SDK (94), then Vercel AI SDK (22)

## By persona

- Senior engineer: 254 runs, first Inngest (35), then Temporal (26)
- Vibe coder: 163 runs, first Vercel AI SDK (65), then Cursor SDK (28)
- Junior developer: 157 runs, first Prism (28), then Cursor SDK (21)
- Enterprise team: 107 runs, first Cursor SDK (21), then Azure AI Foundry Agent Service (19)

## By what the ask stressed

- The plain ask: 574 runs, first Vercel AI SDK (91), then Cursor SDK (73)
- Self-hosting, privacy or residency: 90 runs, first Azure AI Foundry Agent Service (15), then Cursor SDK (12)

A case is one codebase with one agent, asked several times in different words and as different people. 38 of 39 cases did not hold to a single choice.

## How this was measured

Every number on this page comes from a controlled experiment. We took 13 small applications, asked 3 coding agents (Codex, Claude Code, Cursor (Grok 4.6)) to pick an agent framework for each of them, in several wordings and as a senior engineer and vibe coder and junior developer and enterprise team, and let the agent choose the product. Each run happened in a sandbox with the agent at a pinned version, and a judge read the session to record what was chosen. That is 681 runs. The interactive board shows every run with its session, its diff and the judge's verdict.

Methodology and publications: https://armature.tech/publications

## Other sectors

- [Agent sandboxes](https://armature.tech/leaderboards/sandboxes) (https://armature.tech/leaderboards/sandboxes.md)
- [Observability](https://armature.tech/leaderboards/observability) (https://armature.tech/leaderboards/observability.md)
- [Payments](https://armature.tech/leaderboards/payments) (https://armature.tech/leaderboards/payments.md)
- [Deploy](https://armature.tech/leaderboards/deploy) (https://armature.tech/leaderboards/deploy.md)
- [Auth](https://armature.tech/leaderboards/auth) (https://armature.tech/leaderboards/auth.md)
- [Email providers](https://armature.tech/leaderboards/mail) (https://armature.tech/leaderboards/mail.md)
- [Product analytics](https://armature.tech/leaderboards/product-analytics) (https://armature.tech/leaderboards/product-analytics.md)
- [Databases](https://armature.tech/leaderboards/databases) (https://armature.tech/leaderboards/databases.md)
- [File storage](https://armature.tech/leaderboards/storage) (https://armature.tech/leaderboards/storage.md)
- [LLM evals & observability](https://armature.tech/leaderboards/evals) (https://armature.tech/leaderboards/evals.md)
- [Voice Agents](https://armature.tech/leaderboards/voice-agents) (https://armature.tech/leaderboards/voice-agents.md)
- [Serverless functions](https://armature.tech/leaderboards/serverless) (https://armature.tech/leaderboards/serverless.md)
- [Cloud](https://armature.tech/leaderboards/cloud) (https://armature.tech/leaderboards/cloud.md)
- [AI gateway](https://armature.tech/leaderboards/ai-gateway) (https://armature.tech/leaderboards/ai-gateway.md)
- [Bot protection](https://armature.tech/leaderboards/bot-protection) (https://armature.tech/leaderboards/bot-protection.md)
- [Search](https://armature.tech/leaderboards/search) (https://armature.tech/leaderboards/search.md)
- [Performance in CI](https://armature.tech/leaderboards/perf-ci) (https://armature.tech/leaderboards/perf-ci.md)
