Inside theSoftware FactoryWhat is a software factory?
An Uber self-driving test vehicle, fitted with sensor and lidar equipment, parked on a residential street.

Photo: Uber

mobility · US · 1000+

Inside Uber's software factory

Six platform layers, an agent registry that makes every agent action traceable to a person, and the most honest published account of what AI measurement got wrong.

Uber at a glance

The company

Sector"Uber's mission is to create opportunity through movement" 11
EmployeesApproximately 34,000 globally, in over 70 countries and more than 15,000 cities (Dec 31, 2025) 12
Customers208m monthly active platform consumers, 3.867bn trips in the quarter 11
Revenue$14.191bn revenue, $58.022bn gross bookings (Q2 2026) 11

Employee count is the 10-K figure for Uber and its subsidiaries and is not broken out by function; no engineering headcount is disclosed in any source 12.

The engineering organisation

Engineering sizeNot disclosed. Sources say only "thousands of engineers" across large monorepos 4
AI tooling sinceAugust 2025 is the earliest dated first-party account of an agent in the SDLC 2
Tool policyCentral platform, multiple models and harnesses; spend tiers require manager sign-off 1
Agents in the SDLCCode review, test generation, background PRs, CI self-healing, on-call triage 1,2,4
Reported adoption7x growth in weekly active users of agentic tooling, February to August 2026 1
Published metricsCost per session, cost per 1,000 requests, comment address rate, per-language test success rates 1,2,4

The 7x adoption figure is deduplicated across tools and counts all employees, engineers and non-engineers alike, not engineers only 1.

~15%production PRs go through Minion (Oct 2026)
70%+PRs involve local or cloud agents
100M+model requests handled daily
3,600+shared skills in the marketplace
40msP99 identity token exchange latency
11%new tests written by AutoCover
Minion share of production PRs: 11%8 (May '26)→~15%15 (Oct '26, current)

People

Uday Kiran MedisettyDistinguished Engineer
Adam HudaCo-presenter of the six-layer factory talk
Ty SmithPrincipal Engineer
Shauvik Roy ChoudharyEngineering Manager, Programming Systems
Nikhil RamakrishnanAI Foundations and Developer Experience

What they set out to solve

Thousands of Uber engineers work in large shared monorepos 4, and by March 2026 the company's AI-related costs had risen sixfold since 2024 9. Adoption kept climbing: weekly active users of agentic tools grew sevenfold between February and August. The problem Uber set out to solve was what all that use cost, and Uday Kiran Medisetty, a Distinguished Engineer, broke it into six multiplied terms 1:

Total spend = users × sessions/user × turns/session × requests/turn × tokens/request × price/token

Uday Kiran Medisetty, Distinguished Engineer

The first two terms measure adoption, which Uber wants to keep growing. The middle three measure "the work the agent does on its own behalf, on top of the request an engineer actually made", and those are the terms Uber set out to cut 1.

Three concrete failures underlay the arithmetic 1. The first was schema overhead nobody had counted: with more than 100 tools installed, pre-loading their definitions "added approximately 50K-70K tokens of schema overhead to the initial prompt, which was subsequently re-sent on every context turn." The second was that ungrounded agents burn money slowly rather than failing fast: "An ungrounded agent fails slowly rather than cheaply, repeatedly sending an expanding context window to search one more location," a failure mode serious enough to motivate the context graph described below. The third was that third-party tools proved worse than internal ones: "Managing third-party software proved significantly more challenging than our internal servers. Vendors design MCP servers to expose full product capabilities because they can't anticipate specific customer usage." A workspace suite shipped 49 tools in one server, and messaging and project tracking vendors shipped 34 and 46.

A second problem is identity. The current identity model "doesn't describe agency", and "execution context (originating user, intermediate agents) is dropped across agent hops" 3. An agent calling an agent calling a service left nobody accountable at the end of the chain.

The third is toil. Anshu Chada, Engineering Director on the Dev Platform, frames the payoff as satisfaction before speed: "when we push some of the boring stuff to AI...not only does it result in much higher satisfaction from our engineers, but they're able to push our product" 9. The Minion platform is described as targeting exactly that, "the boring work that steals engineering focus", rather than novel work 8.

