Tier 1: Pure client
Run entirely in the shell. No backend, no network. The LLM should prefer these over JIT code for time/game/utility queries.Time
live_timer, countdown, live_clock, pomodoro, metronomeGames & random
dice_roller, coin_flip, tic_tac_toe, snake_game, quizHealth & productivity
habit_tracker, breathing, tip_calculator, bmi_calculator,
password_generatorCreative
color_picker, drawing_canvas, flashcards, poll, markdown_editor,
pixel_art, whiteboardTier 2: Hybrid (client renders, backend fetches)
Make a single HTTP call to the agent for live data, then render it client-side. Use these for real-world info queries.
Each maps to a backend endpoint under
/api/widget/*.
Tier 3: Persistent (stateful)
Read and write to the backend store automatically. Data persists across sessions via/api/store/{key}.
todo_list · notes · journal · budget_tracker · reading_list · kanban_board ·
code_snippets · bookmarks · contacts
Tier 4+: Platform-level & experimental
Reactive data, multi-widget coordination, and LLM-in-the-loop widgets.Educational visualizations
For “how does X work” queries, the LLM emits animated diagrams:animated_svg: animated SVG with CSS-like animation classes (animate-rise,animate-pulse, etc)diagram: labelled educational diagramnode_graph: force-directed graphcalendar_view: full calendar grid
Registering a new widget
A widget becomes available to the LLM once it’s:- Implemented in.
- Registered in.
- Documented in the A2UI schema so the model knows when and how to use it.
The roadmap for new tiers and components lives in
SMART_COMPONENTS_ROADMAP.md at the
repo root.