Skip to content

Visual Builder

The Flow-Like Visual Builder is a drag-and-drop interface for creating A2UI pages and widgets. It produces the same A2UI JSON format that AI agents generate—making human and AI work fully interchangeable.

┌─────────────────────────────────────────────────────────────────────┐
│ Human + AI Collaboration │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Visual Builder │ │ AI Agent │ │
│ │ (Human) │ │ (Automated) │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ └────────────┬───────────────────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ A2UI │ │
│ │ Format │ │
│ └──────┬──────┘ │
│ │ │
│ ┌─────────────┼─────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Edit │ │ Share │ │ Render │ │
│ │ in Both │ │ Export │ │ Live │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ Flow-Like Builder [Page ▾] [Save] │
├───────────┬─────────────────────────────────────────────┬───────────────────┤
│ │ │ │
│ PALETTE │ CANVAS │ INSPECTOR │
│ │ │ │
│ ─────────│ ┌────────────────────────────────────┐ │ PROPERTIES │
│ Layout │ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │ ─────────── │
│ ┌──────┐ │ │ │ KPI │ │ KPI │ │ KPI │ │ │ Label: Revenue │
│ │ Row │ │ │ └──────┘ └──────┘ └──────┘ │ │ Size: [M ▾] │
│ └──────┘ │ │ │ │ │
│ ┌──────┐ │ │ ┌────────────────────────────┐ │ │ BINDINGS │
│ │Column│ │ │ │ │ │ │ ─────────── │
│ └──────┘ │ │ │ Line Chart │ │ │ Value: │
│ │ │ │ │ │ │ [/revenue ▾] │
│ Display │ │ └────────────────────────────┘ │ │ │
│ ┌──────┐ │ │ │ │ ACTIONS │
│ │ Text │ │ │ ┌────────────────────────────┐ │ │ ─────────── │
│ └──────┘ │ │ │ Orders Table │ │ │ On Click: │
│ ┌──────┐ │ │ │ Name | Date | Amount │ │ │ [view-details] │
│ │Image │ │ │ │ ─────────────────── │ │ │ │
│ └──────┘ │ │ │ John | Dec 1 | $500 │ │ │ STYLE │
│ │ │ └────────────────────────────┘ │ │ ─────────── │
│ Input │ │ │ │ Padding: 16px │
│ ┌──────┐ │ └────────────────────────────────────┘ │ Background: ○ │
│ │Button│ │ │ │
│ └──────┘ │ │ │
│ ┌──────┐ │ │ │
│ │ Form │ │ │ │
│ └──────┘ │ │ │
│ │ │ │
├───────────┴─────────────────────────────────────────────┴───────────────────┤
│ LAYERS: [Page] > [Header Row] > [KPI Card] 📱 💻 🖥️ [Undo] │
└─────────────────────────────────────────────────────────────────────────────┘
AreaPurpose
PaletteComponents you can drag onto the canvas
CanvasVisual representation of your page/widget
InspectorConfigure selected component’s properties
LayersNavigate the component hierarchy
  1. Click a component in the palette
  2. Drag to the canvas
  3. Drop where you want it
  4. Configure in the inspector
  • Drag components to reorder within containers
  • Hover on edges to see insertion points
  • Drop between siblings to insert

Containers (Row, Column, Card) accept children:

┌─────────────────────────────────────────┐
│ Row Container │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Drop │ │ Child 1 │ │ Child 2 │ │
│ │ Here │ │ │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────┘

Configure the selected component:

┌─────────────────────────────────┐
│ PROPERTIES │
├─────────────────────────────────┤
│ Label │
│ [Total Revenue ] │
│ │
│ Size │
│ ○ Small ● Medium ○ Large │
│ │
│ Show Trend │
│ [✓] │
│ │
│ Icon │
│ [chart-line ▾] │
└─────────────────────────────────┘

Connect to flow data:

┌─────────────────────────────────┐
│ BINDINGS │
├─────────────────────────────────┤
│ Value │
│ [/flows/metrics/revenue ▾] │
│ │
│ Trend │
│ [/flows/metrics/trend ▾] │
│ │
│ Available Data: │
│ ├─ /flows/metrics/revenue │
│ ├─ /flows/metrics/orders │
│ └─ /context/user │
└─────────────────────────────────┘

Define user interactions:

┌─────────────────────────────────┐
│ ACTIONS │
├─────────────────────────────────┤
│ On Click │
│ [Trigger Flow ▾] │
│ Flow: [get-details ▾] │
│ │
│ On Hover │
│ [Show Tooltip ▾] │
│ Content: "View details" │
│ │
│ [+ Add Action] │
└─────────────────────────────────┘

Test your creation before saving:

ModeDescription
📱 MobilePhone-sized viewport
💻 TabletTablet-sized viewport
🖥️ DesktopFull-width preview
Live DataConnect to real flows
┌─────────────────────────────────────────┐
│ Preview: Mobile [×] │
├─────────────────────────────────────────┤
│ ┌─────────────────────────────────┐ │
│ │ 📱 Mobile View │ │
│ │ ┌───────────────────────┐ │ │
│ │ │ Revenue $124,500 │ │ │
│ │ │ ▲ 12.5% │ │ │
│ │ └───────────────────────┘ │ │
│ │ ┌───────────────────────┐ │ │
│ │ │ Orders 1,234 │ │ │
│ │ │ ▲ 8.2% │ │ │
│ │ └───────────────────────┘ │ │
│ │ ┌───────────────────────┐ │ │
│ │ │ Chart │ │ │
│ │ └───────────────────────┘ │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
ShortcutAction
Ctrl/Cmd + SSave
Ctrl/Cmd + ZUndo
Ctrl/Cmd + Shift + ZRedo
Ctrl/Cmd + CCopy component
Ctrl/Cmd + VPaste component
Ctrl/Cmd + DDuplicate
DeleteRemove component
EscapeDeselect

The builder includes AI features:

Describe what you want to add:

┌─────────────────────────────────────────┐
│ 🤖 Ask AI │
├─────────────────────────────────────────┤
│ "Add a chart showing revenue by month │
│ below the KPI cards" │
│ │
│ [Generate] │
└─────────────────────────────────────────┘

Get recommendations based on your design:

┌─────────────────────────────────────────┐
│ 💡 Suggestions │
├─────────────────────────────────────────┤
│ • Add responsive breakpoints │
│ • Consider a loading state for chart │
│ • Table might benefit from pagination │
│ │
│ [Apply] [Dismiss] │
└─────────────────────────────────────────┘

The builder saves your work as A2UI JSON:

{
"surfaceUpdate": {
"components": [
{"id": "root", "component": {"Column": {"children": {"explicitList": ["header", "content"]}}}},
{"id": "header", "component": {"Row": {"children": {"explicitList": ["kpi-1", "kpi-2", "kpi-3"]}}}},
{"id": "kpi-1", "component": {"Card": {"child": "kpi-1-content"}}},
...
]
}
}

This is the same format AI agents produce—meaning you can:

  • Open AI-generated UIs in the builder
  • Have AI modify what you built manually
  • Export for use anywhere A2UI is supported