Jason Smith
November 3, 2026
Agents are going serverless, but the data pipelines that feed them are not. That gap is what I talked about at OSA CON 2026, and this post is the written version of that talk.
I started writing about serverless eventing back in 2020. Google Cloud launched Cloud Run the year before and Knative a year before that. I was learning more about serverless containers and at the same time, I was working with Kafka as many of my customers were using it. While I was searching around, I found Knative Eventing by chance, and the two things I was already doing turned out to be one topic. That is how this series, and this site, got started.
Six years later, the thing at the end of the pipeline has changed. It is not just a function or a dashboard anymore. It is an agent. The question I was asking in 2020 is back, and the stakes are higher.
I’ve said it before and I will say it again: If you ask a room of people to define serverless, you will get various answers. Most people mean functions. When I say serverless, I mean four things:
The last one is the one this post is about.
Since serverless apps can scale to zero, something has to “wake them up” to do their work. This “something” is an event. An event can be someone visiting your website, someone sending an HTTP request, a row being updated on a database, and more.
If that something else is a process you have to run, size and keep alive, you have broken the contract. You now have always-on infrastructure sitting in front of your serverless app.
This is the conclusion I keep coming back to: to be event-driven, serverless needs serverless delivery and serverless consumption. The brokers and the routing have to be serverless, and the consumers have to scale with events, down to zero.
My answer is what I call an eventing plane. An eventing plane abstracts the data sources from the application. The application asks for the events it cares about, and it does not know or care which broker, queue or source produced them.
There are three parts. Sources, like databases, object storage and message streams, produce events. The plane handles routing, delivery and scaling. Consumers, like functions, serverless apps, AI endpoints and AI agents, just receive what they subscribed to.
The nice thing about this split is that the plane does not change when a new kind of consumer shows up. AI endpoints were already consumers in 2020. AI agents were not. Now they are, and the plane did not have to change for them.
A lot has moved since I started writing. Four changes matter for this story.
The specific bus keeps changing. The need for events to be routed and scaled does not.
Agents are going serverless. For most teams, the data pipelines feeding them are not. The agent can scale to zero, but the event plumbing behind it still needs people. There are three jobs:
This work is manual by default, but it does not have to be. Many Kubernetes-native and serverless data platforms can automate it, and Knative Eventing is one example. There are also proprietary solutions like Google Eventarc and Amazon EventBridge.
That is the point of the eventing plane. The platform provisions the brokers, scales the consumers and handles the wiring, so the application only has to declare which events it wants.
Events were designed for programs: small, structured payloads, usually JSON. Agents work in text, so the useful part of an event is often a short, readable message.
CloudEvents does not need to change for this. The spec has a datacontenttype attribute, and the data can be any content type, so text/markdown is allowed today. What is missing is a shared convention. I would like to see agent-facing events carry a short Markdown body, while the attributes stay structured so the plane can still route on type and source.
{
"specversion": "1.0",
"type": "com.example.order.delayed",
"source": "/shop/orders",
"id": "[unique-event-id]",
"datacontenttype": "text/markdown",
"data": "## Order 4417 is late\n\nCarrier reports a two-day delay.\nCustomer is on the premium plan."
}
The attributes are for the plane. The body is for the agent, which can read it as it is, with no parsing. This event is an illustration, not a published profile. I think it is worth defining one in the open.
Agents rarely work alone. An orchestrator agent breaks a job into tasks and hands them to subagents, and the subagents hand results back. That is a lot of events, and it needs a plane designed for it.
The plane carries tasks out and results back as events. Four things matter:
subject could carry it.These are design goals, not a list of what any product ships today. Knative Eventing already covers parts of fan out and delivery. The gaps are the interesting part.
The eventing plane is not a single product. You can put one together from open source pieces.
| Project | Role in the plane |
|---|---|
| CloudEvents | Common format for describing events |
| Knative Eventing | Brokers, triggers and routing on Kubernetes |
| KEDA | Event-driven autoscaling for workloads |
| Kafka, NATS | Example message systems underneath the plane |
Swap in whatever fits your stack. What matters is that the application does not have to care which one it is.
Agents are going serverless. Their data pipelines should follow.
Written by Jason Smith, the Cloud Alchemist. AI was used to help me form my thoughts