Skip to content

Repository files navigation

leaf

maintained with tend

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.

leaf demo

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.

Install

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

Experimental Codex MCP App

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.

Packages

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

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.

About

Generative UI for your agent

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages