AgentCanvas / Pages / Developer Guide / Core / Decisions / Canvas / ADR-canvas-001
2026-03-27
Date
2026-03-27
Status
accepted
Field
canvas
Old ID
ADR-008

Context

The current canvas enforces a fixed two-layer split: an outer graph (Env → AgentLoop → Output) and an inner graph (reasoning nodes inside AgentLoop). This forces a rigid pipeline structure — users can't freely wire environment, reasoning, and output nodes on one surface. NodeSets (Habitat, SAM) are invisible infrastructure that currently has no management UI — the Habitat server is awkwardly controlled from inside a canvas node. ComfyUI's flat workspace model proves that researchers prefer one canvas where all nodes coexist, with heavy resources (models, simulators) managed separately.

Decision

(1) Flat workspace: Remove the outer/inner layer split. All node types (environment, model, reasoning, control, output) live on one canvas. The workspace IS a GraphDefinition. No more AgentLoopCanvasNode as a mandatory wrapper — it becomes just another optional composite. (2) NodeSet Manager page: A dedicated page (third nav tab alongside Canvas and Eval) for managing NodeSets, plugin servers, and environments. Load/unload nodesets, start/stop servers, rescan workspace/. (3) Dynamic sidebar catalog: The canvas sidebar only shows tools from activated NodeSets + built-in nodes. Loading a NodeSet makes its tools appear in the catalog; unloading removes them. (4) Backend API already exists: GET/POST /api/components/nodesets/{name}/load|unload and GET/POST /api/components/servers/{name}/start|stop|restart — the work is frontend-only.

Alternatives

(a) Keep two-layer canvas, add NodeSet management as a modal dialog. (b) Show all tools always (even from unloaded NodeSets), gray out unavailable ones. (c) Manage NodeSets via canvas nodes (current Habitat approach).

Rationale

Flat workspace matches how researchers think — they want to wire "observe → think → act" directly, not navigate into a sub-editor. Separating NodeSet management from the canvas follows the infrastructure/workspace split: NodeSets are heavy (GPU, simulators), tools are lightweight (node references). This is exactly the ComfyUI model manager pattern. The backend API is already complete — this is purely a frontend restructuring. ADR-legacy-001 (two-layer canvas) is superseded for the default experience, but composites (ADR-dataflow-001) remain available for optional grouping.

Affected docs

architecture.md, blueprint.md, glossary.md, roadmap.md