Build the harness, rent the model
Coinbase, Shopify, and Ramp converged on the same coding-agent architecture, and it demotes model choice to a config flag.
Three companies with no reason to talk to each other — a crypto exchange, an e-commerce platform, and a fintech — each built an internal coding agent over the past year. Coinbase has Forge, Shopify has River, Ramp has Inspect. All three are production systems with real adoption numbers, not innovation-lab demos. And all three companies still pay Anthropic, because their engineers never stopped using Claude Code.
That looks like a contradiction until you notice what they actually built. None of them trained a model. None of them even fine-tuned one. They built everything around the model — the sandboxes, the credentials, the integrations, the verification loops — and left the reasoning engine as a line item. The build-versus-buy debate is over, and the answer is both, split along a very specific seam.
Three teams, one blueprint
The convergence is the story. These systems were built independently, and they're nearly isomorphic.
Coinbase's Forge lives in Slack and Linear. Tag it on a bug report and it pulls repository context, writes a fix, validates it, and can hand back a one-off mobile build for review — the whole loop from ticket to reviewable artifact without a developer opening an editor.
Shopify's River runs exclusively in public Slack channels — no DMs, by design, so every session becomes a searchable transcript other teams learn from. Underneath it sits a platform Shopify clearly considers the real asset: a company-wide monorepo, Nix-reproducible environments, and Postgres-backed durable sessions that survive restarts. A median session is 50 tool calls over 19 minutes. Shopify says River now coauthors one in eight merged pull requests, and that its merge rate climbed from 36% to 77% in two months as teams iterated on its instructions.
Ramp's Inspect runs every session in a sandboxed VM on Modal, built from images refreshed every 30 minutes so the agent's environment matches what an engineer has locally. It's wired into Sentry, Datadog, LaunchDarkly, Buildkite, GitHub, and Slack — meaning it doesn't just write code, it checks telemetry and feature-flag state to verify its own work. Ramp says roughly 30% of PRs merged to its frontend and backend repos are written by Inspect, with no adoption mandate.
Same shape, three times: durable execution, prod-faithful sandboxes, deep hooks into internal systems, and automated verification. When three teams independently converge on an architecture, that's not a trend piece — that's the pattern stabilizing. LangChain made it official in March by open-sourcing Open SWE, explicitly patterned on Stripe's Minions, Coinbase's agent, and Ramp's Inspect.
We've watched this movie before. Nobody built their own cloud after AWS won; they built internal developer platforms on top of it — golden paths, deploy pipelines, Backstage portals. The harness is the IDP wave repeating one layer up, and the model is taking the position AWS took: essential, rented, and interchangeable behind your own abstraction.
The economics force the split
Why own the harness but rent the model? Because the harness is where both the leverage and the cost control live.
Microsoft Research's analysis of agentic coding found that autonomous tasks can burn on the order of 1,000× more tokens than interactive code chat, with input tokens — context, retries, re-reads — dominating the bill. Background agents are token infernos, and their consumption is wildly variable even across identical tasks. You cannot budget that from a vendor dashboard. You can only control it if you own the gateway.
Coinbase is the proof. Brian Armstrong reported the company cut AI spend by roughly half while token usage kept growing — not with usage caps (91% of employees never hit theirs anyway) but with gateway-level moves: prompt-cache hit rates pushed from 5% to 60%, routing that reserves frontier models for planning while cheaper models handle execution, and experiments defaulting to open-weight models like GLM 5.2 and Kimi 2.7. Every one of those levers requires sitting between your developers and the model. None of them require asking engineers to switch tools.
That last detail should worry model vendors more than the harness-building does. The high-volume, high-growth workload — background agents — is exactly the workload being routed to the cheapest adequate model, increasingly Chinese open-weight ones. What frontier vendors keep is the interactive seat.
And the interactive seat is why Anthropic still gets paid
Here's the division of labor that's actually emerged, and I'd bet on it holding. Internal agents own asynchronous work: anything that starts in Slack or a ticket, needs credentialed access to internal systems, and can verify itself against production telemetry. Commercial assistants own the interactive loop in the editor and terminal. Claude Code remains the most-used assistant at Coinbase alongside Forge; half of Ramp's engineers use it weekly next to Inspect.
The split maps to where the value comes from. Async work's value is proprietary context — your Datadog, your feature flags, your monorepo — which a vendor client can never integrate as deeply as your platform team can. Interactive work's value is raw model quality plus ergonomics that vendors iterate on daily, where an internal team can't keep pace and shouldn't try.
The irony is thick, though: Anthropic's stickiest asset in this story isn't Claude the model — which enterprises are actively making swappable — it's Claude Code, a harness. The thesis these companies proved cuts both ways.
What this means for your team
If you have a real platform engineering team, the checklist writes itself, in order: an LLM gateway first (routing, caching, and spend visibility pay for themselves before any agent exists), then prod-faithful sandboxes, then integrations with your issue tracker and observability stack, then verification. The metric that matters is agent-PR merge rate — River's 36-to-77 climb came from iterating on instructions and skills, not from a model upgrade.
If you don't have a platform team, don't build. The investment behind Forge, River, and Inspect assumes people whose full-time job is maintaining it. Run Claude Code or its competitors with per-developer budgets, and if you want the async pattern, Open SWE exists precisely so you don't start from scratch.
Either way, the strategic read is settled: model choice is becoming a config flag in someone's gateway, and the durable advantage — for enterprises and, awkwardly, for the model vendors themselves — is the layer that decides how, where, and how expensively the model gets used.
Sources & further reading
- Coinbase, Shopify and Ramp all built their own coding agents. All three still pay Anthropic. — thenewstack.io
- Under the River — shopify.engineering
- Why We Built Our Own Background Agent — engineering.ramp.com
- Open SWE: An Open-Source Framework for Internal Coding Agents — langchain.com
- How to keep AI spend flat while token usage grows exponentially — x.com
- Ramp Claude Code case study — claude.com
- Coinbase's bet on agent-first development — linear.app
- How Do AI Agents Spend Your Money? Analyzing and Predicting Token Consumption in Agentic Coding Tasks — microsoft.com
Rachel has been embedded in the developer tooling ecosystem for nearly eight years, covering everything from IDE wars and package-manager drama to the quiet rise of AI-assisted coding. She has a soft spot for open-source maintainers and an unhealthy number of terminal emulators installed on a single laptop.
Discussion 5
okay but i need to see the actual adoption numbers and error rates here. 'real adoption' is doing a lot of work in that sentence — are we talking thousands of devs using this daily, or a few hundred power users on select tasks? and if they're all still paying anthropic for claude, what's the actual ROI on building the harness if you're just adding latency and complexity on top of something that already works?
this is the pattern i keep seeing - the real moat is the harness, not the model. curious how this changes once we get better determinism/safety guarantees from the tooling side
we did something similar with our internal code execution layer last year and yeah, the realization hit hard — the model itself became almost interchangeable once you've got solid sandboxing and good prompt engineering around it. spent months optimizing our credential injection and validation pipeline, and suddenly swapping between claude and whatever else wasn't this huge lift anymore. the harness is where the actual value lives.
yeah this tracks. spent way too much time bikeshedding which model to use when the real work is always the plumbing. once you nail the sandbox and the request/response loop, honestly doesn't matter as much
yeah exactly, this is what i'm starting to realize. been overthinking model selection when i should just get the harness working first