Substrate-neutral runtime for live agent UIs. The missing rendering primitive between A2UI and AP2.
AgentFrame is an open-source runtime that lets LLM agents emit live, interactive UIs that render across three substrates from a single manifest:
- Browser — via the WICG
html-in-canvasspec (<canvas layoutsubtree>,drawHTMLElement,setHitTestRegions) - Terminal — via Ratatui (+ optional Ratty Graphics Protocol for inline 3D)
- MCP bridge — routes legacy MCP servers through mcp-ui
The agent-protocol stack converging in 2025–2026 (Google Developers Blog) has six layers — MCP, A2A, UCP, AG-UI, A2UI, AP2 — and a load-bearing seam between A2UI (rendering) and AP2 (payment signing). AP2 defines a "Trusted Surface" but doesn't specify the UI. A2UI defines UI primitives but is AP2-unaware.
AgentFrame is the bridge.
Pre-alpha. Pre-build. Currently in Phase 0 (validation).
PMF bar: ≥10 GitHub stars in the 30 days post-launch, or this project is publicly marked POC FAILED and shelved. We mean it.
See SPEC.md for the phased specification.
| Phase | Status | Target |
|---|---|---|
| 0 — Pre-build validation | 🟡 active | Day 1 |
| 1 — Foundation | ⚪ queued | Week 1 |
| 2 — Browser substrate | ⚪ queued | Week 2 |
| 3 — Additional substrates | ⚪ queued | Week 3 |
| 4 — Integration & demos | ⚪ queued | Week 4 |
| 5 — Landing page & launch | ⚪ queued | Week 5 |
| Day-31 kill-gate review | ⚪ queued | Week 9 |
- One issue = one task. Subissues are nested via
Tracked by #Nreferences. - PR descriptions are handoff documents — every PR's description is the next-task brief for whoever picks up the work. See
.github/PULL_REQUEST_TEMPLATE.md. - Public kill-gate. A 31-day automated check posts to this README. If the PMF bar isn't cleared, the README header changes to
POC FAILEDand active work stops.
agentframe-org/agentcheckout— Trusted Surface implementation for AP2 mandates (POC #2)agentframe-org/pixeltruth(coming) — VLM-native QA harness (POC #1)agentframe-org/opshandoff(coming) — SRE incident console (POC #3)
┌─────────────────────────────────────────────────────────────┐
│ AGENT (any LLM/VLM, any transport: MCP / A2A / HTTP) │
│ Emits AgentFrame Manifest │
└────────────────────────────┬────────────────────────────────┘
▼ [transport adapter]
┌─────────────────────────────────────────────────────────────┐
│ @agentframe/core │
│ - Manifest validator + schema versioning │
│ - CRDT mutation log + transactional commit │
│ - A2UI binding (data-a2ui-action / data-a2ui-state) │
│ - Mandate router → privileged substrate surface │
└──┬───────────────────────┬───────────────────────┬──────────┘
▼ browser ▼ terminal ▼ mcp
┌──────────────────┐ ┌──────────────────┐ ┌────────────────┐
│ html-in-canvas │ │ Ratatui + │ │ mcp-ui bridge │
│ + WebAuthn │ │ Ratty (optional)│ │ │
└──────────────────┘ └──────────────────┘ └────────────────┘
Apache-2.0. See LICENSE.
See CONTRIBUTING.md.