← All talks

AI Engineer NYC 2026 Main stage · 14 min

Great Agents Start with Great Infrastructure

Akshat BubnaModal

A spreadsheet with an agent behind every cell needs fast compute, shared storage, and deliberate isolation. Akshat Bubna explains how those requirements change the sandbox beneath an agent.

What happens when every cell runs an agent?

5:08:48 ↗

A financial analyst wants to run a complex analysis across every company in a portfolio. The familiar version takes days: collect data, connect the sources, and run the calculations. The agent version looks like a spreadsheet in which every cell can do its own work. Hebbia built that interface. Akshat Bubna follows the work underneath each cell to show what its infrastructure must support.

Each cell needs somewhere to run. A sandbox supplies an isolated environment for untrusted code, but Bubna’s example does not put everything into one container. The agent harness—the loop that calls the model, chooses tools, and processes results—runs separately from the container executing those tools. Both sit inside the sandbox. That separation lets the system give execution a different set of permissions from the harness directing it.

The other requirement is collaboration. Agents in the same spreadsheet row might mount a shared volume; the harness and its tool-execution sidecar may also need common files. The system must isolate execution while deliberately sharing the files agents need to work together.

The architecture makes that separation explicit. Model calls enter through the harness; tool calls and results pass between containers; documents and generated artifacts live on the shared volume. With thousands of cells, all of these environments must start quickly and disappear when the work ends.

A workspace that can wait, collaborate, and grow

5:12:00 ↗

Modal provides the compute, storage, and scheduling primitives beneath this arrangement. Bubna uses several customer workloads to explain why an agent workspace needs more than a shell.

For a coding agent such as Ramp’s Inspect, the workspace includes a repository, dependencies, and development services. An accounting workflow has a different rhythm: documents arrive, an agent works, and then it waits for an accountant. That response might take days. Keeping the state should not require keeping the same amount of compute busy throughout the wait.

Scientific workloads add another dimension. An agent may preprocess data on CPUs, then need GPUs for a model or experiment. Its environment has to change with the task. Collaboration adds shared files across agents and people, while memory updates and background “dreaming” turn the filesystem into part of the agent’s continuing state.

This makes filesystem behavior an application concern. Agents need predictable consistency and fast access to the same artifacts. A storage system that works well for one isolated process can behave very differently when several agents read and update a shared workspace.

Give agents controls and the ability to diagnose failures

5:15:39 ↗

An agent can make a damaging mistake without recognizing it. Bubna therefore treats network control and credential handling as basic infrastructure: who can reach the agent, which destinations it can contact, and how service credentials can be injected without becoming visible to code that might leak them.

A domain allowlist is sometimes too broad. Allowing GitHub does not distinguish among the operations an agent could perform there. A sidecar proxy can apply narrower rules to particular paths or operations. The harness still performs useful work, but the network path enforces decisions outside the model’s discretion.

Observability must be available to the agent as well as its operator. If a training job fails, the agent needs its logs to decide what to change on the next attempt. During a run, GPU utilization can reveal a stall; budget information can constrain further work. Otherwise the agent can launch compute without being able to understand the result.

From identical containers to changing environments

5:17:55 ↗

Why not have a coding agent build this platform? Bubna points to reliability under rare failures, continuing security work, and scale. Generating a first implementation does not settle how a system behaves when many environments fail, start, or contend for capacity together.

He describes a personal-assistant workload that calls for roughly 10,000 sandbox creations per second, almost a million concurrent sandboxes, lifetimes of only a few minutes, and interactivity in under a second. That combination of scale and short lifetimes makes startup time a central constraint for this workload. Modal’s million-sandbox engineering write-up supplies further detail on its scaling work. Bubna also notes that CPU capacity must be assembled across providers rather than assumed to exist in one cloud.

The direction he sees is a separation between the agent’s “brains,” its harness, and its “hands,” the environments where work executes. A harness can create an environment for the present task, snapshot it, preserve it as an artifact, and later use a different environment.

Bubna extends the familiar pets-to-cattle analogy to an ocean of microbes: many changing environments, interacting and evolving. A harness may need one environment for a data-processing step and another for training, keeping useful snapshots along the way. Reliable compute, storage, and networking let it make those changes without losing the work.

