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:

  1. surfaceUpdate β€” declares components (the building blocks)
  2. beginRendering β€” tells the host which component is the root

Components

ComponentPurpose
ColumnVertical stack of children
RowHorizontal stack of children
CardBordered container with children
TextText with a usage hint (h1, h2, h3, h4, body, caption)
ButtonClickable action with a label and action string
DividerHorizontal 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

PlatformHow It Works
macOS appNative WKWebView with A2UI JSONL renderer
iOS appWKWebView via NodeAppModel+Canvas
Android appWebView via A2UIHandler
Web portalEmbedded 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 surfaceId to generate all 4 surfaces
  • Specify surfaceId (e.g. kaneru-missions) for a single surface
  • Specify ventureId to scope data to one venture

Web Portal

Open the Canvas tab in the web portal:

bash
mayros 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