Flue: The Agent Harness Framework
From LLM APIs to Autonomous Agents
The speaker opens by tracing the evolution from simple LLM API calls and RAG apps to SDK-based scripted agents, and finally to autonomous agents like Claude Code. He explains that giving an agent a task, context, tools, workspace, autonomy, and boundaries allows a model to work until completion, setting up the concept of the agent harness.
Defining Harness Engineering
The speaker introduces the term 'harness engineering,' crediting Vivek Trivedi's framing of 'agent equals model plus harness.' He explains that everything surrounding the model—context, sessions, tools, skills, file systems, sandboxes, routing, observability, and safety—constitutes the harness that unlocks a model's full potential.
Fred, Astro, and the Origin of Flue
The speaker introduces Fred, creator of the Astro framework (now part of Cloudflare), and explains the problem Astro's large open-source community faced: thousands of GitHub issues that existing interactive harnesses like Claude Code and OpenCode weren't designed to handle in automated CI environments. This challenge motivated the creation of Flue.
Introducing Flue: A Headless, Programmable Agent Framework
The speaker demonstrates Flue's core API, showing how developers define agents in TypeScript with models, custom tools, MCP servers, and bundled skills. He highlights that Flue behaves like Claude Code but is fully headless and programmable, and explains how skills can be reused across both interactive coding agents and headless agent deployments.
Sandboxes, Deployment Targets, and the Flue CLI
The speaker covers Flue's flexibility around sandbox execution (local containers vs. sandbox providers) and clarifies that Flue, unlike Cloudflare's Agents SDK or Sandbox SDK, is platform-agnostic and deployable to Node, Daytona, E2B, Modal, Vercel, or Cloudflare. He then walks through the Flue CLI commands—init, connect, build, and deploy—for creating, testing, and shipping agent projects.
Real-World Example: Automated Issue Triage with Emdash
Using the open-source CMS project Emdash as a case study, the speaker shows how a Flue workflow agent called 'investigate' is triggered via GitHub Actions to automatically reproduce, diagnose, and comment on GitHub issues. He notes that companies like Amplitude have adopted similar patterns for automated PR review agents, replacing previously manual triage work.
Agents vs. Workflows in Flue's Architecture
The speaker distinguishes Flue's two harness types: long-running, stateful agents with persistent identity (e.g., a support assistant or Discord moderator) versus short-lived workflows that run and return a result (e.g., summarization or ticket classification). Both share an underlying session structure of operations, turns, and LLM calls, differing mainly at the harness and instance level.
Where Flue Fits in the Agent Framework Landscape
The speaker maps Flue against other tools in the ecosystem, explaining it's built on top of PyAgentCore (a coding-agent core library) and, when deployed to Cloudflare, leverages the Agents SDK and Durable Objects for stateful serverless execution. He positions Flue as a mid-layer framework that higher-level UIs or CLIs would build upon.
Flue in Production at Cloudflare
The speaker shares CTO Dane Knecht's vision of consolidating Cloudflare's many ad hoc AI harnesses—covering ticket triage, audits, security workflows, and more—onto Flue. He highlights 'Cloudflare OS,' an internal agent tool built on Flue that gives employees isolated workspaces, reusable skill libraries, and scheduled task capabilities.
Demo: Cloudflare OS in Action and Closing Remarks
The speaker demonstrates a real Cloudflare OS query used to find ownership and repo information for an internal project, showcasing MCP server integration, authenticated API proxying, and document generation. He wraps up with a lighthearted mention of OpenAI's same-day 'Sites' vibe-coding launch on Cloudflare Workers, and invites attendees to try Flue, noting it isn't yet at version 1.0 but is actively developing.
Hello. I'm here to talk to you about flu, last talk of the day, thankfully. Flu, the agent harness framework as well as, how it's being used in the wide world and at Cloudflare. Most of us kinda know the agent story by now. We know the transition LLM APIs were great.
We were creating rag apps, sort of simple input output. But they only got us so far. And then SDKs came along to to sort of wrangle them a little, but you still needed scripted steps and loops. It was only really until when Claude code and and the UI agents that are similar came along that we really kind of realized the power of of what an an agent in a harness can do. Claude code kind of showed us that if you if you give an agent a task, context, tools, a workspace, autonomy and boundaries, then the model will just keep working until it's done.
And so we kinda needed to create we we needed we needed these these sort of tools to show us what what boundaries you needed so that a model could kind of reach its full potential. And this sort of discipline has been termed harness engineering.
It's basically how we build systems around models to turn them into work engines. So harness harnesses are kind of how how we unlock the model's capabilities. This this quote here from Vivek Trivedi who who wrote one of the early pieces on harness engineering and actually coined this agent equals model plus harness.
What he means by if you're not the model, you're the harness. He kind of means, look, everything everything that you're putting into these systems like ClaudeCode except the model, that's the harness. So the context, the sessions, the tools, the skills, file systems, sandboxes, routing observability and safety, that's all harness and all that's left is the model and everything is supporting that.
So this leads me to Fred. Fred is the creator of Astro, a popular front end framework used on thousands of ecommerce sites and static sites around the world. And Cloudflare acquired Astro. And so Fred now works for us, which is great. Now Astro has many users, 60,000 GitHub stars, thousands of installs.
And like most open source projects these days receives hundreds if not thousands of GitHub issues. And you can use harnesses like OpenCode, ClawedCode to help you triage issues, fix bugs, but they're interactive. They're kind of intended for long long interactive sessions and it's kind of a big pain if not impossible to say deploy something like Claude code to a GitHub CI so that it can run run when issues come in.
So that's why you created Flue. And this this is what Flue the Flue framework looks like. It's like Clog code, but it's completely headless and programmable in TypeScript. So this this snippet sort of shows exactly what the what the surface is like. The create agent bit down the bottom shows exactly what it it basically shows what the harness is for an agent that can operate headlessly.
So you have the model, you know, we all we all know that piece, the reasoning engine, the brain. You can you can give it tools. They can be custom tools. MCP servers fit in here. They become tools as well. Edit tools, bash tools, API tools, anything like that.
I think one of the sort of fundamental shifts or one of the newer things that we're seeing with harness engineering is the idea of being able to bundle skills into an agent harness. So skills have kind of become a great way of reusing specialized functionality. And you can use them in coding agents and then you can also use them in headless agents as well.
This in this sort of code example, you can see it's the skills being imported and directly directly given to the function. But you can flu will also pick up skills if it's running on a on a file system. It can also pick up skills from the file system just like Claude code or anything like that.
So you can kind of use exactly the same the same paradigms there. The the reason that you might wanna bundle it together is if you're deploying deploying your code sort of as a as an entire bundle and you don't maybe you don't have access to a file system. It might be running serverlessly or something like that. The sandbox similarly is is something that you might choose you might choose to run locally like in this snippet if you're already in a container or something like that, like for example, you're in a GitHub CI context. So you can just run locally because you're already in a container, but you may also choose a sandbox provider of some kind. I'll talk more about that in a sec.
And then you've got basically the the way that the the agents reached. You know, are you are you posting to it? Are you using a WebSocket or are you just running a single command? Unlike some of the other sort of frameworks that we've put out there that you might have heard of, we've got a framework called agents SDK, one called sandbox SDK, and one we recently announced called project think. This Flue is not Cloudflare specific.
It's completely platform agnostic. It's under the Astra umbrella. So you can deploy to multiple environments, node, Daytona, e two b, modal, Vercel and of course, you can also deploy to Cloudflare. And like any good framework, Flue comes with a CLI. You have commands like in it that you can sort of create a project from scratch for and then once you've once you've edited the created files, you can connect to your agent locally using Flue Connect and chat with it interactively in an interactive session.
And then you can build it and deploy it. If you're targeting Node, it'll build a server dot m j s that you can run with Node or you can, you know, target Cloudflare and then then deploy it using our CLI which is called Wrangler. Or you can just run if you have a workflow, you can just run a single execution in line and it'll just execute your agent. So this is this is sort of an example of how one project, Emdash which is a CMS, an open source CMS project similar to WordPress, like Astro, they've adopted flu for all of their issue management and you can sort of see the the definition of the agent at the top there.
It's a it's a workflow agent called investigate. It takes in a model and instructions. You know, you will you will classify GitHub issues. It it it's a fairly fairly intense or in-depth kind of agent. It investigates, it tries to solve the issue if possible.
The way that it's run is just in a GitHub workflow using the flu run command. Flu run investigate. Flu will know, okay, I need to check the dot flu workflows directory and and run the investigate agent. And the payload that's been given was basically the the GitHub API hook that came in so that it knows which is issue to target. So it'll go and check out the code.
It'll use use this LLM to figure out you know, is this issue reproducible? It'll try and reproduce it and if it can, it'll comment comment on the issue and sort of give a root cause and that that sort of thing.
This this is sort of the primary way that flu started being used. A bunch of other projects and companies are using this way. Amplitude is another company that created a PR agent using flu in this sort of way. I guess prior to agents really being around, a lot of this stuff was kind of being done manually but now you can essentially just give a model some instructions and a harness and it'll it'll go off and potentially, you know, if you're lucky, triage and solve solve issues for you and tell you if they're real or not.
There are a couple of types of harnesses in flu, workflows which we kind of just saw an example of and agents. The main difference really just being that one is kind of long running and has an identity. So agents receive messages, workflows just run and return a result. An agent example might be a support assistant that follows a particular you know, keeps track of a particular ticket or an issue thread that you wanna follow or a Discord moderation agent, something that has a long running identity and a workflow example might just be a summary, reviewing a document, investigating an incident, classifying a ticket.
So they're essentially the same at the lower level. Each has a session that's made up of multiple operations, that's made up of multiple turns, multiple LLM calls but they sort of differ at the harness and instance level with the workflow just having a run ID and agent instance having an ID that you can then keep passing back to it to have long running conversations.
Where does Flue fit in the landscape? How does it compare with AI SDK, you know, pie, things like that? This is where this is where I'd put it. You've got the the model providers at the bottom, AI SDK, PyAI, things like that. You've got agent loop libraries that sit on top of that open AI agents SDK for example, bespoke loops, PyAgentCore.
Now, I didn't mention this but Floo is actually built on PyAgentCore. So it's built on py. If you haven't heard of py, py is similar to OpenCode or ClaudeCode is another coding agent but it has some core packages that that allow you to, you know, use the same API across multiple providers and things like that.
So Floo is built on py agent core. If you're deploying to Cloudflare then it also builds on our agents SDK on durable objects which is another Cloudflare specific Cloudflare workers paradigm. It's essentially a serverless instance that also has state. Flue kind of sits on top of all of that and then the the thing that would sit on top of something like Flue would be something with the UI or a CLI, something like that.
So how are we using it at Cloudflare? This is our CTO, Dane Daneknecht, a few weeks ago. Like everyone, we've been building AI tools like crazy. We have ad hoc harnesses all over the place, ticket incident triage, audit trails, data grounded analysis, cron agents, trusted checkouts, focus tests, security workflows and the time has come, we're going to consolidate everything on Floo and it's it's perfect for something like that.
One of the ones that I'm most excited about is one that we've recently rolled out internally called Cloudflare OS. It's basically just a big internal agent tool for employees, especially non technical employees to interact with agents but also run non interactive workflows.
So you ask you want to do in here and it'll create a new workspace which is a completely isolated container with its own file system and history and you can go back to that at any point in time. And then we have a huge library of skills internally. So that's very useful for things, you know, reusable things generating business cases, preparing for customer calls, drafting emails, generating slides, a whole bunch of skills like that.
And then yes, scheduled tasks. We we have scheduled tasks as well. This is an example of me earlier asking Cloudflare OS. I wanted to know that we have a project called Agent Lee, it's a support agent. I wanted to know which team owns it and can you figure out where the the repo is because I really had no idea.
And you know, it'll go off, it'll search, it'll it'll it connects to our internal m MCP servers. It can make API calls using a proxy as well that has authentication built in and can then also generate documents. Those are saved. You can go back to those workspaces at any time. So yeah. It's it's been pretty cool.
Using Flue together with something like agents SDK or project think is is one way that you can achieve this sort of interactive flow but then you also have things like scheduled tasks so you could, you know, just gather all the data you need to generate a daily summary of everything you need to know using different skills and something like that is the perfect job for flu.
That's mostly it. I'm sneaking in a cheeky little unrelated slide just because earlier today, OpenAI launched their vibe coding feature they called sites. And the whole thing deploys to Cloudflare Workers, our development platform, which is very cool and we're very excited about that, including R2 storage, D1 databases, all the shiny things. Probably doesn't run on Floo just yet, but it may.
And you should go check it out to see what's possible on the platform. If I'd known they were launching today, I probably would have done a different talk. Sorry, Fred. So if you want something like Clogcode but you want to use it programmably, headlessly, check out flu. It is not one point o yet but it will be soon.
Thank
People
- Dane Knecht
- Fred
- Vivek Trivedi
Technologies & Tools
- Agents SDK
- AI SDK
- Claude Code
- Cloudflare Workers
- D1
- Durable Objects
- Flue
- Node.js
- OpenAI Agents SDK
- OpenCode
- PyAgentCore
- PyAI
- R2 storage
- Sandbox SDK
- TypeScript
- Wrangler
Standards & Specs
- MCP
- WebSocket
Concepts & Methods
- harness engineering
Organisations & Products
- Agent Lee
- Amplitude
- Astro
- Cloudflare
- Cloudflare OS
- Daytona
- E2B
- Emdash
- Modal
- OpenAI
- Project Think
- Vercel
What [Flue](https://flueframework.com) is and how it’s being used at Cloudflare and elsewhere.
Flue is a programmable, open source agent harness, able to represent any autonomous agent or workflow, from simple chatbots to entire coding platforms.
We’ll touch on the rapidly growing world of agent harnesses in general, and how Flue fits into this landscape. As well as a framework exploration, we’ll discuss how companies have been using Flue, including how we’re using it at Cloudflare.