For code review, the stated goal was to "augment the code review process with a second AI reviewer", "not as a substitute for human insight, but as a scalable partner" 2.

Maturity level

L4 · AI-nativeof 5
TraditionalAI-supportedAI-assistedAI-nativeAI-autonomous

Assigned by testing published facts against fixed criteria, and capped by what the sources state.

How Uber's software factory works

Uber describes six connected layers 6.

Fig. 1
Engineers Managed agents Harness + DevPods pre-provisioned envs Model Gateway 100m+ requests daily MCP Gateway 1,000+ servers, policy point Skills marketplace 3,600+ skills AI Context Graph 24m nodes, 80m edges Internal + SaaS systems Every hop carries a scoped token with an actor chain back to a person [3]
The six layers as described in the World's Fair talk [6], with figures from the August 2026 efficiency post [1]. Original diagram, not a reproduction.

A Model Gateway serves more than 800 internal projects and over 100 million model requests a day 6. Model selection runs against an internal benchmark, the Uber SWE Benchmark, which tests frontier and open-weight models across task types, and the selection criterion is stated as Pareto efficiency across "cost/completed task, output quality, and model reliability" 1.

An MCP Gateway is the single entry point to more than 1,000 MCP servers, internal and third-party SaaS alike, "enabling centralized authentication and policy enforcement" 1. It is also the policy enforcement point for agent identity, performing "tool access checks and redaction of sensitive data" against an internal risk classification before proxying a call onward 3.

The gateway exists because teams were building MCP integrations independently, which left tooling fragmented, infrastructure duplicated, and tools hard to discover or operate. Its fix rests on one observation: existing APIs are the fastest way to give an agent tools, so services need not be rewritten. A registry is the control plane and a proxy is the data plane 14.

The registry fills itself. AutoCrawler, a Cadence workflow, scans Uber's IDL registry on a schedule, upserts a virtual MCP server for each Protobuf or Thrift service, has an LLM write agent-friendly tool descriptions from the IDL's method names and doc comments, and registers every tool disabled. Native servers built with MCPFx emit heartbeats, which AutoCrawler watches before calling listTools and wrapping them in a virtual proxy server, also disabled. Ownership stays with the service team. "Discovery doesn't imply exposure": the owner must review and enable each tool, and any change to a tool description becomes a config diff the owner approves, deploys, or rolls back 14.

At runtime the proxy pulls configuration from the registry on a fixed cadence, so changes need no restart. It serves each virtual server at a /<service-name>/mcp endpoint, translates JSON into Protobuf or Thrift bytes, and forwards them through Muttley, the service mesh sidecar, so no downstream service changes. Authorization runs through Uber's Access Control System with charter policies for humans, services, and agents, set per server with tool-level overrides, and PII is redacted from responses by default. For third-party servers such as Jira and Google, the gateway relays the caller's user token and applies the same authorization, rate limiting, and redaction, and the vendor side exchanges it for an external token 14.

Scale produced a second set of problems. The gateway hosts more than 800 MCP servers and over 5,000 tools 14, where the August efficiency post counts more than 1,000 servers 1; neither source says what it counts as a server. MCP has no cross-server search, and wiring in hundreds of servers would fill the model's context. Omni MCP answered with one proxy exposing four tools, discover_server, discover_tools, get_tool_schema, and invoke_tool, so an agent loads only what it needs under the same access control. Response Projection injects a field into a tool's request schema so the model lists the nested paths it wants, and the gateway trims the response to them. Code Mode, delivered through the aifx CLI as mcp list, mcp search, and mcp call, lets a coding agent write output to files and grep them, and is now the default way coding agents use MCP tools 14.

DevPods give agents pre-provisioned environments rather than a cold checkout 6, the layer Nikhil Ramakrishnan describes as years of prior investment in remote environments, CI, and developer tooling finally paying off for something other than humans 8.

A skills marketplace holds more than 3,600 skills running over 30,000 executions a day 1. At the World's Fair talk the same marketplace was described as 2,500 skills at 20,000+ daily executions 6, so growth is roughly visible even though neither source defines what one skill execution counts as.

The AI Context Graph unifies 24 million nodes and 80 million edges drawn from more than 30 internal systems 1. It exists to stop the slow-failure mode: grounded, an agent answered in 38 seconds where the ungrounded run took 20 minutes 9 seconds and got it wrong 1.