Further reading

Modal Sandboxes ↗The sandbox primitive discussed in the talk; current usage documentation.Scaling to one million concurrent sandboxes ↗Modal’s engineering account of the scaling work Bubna references.

Full transcript

Timestamps follow the original livestream. Select a time to watch that moment. Transcripts are machine-generated with reviewed name and terminology corrections; occasional recognition errors may remain.

5:08:48

Great! Sorry, I'm good. Hey everyone, I'm Akshat, CTO of Modal, and I'm going to talk

5:08:56

about really need from their infrastructure.

5:09:01

I'm told this audience is very finance adjacent, so I thought I'd talk about what

5:09:10

if every cell in a spreadsheet could be backed by an agent?

5:09:16

And imagine you're a financial analyst at a fund.

5:09:20

you want to run a complex analysis on every company in your portfolio.

5:09:28

Normally in the past, this would take days.

5:09:31

You'd have to connect every portfolio company,

5:09:34

look at their data sources, run some Python for each of them.

5:09:39

now obviously with agents, this should be much easier.

5:09:43

Well, actually, one of our customers, Hebbia,

5:09:46

built something that's exactly this.

5:09:48

you can go in right now in their product,

5:09:51

you have a spreadsheet,

5:09:54

and you can run a query

5:09:57

where literally every cell is

5:10:00

backed by a different agent.

5:10:03

And I wanted to talk about what does building this really look like.

5:10:10

Well, first, every agent is backed by a modal sandbox.

5:10:17

Sandbox is a secure environment for running untrusted code.

5:10:25

It used to be that every sandbox was one-to-one with a container or micro VM.

5:10:32

That's actually no longer the case.

5:10:34

Today actually, modal has this feature where you can run multiple containers or micro VMs

5:10:41

inside a sandbox.

5:10:42

You actually need to do that for doing something like this, where in this architecture you

5:10:49

run the harness.

5:10:51

The harness is the agent loop that does things like running the, calling the model API for

5:10:57

inference, running the tool calls, and then looping over it.

5:11:02

want to separate that from the place where the tool calls actually run for security and

5:11:08

isolation and a bunch of other things.

5:11:10

So you have the sandbox that's running multiple containers, including a sidecar.

5:11:16

You also want shared storage, because you want your agents to be able to talk to each

5:11:21

other.

5:11:21

And it's up to you how you stripe it.

5:11:24

Like maybe you have every row gets the same volume, and agents in that row in the spreadsheet

5:11:30

can collaborate.

5:11:32

And you also want to share storage between your main container and the sidecar for some

5:11:37

cases.

5:11:38

And finally, you need all of this to spin up really, really fast, because your spreadsheet

5:11:43

can have lots of cells.

5:11:45

If someone wants to query, you want to launch thousands of agents, and then you want to

5:11:48

spin them back down when it's over.

5:11:52

So before I talk more about that, I just wanted to take a quick aside to talk about what is

5:11:58

modal.

5:11:59

Modal is a platform of primitives that is built for AI applications.

5:12:05

We have built this platform from scratch, built our own file systems, scheduling and

5:12:12

the runtime to give you great performance and devx for use cases like inference, including

5:12:18

LLM inference, sandboxes, training and functions, running a lot of batch processing and what

5:12:26

Today in particular I'm going to talk about sandboxes, what this primitive is and how

5:12:30

it's evolving.

5:12:31

So if you want to build something like this, or even further, and we'll talk more about

5:12:36

what that means, what are the primitives you need for that?

5:12:40

The first thing is, if you're building an agent, you need a workspace.

5:12:44

And I have some examples from some of our current customers.

5:12:48

You might have heard of Ramp Inspect.

5:12:50

Ramp Inspect is Ramp's internal coding agent that I think at this point pushes almost every

5:12:57

single PR at Ramp.

5:12:59

If you're building a coding agent, you need your repo, your GitHub repo, your dependencies,

5:13:07

you need your dev services, all in the same workspace for each agent.

5:13:14

Another example is basis.

5:13:18

it looks like is your documents might arrive, your agent is then triggered to work

5:13:24

on them, but then it's waiting for a response from the accountant.

5:13:28

You don't know how long this could take.

5:13:30

It could take many days.

