← All AI Engineer talks

AI Engineer World's Fair 2025

Building CISO-approved agent fleet architecture

Lou Bichard· Field CTO, Gitpod13:52

Read the talk

Building an agent fleet inside the customer’s security boundary

Gitpod’s architecture evolved from shared Kubernetes infrastructure to customer-hosted runners, balancing sensitive workloads, operational cost and the needs of autonomous agents.

From a talk by Lou Bichard

Before you start: Familiarity with cloud accounts, containers and virtual private networks will help; no prior knowledge of Gitpod is required.

Where should a secure development environment run?

How do you give developers a ready-to-use workspace while keeping sensitive work inside a regulated company’s infrastructure—and without making that company operate a complicated platform? That problem shaped Gitpod’s architecture before it became the foundation for an agent fleet. Lou Bichard, introducing himself as Gitpod’s Field CTO, traces roughly six years of architectural decisions, drawing on his background in software and platform engineering and nearly four years building automated development environments. The decisions matter to both vendors building secure tools and customers deciding which tools they can adopt.

A Gitpod development environment is the place where a developer works, not a staging or integration environment. Think of it as replacing the working environment on a laptop. Bichard reports that developers work inside Gitpod for around 36–37 hours per week. That makes availability consequential: an outage interrupts the customer’s ability to develop software, rather than merely taking an auxiliary tool offline.

The security requirements are equally central. Gitpod works with banks, pharmaceutical companies and healthcare organizations; restrictions on publishing customer names and logos limit the examples Bichard can identify. Serving those customers is a substantial undertaking for a small vendor with limited resources. By the time of the talk, that infrastructure also supported an agent offering that Bichard says had been announced two days earlier, after months of work with design customers.

“What is Gitpod?” slide with five points about standardized development environments, sensitive assets, regulated customers, weekly usage and downtime, beside an exploded stack illustration.
Gitpod’s development environments handle sensitive assets for regulated customers.

Each architectural iteration changed three things: customer ownership, operating cost and security. The journey began in 2019 with an internet-hosted, multi-tenant SaaS product. A customer could visit the website, enter a credit card and start using it. That simplicity did not meet the requirements of the secure enterprises Gitpod wanted to serve, leading first to self-hosting, then a managed customer-hosted model, and finally the architecture used for its agent fleet.

0:250:33
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:25 · section reference included

One click into a shared development environment

The original managed service had an immediately understandable attraction: click a link and arrive in a development environment. Bichard recalls a tweet from Shawn praising how quickly Gitpod delivered that first impressive experience. Underneath the interaction, Gitpod ran on GCP, chosen for its connection to Kubernetes, with development environments orchestrated as pods in shared, multi-tenant infrastructure.

Easy access also made free compute attractive to people mining cryptocurrency and otherwise abusing the service. Meanwhile, Bichard describes Kubernetes as a poor fit for Gitpod’s particular development workloads. The service was easy to try, but its shared infrastructure did not satisfy the enterprise requirements of professional developers working with real company systems and source code. Improving onboarding alone could not solve that deployment problem.

4:024:11
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

4:02 · section reference included

Self-hosting moves the operating burden

The obvious next step was to package the existing architecture as a self-hosted installation and give it to customers. Gitpod did exactly that. It opened support for Google infrastructure, with Bichard also recalling AWS support, without first tightly limiting the deployment configurations it would accept. Requests followed for different Kubernetes distributions and customer-specific configurations. Each variation widened the operating surface that customers and Gitpod had to understand.

Owning the infrastructure also meant owning its ongoing operation. Customers had to install the product and keep it running. Bichard illustrates the effect on return on investment with the possibility of assigning two or three people—or an entire team—to that work. The staffing burden consumes part of the value the product is supposed to create. This is the day-two problem: getting software installed is only the beginning of its cost of ownership.

Self-hosting also changed the relationship between vendor and customer. Gitpod had less direct contact with the people using and operating the product, even though adoption and rollout were critical to success. Bichard says some customers attempting adoption without Gitpod’s support were unsuccessful. The deployment model had moved the software into the customer’s boundary, but it had also made successful operation and adoption harder.