Cortana, a company-wide assistant, is available in Slack, CLI, and web, and runs more than 20,000 sessions a day 6.

Identity binds the layers together. An Agent Registry links every AI agent to its Kubernetes workload, agents fetch cryptographically signed SPIRE workload credentials, and a Security Token Service mints "short-lived, scoped tokens for every hop", each carrying an actor chain and an audience claim valid only for that destination. P99 latency on that token exchange stays under 40 milliseconds, with most values below 10 3. The practical effect is that a multi-hop agent-to-agent delegation still resolves to a responsible human in the logs.

What runs without a human starting it

This is the sentence that places Uber, and it is first-party 1:

As we progress on that vision, a growing share of sessions aren't initiated by humans, but by automated managed agents handling code review, self-healing CI failures, completing E2E PRs with visual validation, triaging on-call alerts, debugging incoming bugs, and handling a variety of code maintenance tasks with human reviews/escalations.

Uday Kiran Medisetty, Distinguished Engineer

Three of those are separately documented.

Review. uReview covers roughly 90% of about 65,000 diffs a week across six monorepos, in Go, Java, Android, iOS, TypeScript, and Python 2. Specialised assistants generate comments, a secondary prompt scores each one's confidence, a semantic similarity filter merges overlaps, and a category classifier suppresses categories with historically low value 2. Developers rate each comment "Useful" or "Not Useful", and that feedback tunes the system 2. Median latency per commit is four minutes 2. Whether it can block a merge is not stated 2.

Tests. AutoCover generates about 11% of all new tests reviewed and added to the codebase 4. It is a LangGraph pipeline with sub-graphs for preparation, generation, execution, and validation and repair, offered in three modes: CLI for scripting, Headless for sharded backfills that open merge requests on their own, and IDE for human-in-the-loop work 4. Success rates are published per language and are not flattering by design: about 20% for Java, 40% for Go, and 80% for Python 4.

Background PRs. Minion is an internal background agent platform with monorepo access and optimized defaults 9, aimed at "the boring work that steals engineering focus" 8. Its share of merged pull requests is one of two conflicting figures for agent involvement in PRs, examined below 8.

Operating the software factory: teams, roles, and skills

Spend governance is where the operating model is most explicit, and it works through visibility and friction rather than hard limits 1. A live cost counter sits in the harness status line, tracking spend per harness and across all harnesses for each user, and Slack notifications fire at 50, 80, and 100% of expected spend, a design meant "so engineers have time to plan" rather than cutting them off outright. One shared tier covers all interactive harnesses, deliberately not split into per-tool budgets, with separate tiers reserved for managed agents, and moving to a higher tier needs manager sign-off, though the approval flow itself is described as quick.

Defaults do the rest of the work: automatic compaction triggers at 400,000 tokens even on million-token context windows, and reasoning effort defaults to Medium. A session analysis dashboard classifies runtime behaviour into 16 anti-pattern categories 1.

The agent surface reaches past engineering. uSpec connects an agent in Cursor to Figma over MCP to produce anatomy, API, accessibility, and token documentation for the Base design system, generating full screen-reader specifications in under two minutes and serving thousands of engineers across seven implementation stacks. The whole pipeline runs locally so proprietary design data never leaves the network 10.

Implementation journey

The public record runs roughly in this order.

  1. Before agents
    Ramakrishnan's framing is that remote environments, CI, and developer tooling were built first, and background agents became possible because that groundwork already existed 8.
  2. August 2025
    uReview publishes, the earliest dated account of an agent operating continuously in the SDLC 2.
  3. March 2026
    An external inside look names Minion, Shepherd, uReview, Code Inbox, AutoCover, the MCP Gateway, Uber Agent Builder, AIFX CLI, and Agent Studio, and reports 84% of developers using agentic coding tools, 92% using agents monthly, and 65-72% of code in IDE-based tools AI-generated. Claude Code usage nearly doubles from 32% in December to 63% in February 9.
  4. April 2026
    AutoCover appears at ICSE-SEIP with a full threats-to-validity section 4, and the JUnit migration post lands the same month 5.
  5. May 2026
    The Agent Registry and per-hop token architecture are published 3, and the Minion share of merged PRs is presented as 11% 8.
  6. 2026, at the AI Engineer World's Fair
    The six-layer factory is presented publicly 6.
  7. August 2026
    The efficiency post reports weekly active users up 7x and weekly agentic requests up 9.4x from February to August 1.
  8. October 2026
    The MCP Gateway's design is published, with 800+ servers, 5,000+ tools, and Code Mode as the default for coding agents 14.

