@dhh: works directly on (free, open source) project, puts in $1M of his own money to support it & gets 7 others to put in $1M each to support maintaining project
@syskage: "project (free, open source) is compromised"
if you don't like it, just take the code (free, open source) and go do your own non "oligarch" version, whatever that is
"We'll just build it ourselves" is the most expensive sentence I hear from prospects. Then, teams come up against the Context Chasm.
The pattern is consistent. Teams burn months, and they lose their best engineers to the work. Most never ship the build at all.
Context infrastructure works the way version control works. You adopt it. You don't build it.
Adam's piece on why: https://t.co/ITwoJ6FIhA
"We'll just build it ourselves" is the most expensive sentence I hear from prospects. Then, teams come up against the Context Chasm.
The pattern is consistent. Teams burn months, and they lose their best engineers to the work. Most never ship the build at all.
Context infrastructure works the way version control works. You adopt it. You don't build it.
Adam's piece on why: https://t.co/ITwoJ6FIhA
Matt Nassr at Optiver described a pattern we keep hearing from engineering leaders.
His researchers and traders got dramatically more productive once AI entered the workflow. They consumed pipelines faster, asked sharper questions, ran more experiments. Nobody planned for who would answer all those questions.
The questions were reasonable. Does a feed exist for this instrument? What fields does this market dataset expose? Can this pipeline support intraday resolution? Context questions, not research problems. The kind a well-indexed system should answer on its own.
The system couldn't. So the questions routed to the engineers who built it. Senior people who should have been designing next-gen infrastructure were burning real chunks of their week on lookups.
The AI agents were supposed to handle this. They didn't have reliable context, so they punted humans back into the loop.
Context infrastructure isn't a dev tools problem. It's an org design problem. When your best engineers are the indexing layer for your codebase, the company doesn't scale. It just gets more expensive.
Once Driver gave Optiver's agents a deterministic view of the codebase, the questions stopped routing through people.
https://t.co/HuryjCdV9r
@nitmusai That's well said. Our product keeps context up to date with every push to remote and on every active branch in all repos. When AI coding agents ask for task-specific context from our MCP server, we assemble dynamic context from that up to date understanding of customer codebases.
A pattern we kept seeing before we built Driver, that I think most engineering leaders will recognize:
A team takes the reasonable approach to giving their AI coding agents context. Export the codebase docs to markdown, check them into the repos, point agents at the right directories.
At @OptiverGlobal, the team was shipping 120+ commits a day. By the time a markdown file describing a pipeline was reviewed and merged, the content was already stale. The docs weren't wrong because anyone was careless. They were wrong because the code moved faster than documentation could keep up.
The bigger problem wasn't the staleness. It was the hidden tax. Engineers weren't just writing docs, but rather they were maintaining them, explaining to agents why the docs disagreed with reality, then re-prompting when the agent got confused anyway.
Documentation stopped being an asset. It became a liability.
The lesson: if humans have to keep the context fresh by hand, the context will always lag the work.
Automating coding agents is the easy part. Automating the context they need is the harder one. That's what we've been heads-down on.
If you're using an AI coding agent like Claude Code, Cursor, Codex, etc. with microservices spread out across repos, you've got a challenging context engineering problem. Read this:
Highly distributed, multi-codebase systems have structural properties that current AI coding tools can't navigate. What we've found is that the multi-codebase problem is a context problem, and context problems are solvable if you treat them as compilation rather than search.
๐ง๐ต๐ฒ ๐ฃ๐ฟ๐ผ๐ฏ๐น๐ฒ๐บ
We've been working with engineering teams that have many codebases totaling from 3 million to 40 million+ lines of code. A number of them run microservices architectures with hundreds of repos. A pattern we keep seeing: AI coding agents fall down significantly when a task crosses a service boundary. And when you're developing against a large microservices architecture, this is constant.
Three challenges drive this.
๐๐ผ-๐น๐ผ๐ฐ๐ฎ๐น๐ถ๐๐. In a microservices architecture, no developer has every relevant repo cloned and open, and often doesn't start a task knowing which repos are relevant. An agent inherits this limitation. It can only reason about what it can see, and in a distributed architecture, most of the relevant context is somewhere else.
๐๐บ๐ฝ๐น๐ถ๐ฐ๐ถ๐ ๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ฐ๐ถ๐ฒ๐. In a monolith, dependencies are explicit via imports, function calls, class hierarchies, etc. and an agent can trace them. In a microservices architecture, the connection is often a URL string in a config file, or two services reading from the same database table without either one knowing about the other. These relationships are real and load-bearing, but invisible to tools that reason at the code level.
๐ก๐ผ๐ป๐น๐ถ๐ป๐ฒ๐ฎ๐ฟ ๐ฐ๐ผ๐บ๐ฝ๐น๐ฒ๐ ๐ถ๐๐. A codebase with N symbols has N-squared potential relationships. Teams try to solve this by introducing context about the service layer into their repos, but it doesn't scale: documentation rapidly goes stale and RAG-based approaches chunk code into text fragments, destroying the structural relationships that matter most in distributed systems. Furthermore, identifying the structural connectedness through interfaces of isolated services requires its own derivative analysis.
๐ ๐๐ผ๐ฑ๐ฒ๐ฏ๐ฎ๐๐ฒ ๐๐ผ๐บ๐ฝ๐ถ๐น๐ฒ๐ฟ ๐ถ๐ ๐๐ฟ๐ถ๐๐ถ๐ฐ๐ฎ๐น
Our approach at Driver starts with what Adam and I call our transpiler: a compiler-like architecture we built that begins by parsing code via static analysis and emits structured context instead of executable code. A core feature here is exhaustiveness. Symbol tables, dependency graphs, and syntax trees are all computed deterministically for every file and symbol in each codebase. This is the foundation, and it matters. It means every codebase we process is understood exhaustively, not sampled.
For microservice architectures, and other intensively multi-codebase systems, we have observed that this exhaustive understanding of each individual codebase is absolutely necessary but not sufficient.
The reason is that the connections between services don't live at the level of syntax analysis or even analysis of any kind of any one codebase. In a monolith, you can follow imports and function calls to trace a dependency. In a microservices architecture, the dependency might be an HTTP endpoint defined in one service and called via a string constant in another (a more difficult version of the "stringly-typed" problem). It might be a shared database table, a message queue topic, or an event schema that two services conform to independently. These relationships are invisible to any tool reasoning within a single repo, no matter how thoroughly it parses the code.
To capture these, we needed to go further: later stages of the transpiler that synthesize across the parsed structure of individual codebases, and a runtime layer that can reason across all of them simultaneously.
๐ ๐จ๐ป๐ถ๐ณ๐ถ๐ฒ๐ฑ ๐๐ฝ๐ฝ๐ฟ๐ผ๐ฎ๐ฐ๐ต ๐๐ต๐ฎ๐ ๐จ๐ป๐น๐ผ๐ฐ๐ธ๐ ๐ ๐๐น๐๐ถ-๐๐ผ๐ฑ๐ฒ๐ฏ๐ฎ๐๐ฒ
Two developments have unlocked multi-codebase context.
๐๐ถ๐ด๐ต๐ฒ๐ฟ-๐น๐ฒ๐๐ฒ๐น ๐๐๐ป๐๐ต๐ฒ๐๐ถ๐. Beyond symbol-level static analysis, later stages of our transpiler produce intermediate representations (IRs) at many different levels of abstraction. These culminate with what we call Deep Context Documents: atomic, codebase-wide documents that describe architecture, major components, how they interact, and (crucially) where to go for more detail. These are synthesized by exhaustive review of all the structured content from earlier transpiler stages. They capture the conceptual and architectural relationships that exist above the code level, including cross-cutting concerns, integration patterns, and service boundaries. For an agent, this solves the "don't know what you don't know" circular problem that is so challenging without exhaustive context.
๐ ๐๐น๐๐ถ-๐ฐ๐ผ๐ฑ๐ฒ๐ฏ๐ฎ๐๐ฒ ๐ฟ๐๐ป๐๐ถ๐บ๐ฒ ๐ฝ๐ฟ๐ถ๐บ๐ถ๐๐ถ๐๐ฒ๐. We built a runtime layer where an agent connects to Driver via a single MCP integration and can query context across every codebase in an organization. Via the primitive tools, all pre-computed artifacts are queryable per-codebase: architecture overviews, file-level documentation, code maps, changelogs, source files. We also provide a single deep context sub-agent tool. Under the hood, this runs a dedicated context agent with access to all pre-computed artifacts. When a task spans multiple services, the agent queries context from different codebases exactly the way it queries within one. It synthesizes everything into a single, high-signal response tailored to the task at hand and returned to the caller.
The combination is what matters. The transpiler's static analysis gives you exhaustive per-codebase understanding. The higher-level synthesis captures cross-cutting relationships that don't live at the code level. The runtime makes all of it queryable across every codebase simultaneously, so the agent sees the full system, not just whatever repo it happens to be sitting in.
No co-locality requirement, manual assembly, or re-deriving what was already known.
๐ช๐ต๐ฎ๐ ๐ช๐ฒ'๐๐ฒ ๐ฆ๐ฒ๐ฒ๐ป
A customer had a bug where bookings were completing despite no payment records. The investigation spanned 4-5 services across order orchestration, admin, and payments. This bug had been investigated multiple times before and missed. One engineer used Driver to trace the issue iteratively: broad exploration first, then narrowing hypotheses, then precise constraints. Driver pinpointed the exact method where validation logic silently passed orders with zero payment records. Total hands-on time: about 30 minutes. As the engineer described it, instead of needing three people with intensive knowledge of different services, one person got 80% of the way there, then brought in specialists to confirm.
Another team with 200+ microservices built a workflow on top of Driver that takes a single Jira ticket, identifies which repos are impacted, gathers context across all of them in parallel, and generates per-service subtasks with specific file paths, class names, and implementation patterns. The constraint before, as one of their engineers put it: "you've got to know which repos." With all repos accessible through a single integration, that constraint disappeared.
Beyond debugging and ticket analysis, teams report that Driver changes the baseline for development in multi-codebase environments. Concerns that historically slowed work (unknown blast radius, missing context from adjacent services) are addressed by the same cross-codebase context layer. One large microservices team reported 2x average PR velocity team-wide after introducing Driver.
๐ง๐ต๐ฒ ๐๐ฟ๐ผ๐ฎ๐ฑ๐ฒ๐ฟ ๐ฃ๐ผ๐ถ๐ป๐
A fundamental tradeoff of microservices has always been autonomy in exchange for complexity. Small, independent services are easy to deploy individually but hard to reason about collectively. AI coding tools struggle with this in the same ways developers do. This is a genuinely complex problem and the fact that tools today (for agents and humans) are often single- or few-codebase centric exacerbates this issue. This tension has significantly held us all back.
What we've found is that this is a solvable problem if you approach it at the right level. Per-codebase exhaustive context compilation is the foundation, but the microservices unlock is at a higher layer: synthesized understanding that captures cross-service relationships, and a runtime that makes it all accessible through one integration. The agent sees the whole system and understands the connections relevant to a particular task.
The more codebases you have, the more immediately this compounds. If your team is running a distributed architecture and your agents are struggling with cross-service work, the issue is probably not the agent. It's what the agent can see.
Yes, weโre seeing this at @driver_ai_ with a wide variety of experiences at our customers adopting AI coding agents. You want to be careful with context engineering *and* harness engineering. Driver provides dynamic context engineering and weโre soon going to release the results our own internal harness engineering work.
Obviously, models are a big deal, but coding harnesses play a huge role in making these models look good.
I suspect that you can get the best frontier model out there, put it in a shitty harness, and the experience will be very disappointing.
The reverse is also true: put a mediocre model in a strong harness, and it might match the experience that you get from the best agentic coding tools out there.
So, yes, Opus 4.6 and GPT-5.3-Codex are amazing models, but the Claude Code and Codex harnesses do a lot of the lifting to make them work the way they are.
Of course, these models might also have some specific training on their harnesses. This is also an advantage.
Every company will have a context layer.
Today, we're launching Prefect Horizon to make that possible.
The context layer is where AI agents interface with your business. It's where teams expose their proprietary data, tools, and workflows to autonomous systems. Itโs where you define what agents can see and do, and where you curate and distribute the context that makes automation useful and safe.
We know what this requires because we created FastMCP, the standard framework for working with the Model Context Protocol. We've watched it grow to a million downloads a day.
But we've also seen the protocol's limits. MCP describes how to *build* a server, not how to govern it at scale. It doesn't tell you how to deploy it, secure it, or share it with 5,000 colleagues.
We built Prefect Horizon to turn MCP from a protocol into a platform:
๐ Horizon Deploy: Managed MCP hosting that gets you from PR to governed endpoint in 60 seconds.
๐ Horizon Registry: A central catalog for all your MCP servers, including first-party, third-party, and our new remix servers that compose multiple sources together.
๐ Horizon Gateway: The control plane enterprises need: role-based access control down to the tool level, audit logs, and usage visibility.
๐ฌ Horizon Agents: The last mile. Give business users an agentic interface to your company without ever knowing what "MCP" is.
This is automation for the context era.
Welcome to Horizon.
Every company will have a context layer.
Today, we're launching Prefect Horizon to make that possible.
The context layer is where AI agents interface with your business. It's where teams expose their proprietary data, tools, and workflows to autonomous systems. Itโs where you define what agents can see and do, and where you curate and distribute the context that makes automation useful and safe.
We know what this requires because we created FastMCP, the standard framework for working with the Model Context Protocol. We've watched it grow to a million downloads a day.
But we've also seen the protocol's limits. MCP describes how to *build* a server, not how to govern it at scale. It doesn't tell you how to deploy it, secure it, or share it with 5,000 colleagues.
We built Prefect Horizon to turn MCP from a protocol into a platform:
๐ Horizon Deploy: Managed MCP hosting that gets you from PR to governed endpoint in 60 seconds.
๐ Horizon Registry: A central catalog for all your MCP servers, including first-party, third-party, and our new remix servers that compose multiple sources together.
๐ Horizon Gateway: The control plane enterprises need: role-based access control down to the tool level, audit logs, and usage visibility.
๐ฌ Horizon Agents: The last mile. Give business users an agentic interface to your company without ever knowing what "MCP" is.
This is automation for the context era.
Welcome to Horizon.
@SahilBloom โThe Supreme Personality of Godhead said: The giving up of activities that are based on material desire is what great learned men call the renounced order of life [sannyฤsa]. And giving up the results of all activities is what the wise call renunciation [tyฤga].โ