5:135:24
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:13 · section reference included

Manage the service, keep the workload in the customer account

Gitpod’s next model, called the substrate, separated hosting from management. Customers could keep the installation on their infrastructure while Gitpod managed the service. To make that supportable, Gitpod reduced deployment variance by committing to AWS as the infrastructure provider. The vendor could take back operational responsibility because it no longer had to accommodate every customer’s preferred platform configuration.

That arrangement established a deliberate information boundary:

Remained with the customerReturned to Gitpod
Development workloadsOperational telemetry
Source code and dataInformation needed to manage the service
Integrations

The workload and its sensitive assets stayed on customer infrastructure, while a small amount of operational information flowed to the vendor. That division met the requirements of the regulated customers Bichard describes.

Operationally, the model was a success, but it preserved the complexity of the underlying Kubernetes architecture. Installation remained difficult, and multiple clusters imposed a high fixed cost. Reducing the number of supported configurations had made the system easier to manage; it had not removed the infrastructure that made it expensive and complicated in the first place.

Slide lists a BYOC model, AWS-only infrastructure and managed operations, followed by installation difficulties and two-cluster expense, beside a New Stack article screenshot.
The substrate model reduces variance but retains installation overhead and the expense of two clusters.
6:487:05
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

6:48 · section reference included

Replace the clusters with a small runner

Gitpod ultimately moved away from Kubernetes for this use case. Its engineering account, We’re leaving Kubernetes, develops the workload-specific reasoning behind that decision. The design question became more direct: what is the smallest architecture that can run securely inside regulated companies without imposing a large operational burden on them?

The replacement uses a runner, analogous to the runner an engineer might know from GitHub CI. It keeps source code and access to customer data on the customer’s infrastructure. In the AWS architecture described in the recording, the runner is a single ECS task running one container. Bichard puts the runner’s cost at single-digit dollars per month, separate from the development workloads it launches. This is the historical design described in the talk, not a complete specification for a current deployment.

The runner launches development environments using the capabilities of its host platform. On AWS, those workloads run on EC2 and are backed up to EBS. The same principle applies to the Linux runner: inherit the qualities of the platform on which it runs. Gitpod chose provider-native functionality over Kubernetes’ theoretical portability, avoiding the additional abstraction and operational complexity that portability had brought to its workload.

The remaining question was what Gitpod could operate centrally so customers would not have to. The vendor retained coordination metadata, including IDs and user-related identifiers, while the source code and valuable intellectual property stayed inside customer infrastructure. Bichard characterizes that metadata as non-personally-identifying and less sensitive to these customers than their source code; that is a description of the intended data boundary, not a general guarantee that any user identifier is harmless.

Component or dataLocation in the described architecture
Management metadata and user IDsGitpod’s side
RunnerCustomer infrastructure; ECS on AWS
Development environmentsCustomer infrastructure; EC2 on AWS
Workload backupsEBS on AWS
Source code and data accessCustomer infrastructure

The customer keeps the sensitive workload; the vendor keeps much of the coordination burden. This is also the foundation on which Gitpod runs its agent fleet.

“Thinking from first principles” architecture diagram showing a Gitpod management plane, customer-account runner and environments, a separate customer-resources account, and customer roles linked by arrows.
Gitpod’s management plane connects to a runner and environments in the customer account.
8:018:16
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:01 · section reference included

Installation is simple once the network is ready

The deployment video makes the boundary visible in the user experience. A user selects a workload, but execution happens inside the customer’s network and cloud account. The runner setup follows a short sequence:

  1. Use the runner interface to create a CloudFormation configuration.
  2. Supply the customer’s network details on the customer’s side.
  3. Create the installation in that account.

The interface makes provisioning approachable without moving the workload out of the customer’s infrastructure.

