Venture Canvas
The Canvas tab renders interactive, venture-aware surfaces using the A2UI v0.8 protocol. These surfaces work on macOS, iOS, Android (native WebView), and the web portal — same data, same layout, every platform.
Surfaces
The Canvas generates 4 surfaces from venture data:
kaneru-overview
Stats cards (venture count, active missions, fuel spent) plus a scrollable list of venture cards with prefix, status, agent count, and fuel bar.
kaneru-missions
Mission kanban board with 5 columns: Queued, Ready, Active, Review, Complete. Each card shows identifier, priority, title, and claimed agent. Ready missions have a Claim button; Active missions have a Complete button.
kaneru-chain
Chain of command tree visualization. Each node shows agent ID and role, with indentation indicating the escalation hierarchy.
kaneru-fuel
Fuel analytics dashboard with total spent, burn rate (cents/hour), days remaining, and a by-provider breakdown. Includes a Refresh button for live updates.
A2UI Protocol
Surfaces are built from A2UI v0.8 JSONL — a line-delimited JSON format with two message types:
surfaceUpdate— declares components (the building blocks)beginRendering— tells the host which component is the root
Components
| Component | Purpose |
|---|---|
Column | Vertical stack of children |
Row | Horizontal stack of children |
Card | Bordered container with children |
Text | Text with a usage hint (h1, h2, h3, h4, body, caption) |
Button | Clickable action with a label and action string |
Divider | Horizontal separator |
Example JSONL
json{"surfaceUpdate":{"surfaceId":"kaneru-overview","components":[ {"id":"root","component":{"Column":{"children":{"explicitList":["title","stats"]}}}}, {"id":"title","component":{"Text":{"text":{"literalString":"Ventures"},"usageHint":"h2"}}}, {"id":"stats","component":{"Row":{"children":{"explicitList":["s1","s2"]}}}} ]}} {"beginRendering":{"surfaceId":"kaneru-overview","root":"root"}}
Interactive Actions
Buttons in the Canvas trigger real actions:
- Claim (on Ready missions) — sends a
claim:<missionId>action that claims the mission for the current agent - Complete (on Active missions) — sends a
complete:<missionId>action to transition the mission - Refresh (on fuel surface) — reloads fuel analytics data
The Canvas host intercepts these action strings and dispatches them to the Gateway via WebSocket.
Platforms
| Platform | How It Works |
|---|---|
| macOS app | Native WKWebView with A2UI JSONL renderer |
| iOS app | WKWebView via NodeAppModel+Canvas |
| Android app | WebView via A2UIHandler |
| Web portal | Embedded A2UI host at http://localhost:18789 in the Canvas tab |
All platforms render the same JSONL output — the A2UI host handles layout and styling per platform.
Gateway Method
The Canvas surfaces are generated via the kaneru.canvas gateway method:
kaneru.canvas → { surfaceId?, ventureId? }
- Omit
surfaceIdto generate all 4 surfaces - Specify
surfaceId(e.g.kaneru-missions) for a single surface - Specify
ventureIdto scope data to one venture
Web Portal
Open the Canvas tab in the web portal:
bashmayros dashboard # Navigate to the Canvas tab
Or directly at http://localhost:18789 → Canvas tab.
The portal embeds the A2UI host component and renders surfaces inline. Button clicks dispatch actions through the existing Gateway WebSocket connection.
Next Steps
- Control UI — the web portal that hosts the Canvas tab
- Command Bar — quick access overlay with venture context
- Kaneru Overview — full system overview