Flue 1.0 Beta

coloneltcb1 pts0 comments

Flue 1.0 Beta | Flue Flue 1.0 Beta is available today! Flue’s core primitives — agents, workflows, sandboxes, channels — have come together into a cohesive story of what Flue is, why it matters, and why Flue is the best OSS framework available today for building autonomous agents and workflows with zero lock-in.

New primitives include:

Agents & Workflows — autonomous agents + deterministic AI workflows.

Channels — drop your agents into Slack, GitHub, Linear, and more.

@flue/react — frontend UI for your Flue agents and workflows.

@flue/sdk — a revamped client for interacting with Flue.

Durable Agents — agents recover from downtime and resume.

Observability — support for OpenTelemetry, Braintrust, Sentry, and more.

New CLI commands — offline docs for your coding agents and more.

ICYMI: Flue is a TypeScript framework for building the next generation of agents. Connect any LLM, build your agent, and deploy it anywhere. It’s all backed by a best-in-class DX, designed by the creators of Astro.

Try out Flue today. Pass along the prompt below to your coding agent to have it help scaffold your first Flue project for you:

Copy Prompt “Read https://flueframework.com/start.md then help create my first agent...”

Read our Getting Started guide for full details.

Introducing: Agents

Flue originally launched with a simple programmable TypeScript harness, built on top of Pi. Flue’s deterministic approach to agent orchestration turned out to be great for background work — structured automations we now call Workflows. Workflows are where your trusted code drives the model from start to finish:

// src/workflows/summarize.ts<br>// HTTP - POST /workflows/summarize<br>// CLI - flue run summarize --payload='{"text": "Lorem ipsum..."}'

const writer = createAgent(() => ({ model: 'anthropic/claude-sonnet-4-6' }));

export async function run({ init, payload }: FlueContext) {<br>const harness = await init(writer);<br>const session = await harness.session();<br>const response = await session.prompt(`Summarize: ${payload.text}`);<br>return { summary: response.text };<br>We launched Workflows back in May. But what people wanted to build with Flue was more ambitious: fully autonomous agents. Workflows gave you greater control over exact behavior and data access, but those limits came at a cost. So today we’re introducing an Agent primitive for building fully stateful, autonomous agents with Flue:

// src/agents/triage.ts<br>// HTTP - POST /agents/triage/:id<br>// CLI - flue connect triage

// Expose (and protect) your agent over the internet.<br>export const route = async (_c, next) => next();

// Compose your agent with the context it needs to be successful.<br>export default createAgent(() => ({<br>model: 'anthropic/claude-sonnet-4-6',<br>tools: [...githubTools],<br>skills: [triage, verify],<br>sandbox: local(),<br>instructions,<br>}));<br>Instead of writing an exact workflow yourself, Flue agents only need context. Define the context — model, tools, skills, sandbox, instructions, subagents — and then watch your agent solve whatever task you give it, autonomously.

Agents and workflows are two sides of the same coin. Both share a common foundational core but serve different needs:

Agents solve open-ended problems on their own.

Workflows run the exact steps you define.

Now you can mix and match both primitives to build fully autonomous loops within your repo, company, and hosted products.

Introducing: Channels

Channels connect your agents to external sources like Slack, GitHub, Linear, and more. A channel handles the incoming events and verification boilerplate so that you don’t have to.

A channel lives in the channels/ directory. Packages like @flue/slack and @flue/stripe come preconfigured to help you connect to these platforms, but you are also able to build your own custom channels if needed.

Here’s an agent hooked up to answer Slack mentions. The channel verifies the event, and then dispatches the request to a new instance of the assistant agent:

// src/channels/slack.ts<br>import { dispatch } from '@flue/runtime';<br>import { createSlackChannel } from '@flue/slack';<br>import assistant from '../agents/assistant.ts';

export const channel = createSlackChannel({<br>signingSecret: process.env.SLACK_SIGNING_SECRET!,<br>async events({ payload }) {<br>const event = payload.event;<br>await dispatch(assistant, {<br>id: event.channel,<br>input: { type: 'slack.mention', text: event.text },<br>});<br>},<br>});<br>The same pattern works across Flue’s growing set of first-party channels, so your agents can meet users wherever work already happens.

The Flue Ecosystem [Browse]

Building an AI-First Flue Ecosystem

Until recently, extending a framework like Flue required third-party packages, multi-step guides, and rigid codemods. These tools could automate a few predetermined changes, but the difficult work still fell to you: understanding the instructions, adapting them to your project, and finishing everything the installer could not.

Coding agents changed everything, so we designed Flue to take...

flue agents workflows agent channels slack

Related Articles