5:13:32

When you want to persist the state over time, your usage is going to change.

5:13:38

In the second chart, you can see usage for each sandbox.

5:13:43

There's definitely some consistent trends, but it's all over the place.

5:13:47

If you were provisioning this, it doesn't make sense.

5:13:51

and then reliably get them when the sandbox needs them

5:13:54

and only pay for them for that duration.

5:13:58

The other interesting emerging thing is

5:14:01

agents need a lot more cloud science

5:14:04

where pre-processed some data on CPUs

5:14:08

or spin-up GPUs for running pre-processed some data on CPUs

5:14:13

or spin-up GPUs for running a scientific model,

5:14:17

it will offload that to a modal sandbox.

5:14:19

is a scientific model,

5:14:22

it will offload that to a modal sandbox.

5:14:24

And we're seeing this show up in RSI

5:14:26

about what happens when you give an agent

5:14:29

sandboxes to Hillclient.

5:14:34

The next emerging thing is

5:14:36

agents are collaborating a lot more,

5:14:39

and that means that you share a file system

5:14:43

with your sub-agent,

5:14:45

you share file system.

5:14:47

The next emerging thing is agents are collaborating a lot more, and that means that you share

5:14:56

a file and files with your human where you're all collaborating with the same thing.

5:15:03

This means file systems that are fast, have consistency, and devx you can reason about.

5:15:10

Something we're working on with modal volumes.

5:15:13

The related thing is we're seeing a lot more self-improvement.

5:15:17

will save and update memory, they'll run background tasks, which is now called

5:15:23

dreaming, to update this memory over time.

5:15:26

Actually this also just looks like files in a file system.

5:15:31

But again, you want really great performance from this file system.

5:15:38

and the scary thing about agents is they can mess up and they don't really know when they might

5:15:48

leak your sensitive data to a german forum or something so you need to have a lot of control

5:15:54

over what they can and cannot do and you need things like controlling what ips can even talk

5:16:01

to the agent, how do you authenticate it, what domains can it talk to, and also if you're

5:16:08

using credentials for talking to services, basically you want to inject them in a way

5:16:14

that the agent cannot actually see them and then exfiltrate them somewhere later.

5:16:20

And the interesting evolution of this is we've realized that domain-related allow lists are

5:16:27

actually not enough.

5:16:28

a lot of our users actually want very specific control

5:16:32

over even like what paths can I talk to

5:16:36

on let's say Datadog or GitHub.

5:16:38

Like maybe I want to reason about specific operations

5:16:42

that the agent is doing.

5:16:43

And going back to sidecars,

5:16:45

we've seen this emerging as a pattern

5:16:47

where users actually write their own lightweight proxy

5:16:51

that has custom rules about what exactly you can do.

5:16:53

And Ramp's another example of a company

5:16:57

that's been using this successfully.

5:17:02

And the final underrated thing is it's really important to have really great observability.

5:17:08

Going back to the example of auto research and an agent doing a lot of training, what

5:17:14

happens when the training run fails?

5:17:16

You want your agent to be able to easily look at the logs of the failure, reason about what

5:17:21

happened and do another iteration with a different set of parameters.

5:17:27

While training is running, you want to look at the metrics, GPU utilization and make sure

5:17:33

it's not stalled.

5:17:34

Maybe you want to look at the budget and make sure you're not spending too much on your

5:17:38

sandbox.

5:17:40

And obviously all of this is really important for humans, but as agents are driving a lot

5:17:45

more compute, we're spending a lot of time exposing all of this to the agents themselves

5:17:50

so they can reason about all of this.

5:17:54

All right.

5:17:55

I think we know what we need.

5:17:57

Why don't we have Astra build us an agent platform?

5:18:01

Well, I don't think it's a good idea.

5:18:03

I don't think you should vibe code a sandbox platform.

5:18:06

And there's three main reasons for that.

5:18:08

Number one is reliability.

5:18:10

I think we're all painfully aware how hard it is to get right.

5:18:16

Certain websites we use every day keep going down.

5:18:19

and the reason for that is even with AI,

5:18:23

it's actually really hard to reason about the feedback loop

5:18:26

of what happens in the case of this tail event

5:18:30

when the system breaks

5:18:31

