Not ready for general use. Watch this space, and hopefully there'll be more to say soon.
Generative UI for agents: the agent builds you the page rather than a scroll of terminal text — a plan whose options you press to decide, a triage board you drag, a dashboard that keeps up while a long job runs. When the project needs a widget that doesn't exist, the agent writes one, and the same theme and checks cover it.
Underneath is a messaging and collaboration bus. Select any line and comment on it
like a shared doc, or drag a card, or rewrite a draft in your own words: it all
reaches the session as structured events, and the agent answers in the margin and
updates the page. You can also answer with one press: ok no lost cut more.
Every valid save becomes a live revision; meaningful checkpoints become immutable
stamped versions. The browser follows along on its own. Leaf is a plugin —
Claude Code and Codex so far.
https://leaf.page/ is the tour, the mechanism, the example pages, and the guide to
themes and project widgets. Each page uses leaf's own theme, so they double as
specimens, and each opens the same from a checkout (docs/) as from the web.
Claude Code:
/plugin marketplace add max-sixty/leaf
/plugin install leaf@leaf
Codex:
codex plugin marketplace add max-sixty/leaf
codex plugin add leaf@leaf
The Codex plugin registers a bundled, local MCP server. This path is included so we can test an embedded Leaf review in installed Codex builds; the experiment will decide whether Leaf removes it, keeps the compact surface, or builds on it. It is not a commitment to replace the browser runtime.
On Codex builds that render MCP Apps, the agent can attach the compact review directly to the task. The page and event log remain ordinary local files, while comments travel back as a follow-up turn. MCP App rendering is still gated in some Codex builds, so Leaf falls back to its full browser page and detached delivery loop there. The browser remains the full-fidelity surface for widget actions such as dragging and choosing.
No config or account is required. It needs
uv and
jq 1.6 or newer on PATH (the plugin is a
uv project, and the first run syncs its environment through whatever index you have
already configured), plus a browser on the same machine as the session.
Then ask the agent for a page. The explicit skill is /leaf [topic] in Claude Code
and $leaf [topic] in Codex; with no argument it presents whatever the session is
currently about.
A package carries a reusable theme, widget, browser module, data contract, or role guide. Leaf's own content widgets use this contract. The package tutorial builds a small one; the package reference owns the complete contract.
examples/ holds a complete page for each kind of work, including a
dashboard meant to change as work finishes. They are live in the visual index at
https://leaf.page/examples.html; every example opens as its own complete page.
From a checkout, scripts/site.py --serve previews that catalog and all its routes;
scripts/preview.py triage-board serves one page with the real agent loop behind it.
