Import from canopy.json
Already have a map as JSON? Paste it and Canopy renders the architecture on the canvas, ready to edit. Useful when a map was exported from Canopy, generated by a script, or written by an agent - anything that follows the map syntax.
Paste a map
New map → Paste canopy.json
On the dashboard or the Maps page, open New map and pick Paste canopy.json.
Paste & name it
Paste the JSON. It must be an object with a nodes array. Canopy auto-fills
the map name from the file's name; pick a category.
Import
Canopy validates and sanitises the JSON, then opens the rendered map on the canvas.
The smallest valid file is an object with a nodes array (edges are optional):
{
"name": "My Stack",
"nodes": [
{ "id": "web", "label": "Web", "brand": "nextdotjs" },
{ "id": "api", "label": "API", "brand": "nodedotjs" }
],
"edges": [{ "source": "web", "target": "api" }]
}See Map syntax for every field and its accepted
values, and the Icon library for brand slugs.
Don't have a file? Generate one with AI
Don't hand-write the JSON. Copy the prompt below into ChatGPT, Claude, Gemini or any LLM, paste in your own architecture (a description, your README, or an infra list), and paste the JSON it returns into Paste canopy.json. The prompt tells the model to read these docs first, so it uses the right schema and real icon slugs.
Paste this into ChatGPT, Claude, Gemini or any LLM, add your own architecture (a description, your README, or an infra list), and paste the JSON it returns into Paste canopy.json.
You are an expert software architect. Generate a `canopy.json` architecture map for Canopy (https://canopy.8starlabs.com).
First, read Canopy's machine-readable docs so you use the exact schema and only valid icon slugs:
- Map schema (every field + accepted values): https://canopy.8starlabs.com/docs/maps/architecture-as-code.md
- Icon / brand slugs: https://canopy.8starlabs.com/docs/maps/icons.md
- Full docs in one file (optional): https://canopy.8starlabs.com/llms-full.txt
Then, from the architecture I describe at the bottom, output ONLY a valid canopy.json - a single JSON object, no prose and no markdown code fence - shaped like:
{
"name": "<short map name>",
"nodes": [
{ "id": "web", "label": "Web app", "brand": "nextdotjs", "group": "Frontend" },
{ "id": "api", "label": "API", "brand": "nodedotjs", "group": "Backend" }
],
"edges": [ { "source": "web", "target": "api" } ]
}
Rules:
- Every node needs a unique `id` and a `label`. Use a real `brand` slug from the icon library above; if nothing fits, omit `brand` (Canopy renders a generic box).
- Add `edges` for real dependencies / data flow (`source` and `target` reference node ids).
- Optionally add `group` (a logical layer) and, if I give you costs, spend metadata per the schema.
- Be accurate to what I describe - do not invent services.
My system:
<paste your architecture here: a description, your README / docs, your infra list, or a repo file tree>This is also how you map a stack that lives on GitLab, Bitbucket, or any non-GitHub remote: point the model at your repo or docs and import the result.
What's validated
Canopy is forgiving - a slightly-off file still imports cleanly:
Free plan limits still apply
Importing counts as creating a map, so the Free 2-maps-per-workspace limit applies - if you're already at the limit, free up a slot or upgrade to Pro first. Pro is unlimited.
Combining approaches
You can mix methods on the same map afterwards - paste a base architecture, then hand-add the services that weren't in the file, or export it back to JSON to round-trip through your own tools.