Bichard says runner installation can take as little as three minutes once the required network details are ready. The usual bottleneck is obtaining the VPC and subnet information, identifying who owns those resources, and finding someone authorized to allocate them. The claimed installation time therefore describes provisioning, not the entire enterprise approval and onboarding process. A simpler deployment reduces technical overhead, but it does not eliminate the organization’s responsibility for its network.

10:1710:27
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:17 · section reference included

Give agents the environment developers already use

The agent offering grew out of work with customers and design partners dating back to the start of the year. Because Gitpod already had infrastructure inside those customers’ accounts, it could reuse the same development workloads. An autonomous coding agent needs much of what makes a human developer productive: source code, a place to execute and iterate, and access to the internal systems involved in the task.

Those internal systems might include a database or a cluster. Within the existing development environment, an agent can work on source code with the access and privileges available to an individual developer. The architecture provides an execution location and an access boundary for the agent rather than requiring a separate external workspace with a new path into customer systems.

That reuse underpins the offering’s privacy-first positioning. The agent runs inside customer infrastructure, building on the same deployment model developed for regulated organizations. The product panel presents Ona as the software engineering agent hosted in the customer’s VPC.

Gradient Ona panel describing enterprise hosting, auditability, LLM support, autonomous parallel tasks and IDE takeover, with ona.com credited below.
Ona is presented as a privacy-first software engineering agent hosted in your VPC.
11:2111:37
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:21 · section reference included

Make platform activity auditable

The redesign also gave Gitpod an opportunity to build the platform around an API-first interface. Bichard says platform actions and interactions—including creating a development environment—are audit logged, giving customers a history of activity on the platform. That audit history extends to agent tasks when they use the same infrastructure. The scope here is platform operations and agent-task activity, rather than a claim that every shell command or file access inside an environment is recorded.

For buyers of AI tools, the underlying architecture therefore belongs in the purchasing decision: where work executes, which infrastructure the customer owns, and what operational qualities come with that arrangement. For vendors, Gitpod’s experience ties technical simplification directly to the customer’s ability to adopt and operate the product. In this case, moving away from a complicated Kubernetes deployment made it possible to preserve the customer’s security boundary while reducing the burden of running the service.

12:2512:37
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:25 · section reference included

Resources