Measuring the software factory

Uber is the only company in this corpus to publish a peer-reviewed threats-to-validity section about its own tooling. AutoCover's authors state plainly that "coverage ≠ effectiveness", that code coverage is an imperfect proxy mitigated with scenario coverage and mutation testing, and that a target-selection bias is possible because "developers may have targeted particularly hard-to-test legacy code." They also state a deliberate trade: they favour external and ecological validity over internal validity, because tight experimental control and real deployment are at odds 4.

The measurement story on productivity is more interesting for what was thrown away. Abhishek Tibrewal describes a difference-in-differences design built around an explicit counterfactual, "if there was no Copilot, what would have the same developer shipped?" It produced a 19% lift among power users, an 8% cohort, with gains distributed unevenly by seniority and largest for junior-to-mid engineers. The speakers are careful that correlation among power users needed causal validation, since productive engineers may simply adopt tools first 7.

Then they dropped a metric on purpose. "Developer years saved" was abandoned for three stated reasons: it created anxiety about replaceability despite leadership's hiring intent, its baseline needed constant recalibration as tools changed, and business leaders wanted revenue and feature impact rather than a time-savings abstraction 7.

Cost is measured tightly. Cost per 1,000 requests fell almost 34% from its peak between February and July with the model held constant, and cost per session fell 52% from its June peak to August. Restructuring tool access into code mode cut tokens 55-71% on typical queries and close to 100% on a wide-table SQL query 1.

Three published figures carry caveats worth stating alongside them. uReview's "~1,500 hours weekly, about 39 developer-years annually" was published a year before Uber abandoned hours-saved framing internally, and its calculation's method is never disclosed 2,7. "Lines of code per engineer doubled year over year" rests on a proxy widely criticised elsewhere, and no source addresses whether agent-generated boilerplate inflates it 6. The third figure, the agent share of pull requests, is the entry's sharpest definitional problem, treated in full below.

The 11% and the 70% are not the same measurement

Both figures are first-party, both are recent, and they differ by a factor of six. They also count different things.

  • 11% of PRs opened by agents, March 2026, counting pull requests an agent opened 9.
  • 11% of merged PRs, May 2026, counting merged pull requests Minion is behind 8.
  • More than 70% of PRs, at the 2026 World's Fair talk, counting pull requests that "involve local or cloud agents" 6.
  • More than 70% attributed to agents, August 2026, stated as a share of all PRs with no definition given 1.

The reconciliation the sources support is that the low figure counts PRs a background agent authored end to end, and the high figure counts any PR an agent touched, including one an engineer drove from their own IDE. No source states that reconciliation, and no source defines what counts as agent involvement once a human edits the output. Present both with their dates and denominators, or neither.

Lessons learned

Grounding is a cost control, not just a quality one. An agent without shared context does not fail cheaply; it fails slowly, burning tokens on an ever-expanding search that the context graph exists specifically to short-circuit 1.

Vendor MCP servers are a scaling problem. Internal servers were easier to manage than third-party ones, because vendors design their servers to expose full product surfaces they cannot scope to one customer's usage 1.

Sometimes the answer is not AI. The largest migration in the record went deterministic. On migrating 75,000 test classes and 1.25 million lines from JUnit 4 to JUnit 5 in four months via 5,000+ automated diffs, the team states that "AI usage was limited to debugging test and build failures. Given our codebase's scale and custom testing patterns, a deterministic approach proved more practical than an AI-driven migration" 5. Shepherd orchestrated OpenRewrite transformations across thousands of test targets and validated each through CI 5.

The reviewer publishes its own limits. uReview's own post lists where it is weak: it cannot see past PRs, feature flags, schemas, or documentation, it is "better at catching bugs than assessing system design", and it struggles with readability comments engineers routinely reject 2. 75% of its comments are rated useful and 65% are addressed in the same changeset 2.