and this is why you need to be very careful in building systems.

5:18:35

Security is another one.

5:18:36

You could vibe code a sandbox platform

5:18:38

but who is going to do all the work

5:18:40

to continually reason about the security boundaries

5:18:43

and make sure it's defensible

5:18:47

in an age when everything is evolving very fast.

5:18:52

And finally, scale.

5:18:53

We have a blog post about how we scale to a million sandboxes,

5:18:57

which involves a lot of very interesting engineering design

5:19:00

and reasoning about systems.

5:19:02

And this is, again, something that you kind of don't want to leave up

5:19:07

to a Vibe-coded platform,

5:19:08

because when you get to scale, you want it to work.

5:19:12

And on that point, we're actually seeing massive scale

5:19:16

for a lot of things I mentioned.

5:19:18

So, for example, for the snapshots I mentioned,

5:19:21

it's growing quite fast.

5:19:23

We're seeing 20 million snapshots a week.

5:19:25

We're processing about eight petabytes of data a day

5:19:30

for each of these snapshots.

5:19:33

And our users are creating almost 2.6 million volumes a week,

5:19:38

and all of this is growing super fast.

5:19:42

And just to take a customer workload for personal assistant,

5:19:47

You need to create 10,000 sandboxes a second.

5:19:50

You need to run almost a million sandboxes.

5:19:54

And they're not going to last very long, they'll just last for like two or three minutes.

5:19:58

But when they come up,

5:20:00

you want them to be interactive in less than a second. That's what this workload really demands.

5:20:08

And the other interesting thing on scale is you actually cannot get all of the scale from a single cloud platform. The world is actually getting crunched on CPUs as well, not just GPUs.

5:20:19

So one thing we spend a lot of time doing is actually aggregating cloud capacity from

5:20:24

a bunch of hyperscalers and neoclouds.

5:20:27

So our users have access to CPU capacity across the world when they need it, but we cannot

5:20:32

rely on one cloud provider to do that.

5:20:36

Okay, so where is all this going?

5:20:38

I hinted at this earlier, but the harnesses are really good at making use of dynamic environments.

5:20:46

and what this is leading to is a lot of separation of the brains,

5:20:51

which is the harness, from the hands,

5:20:53

which is the sandbox or the runtime where stuff is running.

5:20:58

And what this means, I have an example here,

5:21:01

is the harnesses are going to be able to spin up environments

5:21:05

based on what they need right now.

5:21:08

They're good at snapshotting them and keeping them around

5:21:12

as artifacts that they need later.

5:21:14

And again, adjusting all of this as necessary.

5:21:18

So I think this points at an interesting evolution

5:21:22

of the pets to cattle analogy we're all familiar with.

5:21:28

To recap, in the olden days,

5:21:31

people thought of services like pets.

5:21:34

Each one was bespoke.

5:21:35

You had to manage it.

5:21:36

You had to reason about this individual deployment specifically.

5:21:41

And then over time, with containerization and Kubernetes, people started to think about

5:21:48

it as homogenous templates.

5:21:53

These servers are all the same, you can scale them up and down.

5:21:56

If one of them fails, it's not an issue because our system can heal from that.

5:22:00

And I think this is where a lot of people deploying agents are today.

5:22:05

They're kind of using these homogenous environments and scaling up these agents.

5:22:08

But I think that's really limiting because the models are so good at reasoning about

5:22:14

dynamic environments, snapshotting, creating lots of environments when needed and working

5:22:19

across them.

5:22:20

So what does the new world look like?

5:22:25

analogy here is it kind of looks like an ocean of microbes, of all these organisms

5:22:30

that are self-evolving and working with each other.

5:22:34

credits this fix for the analogy here.

5:22:37

but one thing I'm really excited about

5:22:40

is as you give agents these really rock-solid primitives

5:22:45

for compute and storage and networking,

5:22:48

they will be able to actually do a lot more

5:22:50

by doing the stuff I talked about,

5:22:53

like spinning up lots of environments,

5:22:54

working with each other, and being very dynamic.

5:22:58

So yeah, I and us at Modal really think

5:23:02

that great primitives let your agents do more,

5:23:06

and yeah if you're interested in talking about this more

5:23:08

reach out to us

5:23:09

thank you