From the talk

  • Gitpod’s engineering account of the security, storage and resource-management difficulties behind its departure from Kubernetes.

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] Hello, everyone.

  2. 0:15

    Welcome. So today, we'll be talking basically about CISO Approved, uh, Agent Fleet Architecture. So, um, my name is Lou. I'll actually jump-- I have to jump into that, actually.

  3. 0:25

    So my name is Lou. I am a Field CTO at a company called Gitpod. Um, in a past life, you know, for, for many years, basically software engineering and platform engineering is my background.

  4. 0:33

    But for the last four years, actually nearly four years, I've been working at Gitpod, effectively building, uh, a platform for automated development environments.

  5. 0:42

    What I'm gonna talk about today is actually the journey over the last-- It even extends beyond my, my tenure at the company for the last sort of six years, building our sort of product infrastructure and architecture for secure environments, particularly around regulated industries and that kind of thing.

  6. 0:57

    Uh, I assume they'll probably... In fact, actually, I think I'm, I'm already on the next slide, so. Um, yeah, so in terms of, like, who this talk is for, um, so different aspects.

  7. 1:07

    So first aspect is really about how do we start to think about how technical architectures of product affect our business. If you're a vendor, this is obviously something for you.

  8. 1:15

    Uh, there are probably a bunch of people here as well that are either building or consuming or thinking about AI tools, maybe also in these secure environments. But then also if you're a buyer of this as well, I think this, this talk will also be interesting if you're buying, using, or consuming AI tools, thinking about, like, what

  9. 1:29

    architectures might be right for you and what considerations you might wanna, uh, take throughout that process.

  10. 1:35

    So let's go ahead and actually just jump into it. So for a little bit of context, um, it's very hard to talk about this talk without actually giving a bit of background to the company and what we do.

  11. 1:44

    So, uh, Gitpod is basically a platform for secure dev environments. Um, a lot of people sometimes mix this up with things like staging or integration environments, things like that.

  12. 1:52

    But to give you an idea, like, developers actually work inside of Gitpod for around thirty-seven hours a week, thirty-six, thirty-seven hours. So, like, you're-- it's almost like a replacement, I suppose, like, for your machine or your laptop, something like that.

  13. 2:03

    So as a, a consequence of that as well, it's highly mission-critical software. So if Gitpod goes down, that has a huge impact for our customers. So it's really important that this is incredibly reliable.

  14. 2:15

    In addition to that, what we effectively do is, because the automated aspects of our dev environments, we run also, uh, mostly with, uh, highly secure regulated organizations. So banks, pharmaceutical, healthcare.

  15. 2:27

    Uh, a lot of the companies that we work with as well, like, are quite particular about, like, their logo rights and publishing some of their names, but for sure, it's a lot of companies that you will know, a lot of household names and things like that as well.

  16. 2:39

    So as you can imagine, building this type of product then and actually bringing it to market is not an insignificant task, especially as, you know, if you're a smaller company with sort of limited resources trying to do that.

  17. 2:48

    Um, and in addition to that as well, I'll talk about this a little bit later, but we actually launched and talked more publicly about our agent offering, um, two days ago, but we've been building this for, for months with some of our design customers as well.

  18. 3:00

    And I'll get onto that and how, how that, uh, interfaces with the architecture as well.

  19. 3:06

    So just as an overview, and I will actually deep dive into these a little bit as we go through, is, um, we've gone through various iterations of different architectural models, and they had different implications for us as a company, but also for our customers.

  20. 3:18

    The implications on, for instance, how much ownership they have over those products, like the cost of running those products, uh, and the security as well, um, of actually when they run them.

  21. 3:27

    So very quickly, 'cause I will actually deep dive on these. So we started off 2019, uh, with a managed SaaS product. It's where a lot of products start. Hosted on the internet, multi-tenant.

  22. 3:37

    You can go, you click on the website, you swipe a credit card, you can use the product. Wonderful. But this doesn't work for secure companies, right? So, uh, we went through several iterations, first with a very self-hosted architectural approach.

  23. 3:49

    Uh, we then adjusted that, and I'll talk about exactly how. And then we have what we effectively have today, which is also the platform that we run our agent, uh, fleet architecture on, and we'll talk about how that works as well.

  24. 4:02

    So if we start at the beginning with our sort of fully managed SaaS, and I don't know if any of you know Shawn, but it's funny 'cause I remembered this tweet the other day, um, that he put out several years ago.

  25. 4:11

    He's like, Gitpod really inspired him to do a, you know, a video 'cause it has a, a nice time to wow, which is, you know, Gitpod was very well known.

  26. 4:18

    You click on a link and you end up in a dev environment literally from, from one click interaction. Um, this was at the time hosted on top of GCP, Kubernetes architecture.

  27. 4:28

    We chose GCP obviously for the connection with Kubernetes. Uh, and the way the dev environments were then orchestrated was pods running inside of Kubernetes. So multi-tenant infrastructure. But if you know anything about Kubernetes, it's not really designed for that type of workload.

  28. 4:41

    And we will talk a bit about that, uh, as we go on. But obviously, there are several challenges with this type of approach. One, it's great to get started, really easy to use your product, but we had a ton of crypto mining and abuse on this.

  29. 4:52

    It's one of these things like we can't have nice things on the internet, like where we give away free compute 'cause somebody always wants to do something, uh, always wants to abuse it effectively.

  30. 5:00

    Uh, but it's not also just insufficient for enterprise. And one of the goals of Gitpod was really to bring our product to professional developers doing real worl- real world work in, uh, in real companies.

  31. 5:13

    So what do we do? What's the next step? The obvious, almost like the, the logical thing there is just, well, okay, well, can we take our existing architecture, take that, package that up as a self-hosted installation, then just give that to our customers?

  32. 5:24

    So we tried it. Uh, we did do exactly that. We didn't think too much necessarily about, let's say, the specifics of cloud provider support. So we kind of opened this up for Google.

  33. 5:33

    I think we had, uh, AWS at the time and some of the others. And, you know, we had all manner of then requests from different companies with all their different flavors of Kubernetes and different configurations to try and figure out how do we then self-host on those platforms.

  34. 5:47

    In the fullness of time, though, what this came up with, both for us as a vendor but also for our customers, is significant day two effects. So self, self-hosting is great as a, as a general model, but it comes also with this huge overhead.

  35. 5:59

    You typically have to set it up, you have to run it. And then as a business also that- Ultimately, it's like your cost of ownership. So, uh, as a company, like, we're selling-- ultimately selling a product to our customers.

  36. 6:11

    Um, having a very difficult product to set up and run is effectively eroding your ROI. If you need to allocate two, three, maybe even a whole team to actually set up and run this infrastructure, then the benefit that you're getting from that product is also being eroded.

  37. 6:25

    The difficulty with that as well is then we don't have a strong relationship with the people that are actually using or running that product. That's also really important, especially in an enterprise sort of situation.

  38. 6:33

    How you adopt and roll out the product can be critical to its success. And oftentimes we found that, you know, especially in a self-hosted model, without support from our side, some of those people that are trying to adopt the product also are unsuccessful.

  39. 6:48

    So considering that with the self-hosted model, uh, what did we do next? So we, we looked at this ownership and this sort of overhead, uh, challenge and said, "Okay, we can solve this by effectively providing what we call the substrate, so that we could allow customers to self-host, but then we could also manage the service.

  40. 7:05

    So we could take away some of that overhead." But in order to do that, we also needed to reduce variance. So one of the things that we did is we effectively doubled down on AWS as the individual provider where we run the infrastructure, um, but then we would then manage it.

  41. 7:18

    So that meant small pieces of telemetry data, other things that we would need to, to operate that infrastructure were still being emitted to us as a provider. But what it still meant is the workload, or in our case, source code, data, integrations, all still live on the customer's infrastructure, which is then still ticking the box when it

  42. 7:36

    comes to these regulated companies. But despite this being a success, certainly from an operational standpoint, it still continued to have effectively fundamental issues because they're still built on this sort of Kubernetes-based infrastructure, still highly complicated, let's say, even to what-- when you want to install.

  43. 7:53

    In this case, we're running multiple clusters with a high fixed cost, let's say, and also still a lot of complexity.

  44. 8:01

    This ultimately culminated in us moving away from Kubernetes for our specific use case. Um, I put this blog post up 'cause it goes into a lot of, a lot of detail specifically about why Kubernetes was particularly challenging for us and our use case and our workloads.

  45. 8:16

    Um, but we decided to move away from that and start to think from first principles about what an architecture looks like that solves this challenge of running inside of regulated companies, running highly securely, but doing so in a way that doesn't create a huge operational burden for our customers, which is bad for them and bad for us.

  46. 8:34

    So ultimately, this is actually the architecture that we came up with and that we have today that's also running our AI agent fleet. So I'll just run you through this real quick.

  47. 8:41

    So we have, uh, what we call effectively like a runner. And if you're an engineer, maybe you're probably familiar with this, like tools like GitHub CI as well has like this runner.

  48. 8:50

    The runner takes everything that's secure. So in our case, source code, uh, and access to data, and runs that on the customer's infrastructure. A runner is actually very, very simple in our case.

  49. 9:01

    The runner is actually a single ECS task, so it's a single container running. And it obviously then costs like we're talking dollars, single figures of dollars to run, uh, every month.

  50. 9:10

    The core workload that we spin up is then dev environments. Uh, each runner runs on a different, uh, in our, in our case, this is AWS, but if we, you know, for our Linux runner, they, uh, inherit the qualities of the platform they're running on.

  51. 9:24

    So for AWS, we run workloads on top of EC2, and those are also then backed up to EBS. So we can use the native functionality and features of the cloud provider to build that solution rather than something like Kubernetes, which is theoretically portable, but it also comes with all of that overhead and complexity of having the portability

  52. 9:41

    across different platforms. Then what we did is then also start to think about, okay, so what are the things that we can keep on our side as a vendor so that our customers aren't taking on a significant amount of operational overhead?

  53. 9:54

    So a lot of that is like metadata, IDs, information about users, et cetera. Not personally identifying information, but like user IDs, like stuff that if you were to get your hands on it, it's not particularly significant for our customers.

  54. 10:05

    They're not bothered about losing that. They're bothered about losing the IP, the source code, things that's running actually inside their infrastructure.

  55. 10:17

    So I did actually throw in a quick video here because-- I'm going to turn off the audio on this just to-- so you actually see what this looks like from a user experience point of view.

  56. 10:27

    So this is actually the user choosing their, their workload. When they choose those, those actually do run inside of their network, inside of their, their cloud account. To then set up and install on their side, what we're able to now do is provide them with this runner interface, creates a very simple cloud formation, ask the customer to

  57. 10:44

    go through and actually, uh, put in all of their different network details. That bit is all on their side. Create this. The process of running this, it takes as little as three minutes.

  58. 10:54

    The overhead or the challenge is usually getting all of that network configuration, VPC information, subnets, finding out who in your organization owns those, who can actually allocate them to you.

  59. 11:03

    But fundamentally, this makes it then exceptionally simple to then deploy that for customers, and the overhead of this then is also significantly reduced.

  60. 11:15

    Just one second. I think I have to back out of this to change, but

  61. 11:21

    there we go. Cool. So I mean, we're at an agent conference, so I also presumably should certainly be talking about AI and agents. So two days ago, I mentioned we basically launched our, uh, agent offering, which we've been working on for months now since the start of the year actually with customers and our design partners.

  62. 11:37

    Now, because we have that existing infrastructure already within those customers, we can actually run the exact same workloads. So because we create dev environments, dev environments are effectively for humans to be productive, but everything that an autonomous agent needs to operate is exactly the same thing that a dev does.

  63. 11:53

    They need the source code. They need access to internal systems, whether that be an Intel database, a cluster, et cetera. So when you give an agent the ability to access source code and iterate, it can do it inside of that same dev environment with the same access and privileges that an individual human would as well.

  64. 12:08

    Because of, uh, like our target market and the customers we go for, that our agent offering as well is also privacy first. Because what we've effectively built here allows us to, um, not only run inside the customer's infrastructure, but there's lots of other additional benefits that come from that as well.

  65. 12:25

    Let's say things like audit logs. Once we did that, and I'll just jump back a few slides. Once we rearchitected to this architecture, one of the other first principles that we, we came back to is building this in an API first way.

  66. 12:37

    So every action, interaction, when you spin up a dev environment, everything that you do is then audit logged and allows us to give our customers also an entire sort of audit history, uh, of the-- on the platform.

  67. 12:47

    Which also then extends to once you start running these workloads with agents, you also benefit from that as well. So that audit log also runs for those agent tasks.

  68. 13:02

    What time is it? I have two more minutes and the other guy is straight after. So, um, that is a very sort of whirlwind run-through. We do have a booth downstairs.

  69. 13:09

    I will be here and we, we can dig into this a little bit deeper if you want to as well. Um, I can show you how this works in our context as well.

  70. 13:16

    But like when you're then ultimately looking at if you're purchasing other tools, AI tools, these are the types of considerations you want to make about what is the architecture and infrastructure and what sort of different qualities they do have.

  71. 13:27

    Um, but then also if you're a vendor as well, there's probably a lot of learnings here from our side that you can take from this to build out a more simplified, effectively technical architecture, um, rather than, you know, building on top of like difficult and complicated platforms like Kubernetes and ultimately keeping things simple for your customers as

  72. 13:42

    well. But that's it. Thank you very much. Hope you enjoy the conference. [upbeat music]