Build by hand

Build by hand

Start with a blank canvas and drop nodes one at a time. Good for greenfield systems, services not in your repo, or anything you want to sketch before you build it.

Naming your map

Set the map's name and description in the Canvas tab of the right panel. Both have a limit and show a live character counter as you type:

FieldLimitNotes
Nameup to 40 charactersShown on the canvas, in the maps list, and in exports
Descriptionup to 280 charactersOptional summary shown in the maps list and share cards

The limits are enforced in the editor and again on save, so anything longer is trimmed to fit.

Adding nodes

Click Add node (or the + button in the toolbar) to open the integration picker. Search 200+ services - pick one and Canopy fills in the name and brand icon automatically.

If the service isn't in the library, use a Custom node from the top of the picker. These carry a generic icon - database, server, compute, storage, cloud, queue, cache, notebook, and more - so you can represent anything that doesn't have a brand mark. Drop one, rename it, and set its cost like any other node. To change a node's icon later, type a keyword in the Technology field in the inspector and pick a suggested mark (brand or generic).

Custom nodes still count toward spend and node totals, but they're excluded from the technology and tool-usage stats (they don't represent a specific tool).

Each node has the same fields in the Inspector panel on the right:

FieldWhat it does
NameHow this service is labelled on the canvas
TechnologyRuntime, framework, or vendor - e.g. Node.js · Express
IconThe brand mark. Type a technology and Canopy suggests matching marks from its 485-icon library - click one to set it
PurposeOne-line description shown in exports and the inspector
Monthly costAttached spend rolls up to the group and workspace totals
Billing modelUsage-based, flat, per-seat, or custom

Drawing edges

Hover any node to reveal the edge handle on its right side. Drag it onto another node to draw a directed arrow - web → api → db. Edges describe request flow and don't count toward your node limit.

Double-click any edge to add a label (gRPC, webhook, REST, async) for clarity. Hit Auto-layout in the toolbar to re-flow the whole graph at any time.

WebAPIDBCache
drag the edge handle on any node to connect services

Find & fix issues

Press F (Ctrl F on Windows) to find a node by name or technology - start typing and pick a match to jump straight to it on the canvas.

The toolbar also runs a live map lint. The Issues panel (the checklist icon in the left rail, or the ⚠ badge by the map name) flags the things a JSON paste or AI-generated map tends to leave broken:

  • Dangling edges - an edge whose source or target node doesn't exist
  • Duplicate node ids
  • Unknown or missing icons - an icon slug Canopy doesn't recognise, or none set
  • Missing spend - a node with no monthly cost (a suggestion, not an error)

Click any node-scoped issue to select and centre that node.

Keyboard shortcuts

Press ? anywhere in the editor to open this cheat-sheet (or click the keyboard icon in the toolbar). On Windows and Linux, is Ctrl.

ShortcutAction
SSave map
ZUndo
Shift ZRedo
FFind a node
VSelect tool
HPan tool
Shift + clickAdd to selection
DeleteDelete selection
Ctrl SpaceAutocomplete (code)
?Toggle this help
EscClose panels / search

Undo and redo also cover canvas drags - move a node and Z puts it back.

Combining approaches

You can mix methods on the same map. A common pattern: import a repo to detect the core services, then hand-add the third-party SaaS tools (Stripe, Segment, Slack) that don't show up in a lockfile.

to paste into any AI.

Ask ChatGPT about this page.

Ask Claude about this page.

Need help? Sign in to chat with support

Have ideas?

General inquiry? Email support.