Import from canopy.json

Import from canopy.json

Already have a map as JSON? Paste it and Canopy renders the system or workflow 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

1

New map → Paste canopy.json

On the dashboard or the Maps page, open New map and pick Paste canopy.json.

2

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.

3

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):

JSON
{
  "name": "Lead review workflow",
  "nodes": [
    { "id": "form", "label": "Intake form", "brand": "typeform" },
    { "id": "agent", "label": "Review agent", "brand": "openai" },
    { "id": "approval", "label": "Human approval", "brand": "generic-approval" }
  ],
  "edges": [
    { "source": "form", "target": "agent" },
    { "source": "agent", "target": "approval" }
  ]
}

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 or workflow (a description, README, SOP, agent flow, or 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.

Generate canopy.json with an LLM

Paste this into ChatGPT, Claude, Gemini or any LLM, add your own system or workflow (a description, your README, SOP, agent flow, or infra list), and paste the JSON it returns into Paste canopy.json.

You are an expert software architect and workflow designer. Generate a `canopy.json` 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 system or workflow 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", "tech": "Next.js", "brand": "nextdotjs", "x": 80, "y": 120 },
    { "id": "agent", "label": "Review agent", "tech": "OpenAI", "brand": "openai", "purpose": "Classifies inbound requests", "x": 320, "y": 120 },
    { "id": "approval", "label": "Human approval", "tech": "review step", "brand": "generic-approval", "x": 560, "y": 120 }
  ],
  "edges": [
    { "source": "web", "target": "agent", "label": "submits request" },
    { "source": "agent", "target": "approval", "label": "needs review" }
  ]
}

Rules:
- Every node needs a unique `id` and a `label`. Use a real `brand` slug from the icon library above; for internal workflow steps use generic slugs like `generic-workflow`, `generic-agent`, `generic-approval`, `generic-webhook`, `generic-job`, or `generic-decision`.
- Add `edges` for real dependencies, handoffs, data flow, approval flow, or workflow order (`source` and `target` reference node ids).
- Optionally add `tech`, `spend`, `purpose`, `billing`, `x`, and `y` per the schema.
- Be accurate to what I describe - do not invent services, apps, agents, or manual steps.

My system or workflow:
<paste your architecture or workflow here: a description, your README / docs, your infra list, SOP, AI agent flow, customer journey, or repo file tree>

This is also how you map a stack that lives on GitLab, Bitbucket, or any non-GitHub remote, or a workflow that lives in a doc, runbook, or SOP: point the model at the source material and import the result.

What's validated

Canopy is forgiving - a slightly-off file still imports cleanly:

SituationWhat happens
Not valid JSON, or no nodes arrayRejected before the map is created - nothing is saved.
Unknown brand slugFalls back to a generic box node.
Edge source/target with no matching idThat edge is dropped; the rest import.
HTML / scripts / hidden unicode in fieldsStripped on import (the same sanitisation applied on every save).
Very large fileCapped (512 KB) so a runaway file can't be imported.

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 or workflow, then hand-add the services, agents, approvals, and jobs that weren't in the file, or export it back to JSON to round-trip through your own tools.

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.