# tsingliuwin/boundless architecture

> Architecture diagram of the GitHub repository tsingliuwin/boundless, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tsingliuwin/boundless
- Repository: https://github.com/tsingliuwin/boundless

## Overview

boundless is a Rust/GPUI infinite whiteboard with an AI agent that creates and edits canvas content through tools. The main workflow runs from a user’s canvas or chat interaction, through scene and drawing operations, to rendered content; AI requests add skill routing, model calls, and tool-mediated canvas updates. The graph also includes documented presentation, workspace persistence, and updating capabilities. Relationships for unsampled subsystems rely on README statements or SOURCE INDEX references; those sources do not expose every runtime detail.

Main entry points: [`src/board.rs`](https://github.com/tsingliuwin/boundless/blob/main/src/board.rs) (Board View), [`src/ai/agent.rs`](https://github.com/tsingliuwin/boundless/blob/main/src/ai/agent.rs) (AI Agent), [`src/ai/panel.rs`](https://github.com/tsingliuwin/boundless/blob/main/src/ai/panel.rs) (AI Panel), [`src/render/rough.rs`](https://github.com/tsingliuwin/boundless/blob/main/src/render/rough.rs) (Rough Renderer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_canvas["Canvas Interaction"]
  node_board["Board View<br/>[board.rs]"]
  node_tools["Drawing Tools<br/>[tools.rs]"]
  node_camera["Camera<br/>[camera.rs]"]
  node_ink["Ink Pipeline<br/>[collector.rs]"]
  node_platform["Pen Input<br/>[platform.rs]"]
end

subgraph group_content["Scene and Rendering"]
  node_scene["Scene Model<br/>[element.rs]"]
  node_pages["Pages<br/>[pages.rs]"]
  node_mindmap["Mindmap Layout<br/>[mindmap.rs]"]
  node_render["Rough Renderer<br/>[rough.rs]"]
  node_raster["Raster Renderer<br/>[raster.rs]"]
  node_cache["Render Cache<br/>[cache.rs]"]
end

subgraph group_ai["AI Creation"]
  node_agent["AI Agent<br/>[agent.rs]"]
  node_client["AI Client Types<br/>[client.rs]"]
  node_ai_tools["Canvas AI Tools<br/>[tools.rs]"]
  node_canvas_ops["Canvas Operations<br/>[canvas_ops.rs]"]
  node_skills["Creative Skills<br/>[skills.rs]"]
  node_chat_store[("Chat Storage<br/>[store.rs]")]
  node_ai_panel["AI Panel<br/>[panel.rs]"]
end

subgraph group_app["Workspace and App"]
  node_workspace[("Workspace<br/>[workspace.rs]")]
  node_settings["Settings<br/>[settings_page.rs]"]
  node_updater["Auto Updater<br/>[updater.rs]"]
end

node_user(("User"))
node_model(("OpenAI-Compatible Model"))

node_user -->|"draws on"| node_board
node_board -->|"handles input"| node_tools
node_board -->|"edits"| node_scene
node_board -->|"transforms view"| node_camera
node_board -->|"collects strokes"| node_ink
node_platform -->|"supplies pressure"| node_ink
node_board -->|"presents pages"| node_pages
node_board -->|"renders canvas"| node_render
node_render -->|"rasterizes"| node_raster
node_render -->|"uses cache"| node_cache
node_agent -->|"registers tools"| node_ai_tools
node_ai_tools -->|"emits operations"| node_canvas_ops
node_ai_panel -->|"runs agent"| node_agent
node_ai_panel -->|"applies operations"| node_board
node_agent -->|"routes skills"| node_skills
node_ai_panel -->|"persists chats"| node_chat_store
node_ai_panel -->|"uses workspace data"| node_workspace
node_settings -->|"configures AI"| node_ai_panel
node_agent -->|"uses runtime types"| node_client
node_agent -->|"streams requests"| node_model
node_ai_tools -->|"lays out maps"| node_mindmap
node_workspace -->|"stores boards"| node_scene
node_user -.->|"checks updates"| node_updater

click node_board "https://github.com/tsingliuwin/boundless/blob/main/src/board.rs"
click node_tools "https://github.com/tsingliuwin/boundless/blob/main/src/tools.rs"
click node_camera "https://github.com/tsingliuwin/boundless/blob/main/src/camera.rs"
click node_ink "https://github.com/tsingliuwin/boundless/blob/main/src/ink/collector.rs"
click node_platform "https://github.com/tsingliuwin/boundless/blob/main/src/platform.rs"
click node_scene "https://github.com/tsingliuwin/boundless/blob/main/src/scene/element.rs"
click node_pages "https://github.com/tsingliuwin/boundless/blob/main/src/scene/pages.rs"
click node_mindmap "https://github.com/tsingliuwin/boundless/blob/main/src/scene/mindmap.rs"
click node_render "https://github.com/tsingliuwin/boundless/blob/main/src/render/rough.rs"
click node_raster "https://github.com/tsingliuwin/boundless/blob/main/src/render/raster.rs"
click node_cache "https://github.com/tsingliuwin/boundless/blob/main/src/render/cache.rs"
click node_agent "https://github.com/tsingliuwin/boundless/blob/main/src/ai/agent.rs"
click node_client "https://github.com/tsingliuwin/boundless/blob/main/src/ai/client.rs"
click node_ai_tools "https://github.com/tsingliuwin/boundless/blob/main/src/ai/tools.rs"
click node_canvas_ops "https://github.com/tsingliuwin/boundless/blob/main/src/ai/canvas_ops.rs"
click node_skills "https://github.com/tsingliuwin/boundless/blob/main/src/ai/skills.rs"
click node_chat_store "https://github.com/tsingliuwin/boundless/blob/main/src/ai/store.rs"
click node_ai_panel "https://github.com/tsingliuwin/boundless/blob/main/src/ai/panel.rs"
click node_workspace "https://github.com/tsingliuwin/boundless/blob/main/src/workspace.rs"
click node_settings "https://github.com/tsingliuwin/boundless/blob/main/src/settings_page.rs"
click node_updater "https://github.com/tsingliuwin/boundless/blob/main/src/updater.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_board,node_tools,node_camera,node_ink,node_platform,node_user toneBlue
class node_scene,node_pages,node_mindmap,node_render,node_raster,node_cache toneAmber
class node_agent,node_client,node_ai_tools,node_canvas_ops,node_skills,node_chat_store,node_ai_panel toneMint
class node_workspace,node_settings,node_updater toneRose
class node_model toneIndigo
```

## Components

### Canvas Interaction

- [Board View](https://github.com/tsingliuwin/boundless/blob/main/src/board.rs): `src/board.rs`
- [Drawing Tools](https://github.com/tsingliuwin/boundless/blob/main/src/tools.rs): `src/tools.rs`
- [Camera](https://github.com/tsingliuwin/boundless/blob/main/src/camera.rs): `src/camera.rs`
- [Ink Pipeline](https://github.com/tsingliuwin/boundless/blob/main/src/ink/collector.rs): `src/ink/collector.rs`
- [Pen Input](https://github.com/tsingliuwin/boundless/blob/main/src/platform.rs): `src/platform.rs`

### Scene and Rendering

- [Scene Model](https://github.com/tsingliuwin/boundless/blob/main/src/scene/element.rs): `src/scene/element.rs`
- [Pages](https://github.com/tsingliuwin/boundless/blob/main/src/scene/pages.rs): `src/scene/pages.rs`
- [Mindmap Layout](https://github.com/tsingliuwin/boundless/blob/main/src/scene/mindmap.rs): `src/scene/mindmap.rs`
- [Rough Renderer](https://github.com/tsingliuwin/boundless/blob/main/src/render/rough.rs): `src/render/rough.rs`
- [Raster Renderer](https://github.com/tsingliuwin/boundless/blob/main/src/render/raster.rs): `src/render/raster.rs`
- [Render Cache](https://github.com/tsingliuwin/boundless/blob/main/src/render/cache.rs): `src/render/cache.rs`

### AI Creation

- [AI Agent](https://github.com/tsingliuwin/boundless/blob/main/src/ai/agent.rs): `src/ai/agent.rs`
- [AI Client Types](https://github.com/tsingliuwin/boundless/blob/main/src/ai/client.rs): `src/ai/client.rs`
- [Canvas AI Tools](https://github.com/tsingliuwin/boundless/blob/main/src/ai/tools.rs): `src/ai/tools.rs`
- [Canvas Operations](https://github.com/tsingliuwin/boundless/blob/main/src/ai/canvas_ops.rs): `src/ai/canvas_ops.rs`
- [Creative Skills](https://github.com/tsingliuwin/boundless/blob/main/src/ai/skills.rs): `src/ai/skills.rs`
- [Chat Storage](https://github.com/tsingliuwin/boundless/blob/main/src/ai/store.rs): `src/ai/store.rs`
- [AI Panel](https://github.com/tsingliuwin/boundless/blob/main/src/ai/panel.rs): `src/ai/panel.rs`

### Workspace and App

- [Workspace](https://github.com/tsingliuwin/boundless/blob/main/src/workspace.rs): `src/workspace.rs`
- [Settings](https://github.com/tsingliuwin/boundless/blob/main/src/settings_page.rs): `src/settings_page.rs`
- [Auto Updater](https://github.com/tsingliuwin/boundless/blob/main/src/updater.rs): `src/updater.rs`

### Other components

- **User**
- **OpenAI-Compatible Model**

## Connections

- User → Board View: draws on (evidence: `README.md`)
- Board View → Drawing Tools: handles input (evidence: `src/board.rs`)
- Board View → Scene Model: edits (evidence: `src/board.rs`)
- Board View → Camera: transforms view (evidence: `src/board.rs`)
- Board View → Ink Pipeline: collects strokes (evidence: `README.md`)
- Pen Input → Ink Pipeline: supplies pressure (evidence: `src/ink/mod.rs`)
- Board View → Pages: presents pages (evidence: `README.md`)
- Board View → Rough Renderer: renders canvas (evidence: `src/board.rs`)
- Rough Renderer → Raster Renderer: rasterizes (evidence: `src/render/mod.rs`)
- Rough Renderer → Render Cache: uses cache (evidence: `src/render/mod.rs`)
- AI Agent → Canvas AI Tools: registers tools (evidence: `src/ai/agent.rs`)
- Canvas AI Tools → Canvas Operations: emits operations (evidence: `src/ai/tools.rs`)
- AI Panel → AI Agent: runs agent (evidence: `src/ai/panel.rs`)
- AI Panel → Board View: applies operations (evidence: `src/ai/panel.rs`)
- AI Agent → Creative Skills: routes skills (evidence: `src/ai/agent.rs`)
- AI Panel → Chat Storage: persists chats (evidence: `src/ai/panel.rs`)
- AI Panel → Workspace: uses workspace data (evidence: `src/ai/panel.rs`)
- Settings → AI Panel: configures AI (evidence: `src/settings_page.rs`)
- AI Agent → AI Client Types: uses runtime types (evidence: `src/ai/agent.rs`)
- AI Agent → OpenAI-Compatible Model: streams requests (evidence: `README.md`)
- Canvas AI Tools → Mindmap Layout: lays out maps (evidence: `src/ai/tools.rs`)
- Workspace → Scene Model: stores boards (evidence: `src/workspace.rs`)
- User → Auto Updater: checks updates (evidence: `README.md`)