A measurement can be right and still worth deleting. The developer-years metric was dropped for its effect on engineers and its instability, not because it was wrong 7.

What's next for Uber's software factory

Uber states a direction rather than a roadmap: the shift toward agent-initiated sessions described above continues, with humans moving from initiators of work to reviewers and escalation points. On generalisability they are explicit that their numbers are theirs: "specific cost reductions we measure are unique to our environment and your mileage may vary depending on your codebase, team size, and agent workflows", with only the benchmarking methodology offered as portable 1.

The AutoCover authors name their own next steps from user feedback: tighter coverage-tool integration able to target only new or changed lines, and the ability to interject mid-generation to steer an agent that is close but not correct 4.

Patterns in this factory

Gaps in the record (7)
  • No definition is published for what counts as agent-authored when a human edits agent output, which is what the 70% figure turns on 1,6.
  • Engineering headcount is never disclosed, so no adoption percentage can be converted into people 4,12.
  • No source states whether an agent-opened PR can merge without a human approving it.
  • The uReview "39 developer-years annually" calculation is stated but its methodology is not published 2.
  • No churn data anywhere: no count of engineers or teams that adopted agents and stopped.
  • No agent-caused incident or rollback is described in any source, in a corpus where Uber otherwise publishes failure rates.
  • The context graph is counted two different ways, 24m nodes and 80m edges 1 and forty million entries 6, and neither source defines its unit.
Sources (15)
1
Running a Software Factory Efficiently at Uber Scale
Uday Kiran Medisetty · Distinguished Engineer · 2026-08-27
2
uReview: Scalable, Trustworthy GenAI for Code Review at Uber
Shauvik Roy Choudhary, Sonal Mahajan, Joseph Wang, Akshay Utture, Will Bond · Engineering Manager; Staff Engineer; Principal SWE; former SWE; Staff Engineer · 2025-08-12
3
Solving the Identity Crisis for AI Agents
Matt Mathew, Prasad Borole, Meng Huang, Sergey Burykin, Gaurav Goel, Bayard Walsh · Senior Staff Engineer; Staff Engineer; Engineering Manager; and colleagues · 2026-05-21
4
Automated Software Test Generation at Industry Scale Using a Multi-Agent Architecture and Workflow Integration
Matas Rastenis, Ben Chou, Shauvik Roy Choudhary, René Just · Uber Technologies; Uber; Uber; University of Washington (work done at Uber) · 2026-04
5
How Uber Executed A JUnit Migration at Massive Scale
Anshuman Mishra, Kaushik Vejju · Staff Software Engineer; Software Engineer · 2026-04-07
6
Agentic SDLC at Uber: Building Blocks for Uber's Software Factory
Uday Kiran Medisetty, Adam Huda · Speakers at AI Engineer World's Fair 2026 (no titles on the page)
7
Uber's journey of measuring AI impact on developer productivity
Ty Smith, Abhishek Tibrewal · Uber engineers (no titles on the page)
8
Uber Minion: 11% Agent-Generated PRs
Nikhil Ramakrishnan · AI Foundations and Developer Experience · 2026-05-07
9
How Uber uses AI for development: inside look
Gergely Orosz · Author, The Pragmatic Engineer · 2026-03-10
10
How Uber Built an Agentic System to Automate Design Specs in Minutes
Ian Guisard · Leads design of Uber's Base design system · 2026-03-11
11
Uber Announces Results for Second Quarter 2026
Uber Technologies, Inc. · corporate disclosure · 2026-08-05
12
Uber Technologies, Inc. Form 10-K, fiscal year 2025
Uber Technologies, Inc. · SEC filing · 2026-02
13
How Uber built an AI software factory
Port · vendor newsletter · 2026-08-24
14
Designing MCP Gateway: Uber's MCP Management Platform
Alok Srivastava, Deepanshu Mehndiratta, Gaurav Gill · Principal Engineer; Senior Staff Engineer; Senior Software Engineer · 2026-10-01
15
Building an AI-enabled Software Factory at Uber
Uday Kiran Medisetty, interviewed by Gergely Orosz · Distinguished Engineer · 2026-10-14