If you've been following agentic coding lately, you've probably heard about Cursor Composer 2.5. The provenance matters less than the result: it was the first cheap model in a while that I trusted as a daily driver—fast, steady through long tool loops, and good enough that I stopped waiting for my Claude or Codex quota to reset. Since I started this project, Grok 4.6 has pushed the same economics further. SpaceXAI's August release matches GPT-5.6 Sol at 61 on the Artificial Analysis Intelligence Index, while its $2/M input and $6/M output pricing puts it on the cost/performance Pareto frontier. Cursor makes the deal stranger still: Grok 4.6 and Composer 2.5 sit in a separate Cursor Models pool with generous included usage even on the $20 Pro plan. The point is not which model wins this week's chart. Frontier-ish agent work is getting cheap enough to leave running, and once a model crosses that line I stop wanting it in one app and start wanting it everywhere.
The catch is structural, since as of right now Composer 2.5 is only available in Cursor, the desktop app and the Cursor CLI, and they are not doing the whole "paste this base URL anywhere, put in your API key, and go have fun" thing. None of that is a complaint about the surfaces, because the surfaces are the best part of the story. The desktop app is still the strongest argument anyone has made for an AI-native editor, and since I live in a terminal, the Cursor CLI is the one I keep going back to for how fast it is, how legible the agent loop stays when it is twelve tool calls deep, how the diffs and approvals land exactly where you expect them, and how little it asks of me to get out of its way, and it is what I point people at when they tell me agentic coding never clicked for them inside an editor. Cursor also gets the unglamorous part right, where one subscription I already pay for covers the model and the client together instead of nickel-and-diming me across three billing relationships. If I were starting from zero today I would happily run my whole day through the Cursor CLI and never build a line of this.
But I am not starting from zero, and that is the whole reason any of this exists, because it was never really about Claude Code. The workflows I could not give up live in Pi, Earendil's agent harness, built on the opposite premise from a monolithic agent app, where you adapt the harness to your workflow instead of the other way around. Pi will point at any of fifteen-odd providers, so the model itself is a config line, but everything wrapped around that config line is mine: TypeScript extensions that add my own tools and commands, skills I load on demand, packages I share between projects, RPC-mode integrations where something that is not Node drives the agent over stdin and stdout, and print-mode calls buried inside scripts that have been running unattended for a year. That is the pile I actually ship out of every day, and it is not something I can talk into speaking a different protocol just because I found a model I like.
None of that ports to a different runtime over a weekend, since Pi speaks Anthropic- and OpenAI-shaped provider APIs and that shape is the seam every one of those extensions is built against, so swapping the harness underneath means rewriting the extensions and the RPC callers sitting on top of it. Claude Code is in the pile too, and it is the client I use in the walkthrough below since it throws the most local tools at the problem, but it was never the reason I built this.
That is the actual itch, where you can love Composer 2.5, love what Cursor is doing generally, and still spend most of your day inside a harness that predates both and that I have not had time to port. Every time I dropped back into Pi, I was reaching for Opus or Codex pricing again while the Cursor subscription I already pay for sat idle. If the model were mediocre I would not have bothered, but since it is fast, cheap, and weirdly good at the exact long-running agent work I care about, I wanted it in every workflow I have rather than only the ones with a Cursor client in front of them.
This is exactly the sort of gap my CLIProxyAPI fork exists to close. CLIProxyAPI is a Go proxy server with one job: take whatever pile of AI subscriptions and OAuth logins you already pay for, Claude Code, Codex, Gemini, and the rest of the circus, and expose them behind one OpenAI- or Anthropic-shaped API on your machine. Instead of every CLI inventing its own auth circus, you point your tools at localhost, pass a key your config trusts, and say which model you want.
My fork exists because I wanted more providers and a hosted route. I added Copilot OAuth back when that was the best deal around, then Railway deployment with auth bundling so you can log in locally once and hit the proxy from a laptop, iPad, or whatever happens to be in front of you. I also added pass-through models for random OpenAI- or Anthropic-compatible endpoints and first-class Chutes support, which is basically serverless compute for open-source models; the fork fetches Chutes' model list, normalizes the names, and automatically exposes explicit chutes-* routes so I do not have to hand-maintain whatever model happens to be cheap and useful this week. Apparently my hobby is collecting AI billing relationships and pretending that is infrastructure.
The next feature was obvious: Cursor Composer via your Cursor subscription and your Cursor API key. Same theme, one base URL, many providers, many tools, now with Cursor. And there is an official answer here, a good one. Cursor publishes @cursor/sdk, a real agent runtime you can build on, and their own launch post pitches exactly this kind of use: custom harnesses, CI agents, Cursor embedded in your own products, running "on your machine or on Cursor's cloud." That is a supported, documented front door, and most labs shipping a model this good would have handed you a chat box and a waitlist instead. For anything new I write the SDK is the obvious path, and it is where my newer workflows are already headed.
What I ran into is a migration problem rather than a capability one, since porting my Pi work to @cursor/sdk would mean rewriting every extension and RPC caller I have stacked on top of a provider-agnostic harness, and the entire reason I picked that harness was that the model is supposed to be the swappable part. Some of it is worth doing eventually, some of it is scheduled work I would rather not touch while it runs clean, and some is simply further down the list than the work it exists to do, so I wanted Composer in those workflows now rather than at the end of a migration backlog. I also did not want the sketchy alternative, where I reverse-engineer Cursor's private protobuf and OAuth dance and pretend to be their app; Cursor built a front door, and walking around the side of the building would have been both rude and fragile. So the version I wanted put the SDK in exactly one place, letting the published @cursor/sdk talk to Cursor inside the proxy and then making each client's tools show up in the shape Composer knows how to call, so Pi gets Composer as one more provider entry and every extension I have written keeps working untouched.
That got the model talking, but not working. Cursor's SDK can run the Composer agent loop, but Cursor's side does not accept arbitrary Claude-style tools. It accepts MCP servers. So CLIProxyAPI has to dynamically present Claude Code's local tools as fake MCP servers, keep the SDK run alive across tool calls, and route every shell command, file read, edit, grep, and local MCP call back to the machine where Claude Code already lives.
It works now. Several wrong designs, one embarrassing filesystem leak, and one rewrite of the entire safety story later, Composer sits inside Pi and Claude Code without turning back into a chat box that talks about edits instead of making them.