Skip to content

Build1 publisher3 min readPublished

Flue 2 bets that agents are a rendering problem, not an orchestration one

Fred Schott's first stable release of Flue replaces file-based routing with React-style hooks, on the argument that an agent re-renders every turn and the harness defines it.

The Engineer · Build desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

Photograph accompanying Flue 2 bets that agents are a rendering problem, not an orchestration one
Photo: latent.space

What happened

  • Fred Schott has released version 2 of Flue, its first stable release, which has React-style "Agent Hooks" as its foundation.
  • In Flue, an agent is represented by a JavaScript function that "re-renders on every turn," meaning before every model call.
  • Flue's hooks are authored in TypeScript.
  • There are 16 built-in hooks in Flue 2, including useSkill(), useTool() and useSubagent(); developers can also add custom hooks.
  • According to the Flue 2 launch post, hooks "let you build dynamic agents that can manage their own state, listen to agent lifecycle events, and even attach different resources and capabilities dynamically to enhance themselves at runtime."

Compiled by The EngineerSomething wrong?How this is made

Why it matters

Fred Schott has shipped Flue 2, the first stable release of his agent framework, with React-style "Agent Hooks" as its foundation [1]. The load-bearing claim is not the syntax borrowing: it is that an agent is a JavaScript function that re-renders on every turn, meaning before every model call, and that what makes it an agent is the harness rather than the model [2][17].

If you accept the re-render framing, the abstraction question stops being about pipelines and starts being about what state survives between renders. That is the problem hooks were built for. Flue's hooks are authored in TypeScript, and the framework ships 16 built-in ones including useSkill(), useTool() and useSubagent(), with custom hooks supported [3][4]. According to the Flue 2 launch post, they let agents manage their own state, listen to lifecycle events, and attach resources and capabilities dynamically at runtime [5]. The practical consequence is that an agent's configuration can change as a conversation progresses: Schott's example is a support agent that pulls in an account management tool only after it has verified the user [6]. He told Latent Space that this is what "real support bots, real triage bots" require, because they cannot be fully configured in advance [7].

The more instructive part of the story is the thing that did not work. Schott launched Flue 1 publicly in early May and initially ported web framework concepts across, including file-based routing, on the assumption that five agents would live in five files exposing five routes [8][9]. His larger customers did not fit that shape. "Their whole company is one agent," he said. "They don't care about routing. There's one agent." [10] Flue 2's API therefore draws from React rather than from Astro or Next.js, on the grounds that the base-level problem is composing an agent out of many different things, not routing [11]. That is a rewrite of the central metaphor inside a single release year [19].

Underneath sits Pi, an open source minimal harness; Flue is an opinionated layer on top of it, and hosted agents in Flue 2 are now built with Vite [12][13]. Schott likens Pi's position to the one Vite occupies beneath Astro: an abstraction that does not do too much but exposes the right APIs for something more opinionated to sit on [14]. The harness itself is the bet. "Instead of you and your code driving the LLM and telling it what to do with scripts, you're putting the agent into this harness, and it is able to drive itself and work through problems," he said [15]. Schott's early position was that the harness is not a feature but fundamental to what an agent is [16].

Context worth keeping: Schott created Astro, and his company was acquired by Cloudflare in January [18]. Flue and Vercel's eve both launched this year and are setting the early template for developer agent frameworks [20]. In an earlier Latent Space interview, Sierra CEO and OpenAI chairman Bret Taylor put the field in "the jQuery era of agents, not the react era," and said the jury was still out on who the reactive agents are [21].

Watch whether the hook model survives contact with the one-agent-per-company customers who broke routing, since those are the same users whose feedback produced this API [10]. Watch whether Pi holds its position as a thin base rather than absorbing Flue's opinions, which is the failure mode the Vite comparison implicitly rules out [14]. And watch whether competing frameworks converge on per-turn re-rendering, because that, not the hook names, is the claim other people have to either adopt or reject [2].

Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories