@mediamonks/canopy-cli 0.7.5 → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/docs/cli-create.md +46 -0
  2. package/dist/docs/cli-db.md +86 -0
  3. package/dist/docs/cli-delete.md +44 -0
  4. package/dist/docs/cli-deploy.md +58 -0
  5. package/dist/docs/cli-dev.md +63 -0
  6. package/dist/docs/cli-docs.md +47 -0
  7. package/dist/docs/cli-download.md +42 -0
  8. package/dist/docs/cli-egress.md +37 -0
  9. package/dist/docs/cli-feedback.md +51 -0
  10. package/dist/docs/cli-index.md +61 -0
  11. package/dist/docs/cli-init.md +46 -0
  12. package/dist/docs/cli-login.md +43 -0
  13. package/dist/docs/cli-logout.md +32 -0
  14. package/dist/docs/cli-logs.md +57 -0
  15. package/dist/docs/cli-open.md +41 -0
  16. package/dist/docs/cli-projects.md +43 -0
  17. package/dist/docs/cli-promote.md +44 -0
  18. package/dist/docs/cli-rollback.md +45 -0
  19. package/dist/docs/cli-skill.md +39 -0
  20. package/dist/docs/cli-staging.md +54 -0
  21. package/dist/docs/cli-token.md +47 -0
  22. package/dist/docs/cli-upgrade.md +43 -0
  23. package/dist/docs/cli-usage.md +43 -0
  24. package/dist/docs/cli-whoami.md +46 -0
  25. package/dist/docs/developers-agents-and-ai.md +95 -0
  26. package/dist/docs/developers-architecture.md +106 -0
  27. package/dist/docs/index.json +331 -0
  28. package/dist/docs/infrastructure.md +5 -8
  29. package/dist/docs/overview-faq.md +105 -0
  30. package/dist/docs/overview-how-it-works.md +81 -0
  31. package/dist/docs/overview-use-cases.md +76 -0
  32. package/dist/docs/overview-what-is-canopy.md +75 -0
  33. package/dist/docs/platform-ai-usage.md +65 -0
  34. package/dist/docs/platform-client-access.md +53 -0
  35. package/dist/docs/platform-deploys-and-rollbacks.md +93 -0
  36. package/dist/docs/platform-egress.md +75 -0
  37. package/dist/docs/platform-feedback.md +79 -0
  38. package/dist/docs/platform-members-and-access.md +71 -0
  39. package/dist/docs/platform-project-data.md +66 -0
  40. package/dist/docs/platform-schedules.md +90 -0
  41. package/dist/docs/platform-sites-and-profiles.md +61 -0
  42. package/dist/docs/static-serving.md +5 -8
  43. package/dist/docs/troubleshooting.md +6 -8
  44. package/dist/{docs-DQmUReJR.mjs → docs-DOiL2Sw-.mjs} +42 -20
  45. package/dist/feedback-BZG8E8zG.mjs +258 -0
  46. package/dist/index.mjs +10 -9
  47. package/dist/{logs-DBLDS3aQ.mjs → logs-DuzM-_Rn.mjs} +1 -1
  48. package/dist/{package-yVoO2pq4.mjs → package-BNiOibhj.mjs} +1 -1
  49. package/dist/{projects-D2fDeWNU.mjs → projects-C9TBoiW7.mjs} +5 -8
  50. package/dist/skill/canopy/SKILL.md +17 -8
  51. package/dist/{skill-12Ga-2UT.mjs → skill-DRTg-mJR.mjs} +1 -1
  52. package/dist/templates/worker/AGENTS.md +0 -3
  53. package/dist/templates/worker/README.md +1 -5
  54. package/dist/{upgrade-Du6U0xjp.mjs → upgrade-BDaM4M6Y.mjs} +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Use cases
3
+ description: What kinds of projects belong on Canopy — and which ones should live somewhere else.
4
+ ---
5
+
6
+ Canopy is built for many small projects, not one big one. It shines when you
7
+ want to get an idea in front of colleagues or a client quickly, with real data
8
+ and real AI behind it, without asking anyone to set up infrastructure.
9
+
10
+ ## Good fits
11
+
12
+ **Client-facing prototypes.** You're pitching a concept and want the client to
13
+ click through something real, not a slide deck. Build it with your agent,
14
+ deploy it, and share the link with a project password — the client sees a
15
+ working app without needing a Monks account, and nobody else on the internet
16
+ can.
17
+
18
+ **Internal tools.** A small utility your team needs: a content checker, a
19
+ campaign asset tracker, a review queue. It sits behind Monks sign-in
20
+ automatically, saves its data to its own database, and stays available without
21
+ anyone babysitting a server.
22
+
23
+ **Demos and experiments with AI.** You want to show what a model can do with
24
+ your workflow — a summarizer, a brief generator, a chat over project material.
25
+ Canopy gives the project AI access with a hard spend cap, so an enthusiastic
26
+ demo (or a runaway loop) can never turn into a scary bill.
27
+
28
+ **Microsites that need data or uploads.** A small site for a workshop, an
29
+ internal survey, a moodboard collector. Structured data and file uploads work
30
+ through simple calls — no database setup, and uploaded files are never left
31
+ publicly exposed.
32
+
33
+ **Projects with client or project data.** Canopy projects may hold real client
34
+ material. Each project's data is isolated — its own database, its own storage
35
+ space — and everything sits behind sign-in, so work-in-progress with real
36
+ content is a normal use, not an exception.
37
+
38
+ ### A few concrete scenarios
39
+
40
+ - A strategist vibecoding a pitch prototype over a weekend, sharing it Monday
41
+ behind a client password.
42
+ - A producer building a tracker the whole team uses daily, with teammates
43
+ invited as collaborators.
44
+ - A developer prototyping an AI-assisted workflow with a custom backend,
45
+ scheduled jobs, and secrets — still inside platform auth and budgets.
46
+
47
+ ## Not a fit
48
+
49
+ Canopy has deliberate anti-goals. If your project is one of these, it belongs
50
+ on another platform from day one:
51
+
52
+ - **Public production apps.** Nothing on Canopy is reachable without OneLogin
53
+ or a project password. A public marketing site, a consumer app, or anything
54
+ meant for anonymous visitors can't live here.
55
+ - **Apps that need production guarantees.** There are no SLAs, no autoscaling,
56
+ no multi-region hosting. If downtime would be a real incident, you need
57
+ dedicated hosting.
58
+ - **Arbitrary server stacks.** Canopy is not a general-purpose cloud — no
59
+ bring-your-own database, no arbitrary long-running servers or containers.
60
+ Projects use the platform's building blocks.
61
+ - **Data pipelines and integration hubs.** Canopy can talk to existing internal
62
+ services, but it's not the place where data warehousing or pipelines live.
63
+
64
+ > **Note:** The rule of thumb: Canopy is the greenhouse, not the forest. When a project proves itself and
65
+ > needs scale, guarantees, or a public audience, it graduates — exporting its code, database, and
66
+ > files cleanly to dedicated hosting.
67
+
68
+ ## Not sure?
69
+
70
+ If your project mostly needs to be seen by Monks or a specific client, saves a
71
+ modest amount of data, and would benefit from shipping this week instead of
72
+ this quarter — it's probably a Canopy project. If in doubt, start on Canopy;
73
+ graduation is a supported path, not a rewrite.
74
+
75
+ - [What is Canopy?](https://docs.canopy.website/overview/what-is-canopy) — The platform in plain language — who it's for and what's managed.
76
+ - [FAQ](https://docs.canopy.website/overview/faq) — Who can see my project, what happens when a deploy breaks, and more.
@@ -0,0 +1,75 @@
1
+ ---
2
+ title: What is Canopy?
3
+ description: A fully managed home for vibecoded Monks projects — hosting, sign-in, data, files, and AI, all set up before your first prompt.
4
+ ---
5
+
6
+ Canopy is where Monks put the projects they vibecode with AI tools. You describe
7
+ an idea, your AI agent builds it, and Canopy runs it — with sign-in, a database,
8
+ file storage, and AI access already wired up and safe before you write (or
9
+ prompt) a single line.
10
+
11
+ Think of it as a greenhouse: a protected place where small projects can grow
12
+ quickly. When one proves its value, it can graduate to its own dedicated home —
13
+ nothing is trapped here.
14
+
15
+ ## Who it's for
16
+
17
+ Canopy serves two kinds of builders on one platform:
18
+
19
+ - **Vibers** — producers, designers, PMs, and strategists who build with AI
20
+ agents. The platform is your guardrail: you can't accidentally publish
21
+ something to the open internet, leak a file, or run up a runaway AI bill,
22
+ because the safe path is the only path.
23
+ - **Coders** — developers who want the same paved road (auth, database, storage
24
+ arranged for them) plus escape hatches like raw SQL and their own backend
25
+ code when they need more control.
26
+
27
+ If you can prompt an AI coding agent, you can ship on Canopy.
28
+
29
+ ## What "fully managed" means
30
+
31
+ You never touch infrastructure. The platform team owns and operates everything
32
+ behind the scenes, so for you it looks like this:
33
+
34
+ - **Hosting.** Every project gets its own web address on `canopy.website`. You
35
+ don't set up servers, domains, or certificates.
36
+ - **Sign-in, always on.** Every project sits behind Monks OneLogin
37
+ automatically. Any Monk can open it by default; you can tighten access to
38
+ collaborators only, or add a shared password so clients without a Monks
39
+ account can see work-in-progress. Nothing on Canopy is ever truly public.
40
+ - **Data and files.** Each project has its own private database and file
41
+ storage. No tables to design, no migrations, no connection strings — and no
42
+ other project can see your data.
43
+ - **AI with guardrails.** Projects can talk to the major AI models through the
44
+ platform, with a hard spend cap per project and full visibility of what
45
+ you've spent.
46
+ - **Deploys.** Putting a new version online is one step — from the terminal,
47
+ from the dashboard, or automatically when code lands in your repository. Every
48
+ deploy becomes a version you can preview and roll back to.
49
+
50
+ > **Note:** Curious how a project moves from idea to live URL? See [How it works](https://docs.canopy.website/overview/how-it-works).
51
+
52
+ ## What you need to get access
53
+
54
+ - **A Monks account.** You sign in to everything — the dashboard and every
55
+ project — with OneLogin. Your Canopy account is created automatically the
56
+ first time you sign in.
57
+ - **The dashboard.** [dashboard.canopy.website](https://dashboard.canopy.website)
58
+ is where you see your projects, invite teammates, browse data, check usage,
59
+ and manage settings.
60
+ - **The Canopy CLI (optional but usual).** A small command-line tool your AI
61
+ agent uses to create, preview, and deploy projects. The
62
+ [getting started guide](https://docs.canopy.website/guides/getting-started) walks you through
63
+ installing it and connecting your coding agent — the agent does most of the
64
+ typing for you.
65
+
66
+ ## What Canopy is not
67
+
68
+ Canopy is deliberately not a production hosting platform. There are no uptime
69
+ guarantees, no autoscaling, and nothing reachable by the anonymous public
70
+ internet. Projects that outgrow the greenhouse graduate: they export cleanly
71
+ (code, database, files) and move to dedicated hosting. See
72
+ [Use cases](https://docs.canopy.website/overview/use-cases) for what belongs here and what doesn't.
73
+
74
+ - [How it works](https://docs.canopy.website/overview/how-it-works) — The life of a project, from creation to rollback, in plain words.
75
+ - [Getting started](https://docs.canopy.website/guides/getting-started) — Install the CLI, sign in, and ship your first project.
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: AI access & usage
3
+ description: Projects talk to AI models through the platform — no API keys to manage, a hard daily budget per project, and full visibility of spend.
4
+ ---
5
+
6
+ Canopy projects can call AI models without you ever handling an API key. The
7
+ platform routes every request through its own metered gateway, tracks what
8
+ each project spends, and enforces a hard daily budget — so a runaway loop in
9
+ a vibecoded app becomes a capped bill and a visible chart, not a surprise
10
+ invoice.
11
+
12
+ ## What your app gets
13
+
14
+ The SDK exposes AI as a first-class building block:
15
+
16
+ ```ts
17
+ const reply = await canopy.ai.chat({
18
+ messages: [{ role: "user", content: "Summarize this note…" }],
19
+ });
20
+ ```
21
+
22
+ - **No keys in your code.** Requests authenticate as the project; the
23
+ platform holds the provider credentials.
24
+ - **A curated model list.** Each site enables a set of models
25
+ (`provider/model`, e.g. `anthropic/claude-haiku-4-5`) with a sensible
26
+ default — ask for a model outside the list and the API tells you what _is_
27
+ available.
28
+ - **Streaming** via `canopy.ai.chatStream()` for chat-style UIs.
29
+ - **An OpenAI-compatible endpoint.** `canopy.ai.endpoint()` returns a base
30
+ URL and model list you can plug into ecosystem tools (like the Vercel AI
31
+ SDK) — same key handling, same budget, same tracking.
32
+
33
+ ## The daily budget
34
+
35
+ Every project has a daily AI budget in USD. When a project's spend for the
36
+ day crosses it, further AI calls answer with an `ai_budget_exceeded` error
37
+ until the day rolls over. The budget is enforced from the same spend ledger
38
+ the dashboard displays, so what you see and what's enforced can never
39
+ disagree.
40
+
41
+ > **Note:** Hitting the cap doesn't break the rest of your app — pages, data, and files keep working. Only AI
42
+ > calls pause until the next day.
43
+
44
+ ## The Usage tab
45
+
46
+ Open a project in the dashboard and the **Usage** tab shows where it stands:
47
+
48
+ - **LLM spend** — estimated cost, request count, and tokens over the recent
49
+ window, broken down by model and by day.
50
+ - **Activity** — page loads today and over the last 7 days, plus when the
51
+ project was last visited. A quick answer to "is anyone actually using
52
+ this?"
53
+ - **Storage & deploys** — database size, blob storage footprint, and how many
54
+ versions have shipped.
55
+
56
+ ## From the terminal
57
+
58
+ `canopy usage` prints the same view without leaving your shell:
59
+
60
+ ```bash
61
+ canopy usage # AI spend, activity, storage, deploys
62
+ canopy usage --json # machine-readable, for agents and scripts
63
+ ```
64
+
65
+ - [Getting started](https://docs.canopy.website/guides/getting-started) — Create a project and let your coding agent wire up AI, data, and files.
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Client access
3
+ description: Share a project with clients who have no Monks account — a shared password unlocks that one project's URL and nothing else.
4
+ ---
5
+
6
+ Everything on Canopy normally requires a Monks sign-in — which is exactly
7
+ right until you want a client to see work-in-progress. Client access solves
8
+ that: you set a shared password on a project, send the client the URL and the
9
+ password, and they're in. No account creation, no invitations, no exceptions
10
+ punched through the platform for anyone else.
11
+
12
+ ## How it works
13
+
14
+ With client access enabled, a visitor without a Monks session who opens the
15
+ project's URL gets a simple password page instead of the SSO redirect. Enter
16
+ the right password and the app loads; Monks can still click through to
17
+ company sign-in from the same page.
18
+
19
+ The unlock is deliberately narrow:
20
+
21
+ - **One project only.** The password grants access to that project's own
22
+ subdomain and nothing else — it can't be used on any other project or on
23
+ the dashboard.
24
+ - **The live app only.** Clients see what a signed-in viewer would see. They
25
+ never get the dashboard, the data browser, deploy history, or settings.
26
+ - **It expires.** Access is a temporary session on that browser; when it
27
+ lapses, the password page comes back.
28
+
29
+ ## Enabling it
30
+
31
+ Open the project's **Settings** tab and use the **Client access** card:
32
+
33
+ 1. Set a password. Pick something you're comfortable saying out loud on a
34
+ call — it's a shared secret, not a personal credential.
35
+ 2. Send the client the project URL and the password.
36
+
37
+ To change the password, set a new one — previously handed-out passwords stop
38
+ working for new sign-ins. To turn client access off entirely, remove the
39
+ password from the same card; visitors are back to Monks-only immediately.
40
+
41
+ > **Warning:** A shared password is deliberately lightweight protection — right for work-in-progress previews,
42
+ > wrong for anything sensitive. Anyone who has it can view the app and share it further, so rotate
43
+ > it when a review round ends.
44
+
45
+ ## Playing well with other access controls
46
+
47
+ Client access is independent of
48
+ [collaborators-only mode](https://docs.canopy.website/platform/members-and-access): you can lock
49
+ the app down for Monks outside the team while a client with the password
50
+ still gets in. That combination — "the client and the project team, nobody
51
+ else" — is a common setup during a review phase.
52
+
53
+ - [Members & access](https://docs.canopy.website/platform/members-and-access) — Who can view and who can manage a project, and how to tighten it.
@@ -0,0 +1,93 @@
1
+ ---
2
+ title: Deploys & rollbacks
3
+ description: Every deploy is a numbered version you can preview, download, and make live again — rolling back is instant and loses nothing.
4
+ ---
5
+
6
+ Every time you publish a project, Canopy records it as a numbered version —
7
+ v1, v2, v3, and so on. The live site is simply a pointer at one of those
8
+ versions. That one idea powers everything on this page: previews, rollbacks,
9
+ and downloads are all just different ways of looking at (or pointing at) a
10
+ version that already exists.
11
+
12
+ ## What a deploy contains
13
+
14
+ A deploy is the built files of your app — the HTML, JavaScript, CSS, and other
15
+ assets your build produces. Projects with a custom backend also ship their
16
+ worker code in the same deploy, so frontend and backend always move together
17
+ as one version.
18
+
19
+ A deploy only goes live after every file has been uploaded and validated. A
20
+ connection that drops halfway never leaves your project in a broken state —
21
+ the previous version keeps serving until the new one is complete.
22
+
23
+ ## Ways to deploy
24
+
25
+ - **From the terminal** — `canopy deploy` builds your project and publishes a
26
+ new version. This is what your coding agent runs. See the
27
+ [deploy guide](https://docs.canopy.website/guides/deploy) for details.
28
+ - **From the dashboard** — on the project's Overview tab, upload a new version
29
+ by dragging in a zip, a folder, or loose files. No command line required.
30
+ - **Automatically from CI** — create a project-scoped deploy token, add it to
31
+ your repository's secrets, and merging to `main` ships a new version on its
32
+ own. See [CI and deploy tokens](https://docs.canopy.website/guides/ci).
33
+
34
+ The dashboard's deploy history shows every version with who published it and
35
+ where it came from (CLI, dashboard, or CI).
36
+
37
+ ## Rolling back
38
+
39
+ If a deploy goes wrong, point the site back at an earlier version. Rollback
40
+ moves the live pointer — nothing is copied, rebuilt, or deleted, so it takes
41
+ effect immediately and every version keeps its identity. Projects with a
42
+ custom backend roll their backend back to the matching version too.
43
+
44
+ - **Dashboard** — open the project's Overview tab and pick the version to make
45
+ live from the deploy history.
46
+ - **CLI**:
47
+
48
+ ```bash
49
+ canopy rollback # pick a version from a list
50
+ canopy rollback v3 # make v3 live directly
51
+ ```
52
+
53
+ You can also "roll forward": after reverting to v3, making v5 live again is
54
+ the same one-step operation. Any version in the history can be live.
55
+
56
+ ## The staging channel
57
+
58
+ Beyond previews, every project can have a full **staging channel**: a staged
59
+ version served at `https://staging-dot-<slug>.canopy.website` with its own
60
+ database (a copy of live), its own files, and its own backend. Deploy there
61
+ with `canopy deploy --staging` (or the dashboard's upload dialog), verify, and
62
+ **promote** — the exact staged version becomes live, schema migrations
63
+ replaying against the live database first. See
64
+ [Staging & promoting](https://docs.canopy.website/guides/staging).
65
+
66
+ ## Previewing any version
67
+
68
+ Every version has its own stable preview URL, so you can open an old build
69
+ next to the current one without touching what's live:
70
+
71
+ ```
72
+ https://v12-dot-<slug>.canopy.website
73
+ ```
74
+
75
+ Preview URLs sit behind the same sign-in as the live site — they're for
76
+ comparing builds and reviewing history, not for sharing something different
77
+ from what access settings allow. A preview shows an old frontend against the
78
+ live data; for a full candidate environment (frontend + backend + own
79
+ database) use the staging channel above.
80
+
81
+ ## Downloading a version
82
+
83
+ You can download the exact files behind any past version as a zip — handy for
84
+ comparing builds or restoring something by hand:
85
+
86
+ - **Dashboard** — from the version's entry in the deploy history.
87
+ - **CLI** — `canopy download`, which lets you pick a version.
88
+
89
+ Downloads are limited to the project's members; the deploy bundle is your
90
+ source, not the public site.
91
+
92
+ - [Deploying](https://docs.canopy.website/guides/deploy) — Build commands, canopy.json, and what canopy deploy does step by step.
93
+ - [CI and deploy tokens](https://docs.canopy.website/guides/ci) — Ship a new version automatically on every push to main.
@@ -0,0 +1,75 @@
1
+ ---
2
+ title: Outbound requests
3
+ description: Which external hosts your project's backend may fetch — a per-project allowlist you manage yourself.
4
+ ---
5
+
6
+ Outbound `fetch` from a project's backend worker is **deny-by-default**: the
7
+ platform only lets requests through to platform infrastructure (your database,
8
+ files, AI, the Canopy API) and to the hosts on your project's own
9
+ **egress allowlist**. Anything else is answered locally with a 403
10
+ `egress_denied` — the request never leaves the runtime.
11
+
12
+ That default is deliberate: a thousand idle vibecoded projects should not be
13
+ able to call arbitrary internet hosts. When your project genuinely needs an
14
+ external API, you allow that host yourself — no platform-team ticket.
15
+
16
+ > **Note:** Enforcement applies on every target. On GCP the runtime answers the 403 itself; on Cloudflare the
17
+ > platform vets each outbound request outside your worker. Same rule, same error, one allowlist.
18
+
19
+ ## Allowing a host
20
+
21
+ CLI, from the project directory:
22
+
23
+ ```bash
24
+ canopy egress allow generativelanguage.googleapis.com
25
+ canopy egress list
26
+ canopy egress remove generativelanguage.googleapis.com
27
+ ```
28
+
29
+ Or in the dashboard: **Settings → Outbound hosts**.
30
+
31
+ Changes apply to the **running** workers within moments — the platform re-rolls
32
+ the project's services with the new list, no deploy needed. Live and staging
33
+ share one list, like secrets: the staging worker is the same code and needs the
34
+ same hosts.
35
+
36
+ ## What an entry looks like
37
+
38
+ - A bare hostname: `api.example.com` — matches exactly that host.
39
+ - A subdomain wildcard: `*.googleapis.com` — matches any subdomain
40
+ (`storage.googleapis.com`, `a.b.googleapis.com`) but **not** the apex
41
+ `googleapis.com`.
42
+
43
+ Hostnames only: no IP addresses, CIDR ranges, ports, schemes, or paths, and no
44
+ `*` catch-all. Entries are case-insensitive; unicode names are stored in their
45
+ punycode form. A project can list up to **32** hosts.
46
+
47
+ ## What doesn't count as egress
48
+
49
+ Everything you reach through the SDK — `canopy.db`, `canopy.blob`,
50
+ `canopy.ai`, and `env.CANOPY.fetch` — goes through the platform and is always
51
+ allowed. The allowlist only governs direct `fetch` calls from your worker code
52
+ to the outside world. (Frontend code in the browser is unaffected — this is
53
+ about the worker.)
54
+
55
+ ## When a request is denied
56
+
57
+ The blocked `fetch` resolves (in ~2ms, no network attempt) with status 403 and
58
+ body:
59
+
60
+ ```json
61
+ { "error": "egress_denied", "detail": "host api.example.com is not on the project allowlist" }
62
+ ```
63
+
64
+ Allow the host and retry — see the
65
+ [troubleshooting entry](https://docs.canopy.website/guides/troubleshooting#egress_denied-403).
66
+
67
+ ## Recently blocked hosts
68
+
69
+ You don't have to guess what got denied: the runtime reports every blocked
70
+ host back to the platform, and they show up as **Recently blocked** in
71
+ Settings → Outbound hosts (and in `canopy egress list`), with how often and
72
+ how recently each was hit. One click on **Allow** puts the host on the list
73
+ and clears it from the blocked section. Hosts that keep a low profile drop
74
+ off — the list remembers the 50 most recent — and allowing a host removes its
75
+ blocked entry immediately.
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: Feedback & bug reports
3
+ description: A built-in feedback widget on every project, a ticket-lite inbox behind it, and a CLI that lets agents work the backlog.
4
+ ---
5
+
6
+ Every Canopy project gets an in-app feedback channel without writing a line of
7
+ code: signed-in Monks see a small floating button on the live app, pick **Bug**
8
+ or **Feedback**, type what happened, and send. The report lands in the
9
+ project's **Feedback tab** on the dashboard, with everything an investigator
10
+ needs captured automatically — page URL, the deploy version that served it,
11
+ viewport, and recent console errors.
12
+
13
+ It is deliberately **not** a ticketing product: an item has a status, an
14
+ append-only comment trail, and nothing else. No assignees, priorities, or
15
+ boards.
16
+
17
+ ## The widget
18
+
19
+ - Appears only for **signed-in Monks**. Client-password visitors never see it —
20
+ the platform doesn't even send them the script.
21
+ - On by default for every project. Turn it off per project in
22
+ **Settings → Feedback widget**; the change applies on the next page load.
23
+ - Submissions are always identified (your company sign-in), so there's no
24
+ anonymous spam and no reporter field to fill in.
25
+ - The widget also shows your own previous reports for that project with their
26
+ current status.
27
+ - A page can reshape the chooser with meta tags — this docs site does exactly
28
+ that: `<meta name="canopy-feedback-kinds" content="docs,feedback">` swaps
29
+ "Bug" for "Docs issue", and `canopy-feedback-prompt` replaces the textarea
30
+ placeholder. Kinds are limited to `bug`, `feedback`, `docs`.
31
+
32
+ ## The inbox
33
+
34
+ Project members triage reports on the **Feedback tab**:
35
+
36
+ - Statuses: `new → accepted → in_progress → resolved`, plus `declined`.
37
+ **`accepted` means "this is valid — an agent may pick it up."**
38
+ - Every status change and comment is recorded on the item's trail.
39
+ - Reporters follow their submissions on the **Reports page** (dashboard
40
+ header) and can comment on or withdraw their own items; only project
41
+ members change statuses.
42
+
43
+ ## Working the backlog with an agent
44
+
45
+ Because the CLI exposes the inbox, "work through the accepted feedback" is a
46
+ prompt, not a process:
47
+
48
+ ```bash
49
+ canopy feedback list --status accepted # what a human marked valid
50
+ canopy feedback show <id> # body + captured context + trail
51
+ canopy feedback comment <id> "root cause: …" # append findings
52
+ canopy feedback status <id> resolved --comment "fixed in v42"
53
+ ```
54
+
55
+ `show` includes the deploy version that served the page when the bug was
56
+ reported — reproduce against that, not whatever is live now. An agent that
57
+ investigates but can't fix should `comment` its findings and leave the status
58
+ for a human; one that pushes back should `status <id> declined` with a comment
59
+ saying why.
60
+
61
+ ## Reporting problems with Canopy itself
62
+
63
+ When a `canopy` command fails while you (or your agent) are building a
64
+ project, file it against the **platform inbox** — not your own project:
65
+
66
+ ```bash
67
+ canopy feedback report "deploy failed after upload" \
68
+ --command "canopy deploy --staging" --error "upload_grant_expired …"
69
+ ```
70
+
71
+ With no `--project`, the report goes to the platform team automatically, with
72
+ your CLI version, site, and the project you were working on attached. Before
73
+ filing: rule out user error first (`canopy docs troubleshooting`,
74
+ `vp env doctor` for toolchain issues), and skim `canopy feedback mine` to
75
+ avoid filing the same issue twice.
76
+
77
+ ## CLI reference
78
+
79
+ See [canopy feedback](https://docs.canopy.website/cli/feedback) for every subcommand and flag.
@@ -0,0 +1,71 @@
1
+ ---
2
+ title: Members & access
3
+ description: Everything on Canopy sits behind Monks sign-in. Collaborators manage a project; other Monks can view the live app — unless you tighten it.
4
+ ---
5
+
6
+ Nothing on Canopy is reachable by the anonymous internet. Every project URL
7
+ and the dashboard itself sit behind Monks OneLogin — visitors sign in with
8
+ their company account before they see anything. On top of that wall, each
9
+ project has its own roster that decides who can _manage_ it and, optionally,
10
+ who can _view_ it.
11
+
12
+ ## The default: any Monk can look, members can manage
13
+
14
+ Out of the box:
15
+
16
+ - **Any signed-in Monk** can open a project's live URL and see the app. The
17
+ project also appears in the company-wide list on the dashboard.
18
+ - **Only the project's members** (and platform admins) can open its
19
+ management pages — deploy history, data browser, usage, and settings.
20
+
21
+ That default fits most internal work: colleagues can try what you built, but
22
+ nobody outside the team can touch its data or settings.
23
+
24
+ ## Roles
25
+
26
+ - **Owner** — the person who created the project. Owners govern it: they
27
+ invite and remove collaborators, change access settings, and can delete
28
+ the project.
29
+ - **Collaborator** — invited teammates. They can do day-to-day work — deploy,
30
+ roll back, browse and edit data, manage schedules and secrets — but not
31
+ delete the project or manage its roster.
32
+ - **Platform admin** — can manage any project from the dashboard. Admins keep
33
+ governance access, but they do not silently bypass a collaborators-only
34
+ live app (see below).
35
+
36
+ ## Inviting collaborators
37
+
38
+ Open the project's **Settings** tab and use the **Collaborators** card. A
39
+ searchable people picker finds anyone who has signed in to Canopy; adding
40
+ them takes effect immediately. Owners (and admins) can also remove people
41
+ from the same card.
42
+
43
+ ## Collaborators-only mode
44
+
45
+ Sometimes "any Monk can look" is too open — payroll prototypes, sensitive
46
+ client work, unfinished things you'd rather not demo by accident. Flip on
47
+ **Settings → Collaborators only** and the live app is limited to the
48
+ project's roster:
49
+
50
+ - Other Monks who open the URL get a clear "limited to its collaborators"
51
+ page instead of the app.
52
+ - The project still appears in the company list — it isn't hidden, just
53
+ closed.
54
+ - Platform admins can still manage the project in the dashboard, but they
55
+ must add themselves as collaborators if they need to open the live app.
56
+ - [Client password access](https://docs.canopy.website/platform/client-access), if you've enabled
57
+ it, is unaffected — the two controls are independent.
58
+
59
+ Turning it off again is the same toggle.
60
+
61
+ > **Note:** Collaborators-only gates the **live app**. Management access (settings, data, deploys) is always
62
+ > members-only, regardless of this toggle.
63
+
64
+ ## Platform admins and the Users page
65
+
66
+ Platform admins get an extra **Users** page in the dashboard listing everyone
67
+ on Canopy — name, email, and when they first signed in — with a one-click way
68
+ to grant or remove admin. Accounts are created automatically on first
69
+ OneLogin sign-in; there is nothing to provision.
70
+
71
+ - [Client access](https://docs.canopy.website/platform/client-access) — Share work-in-progress with clients who don't have a Monks account.
@@ -0,0 +1,66 @@
1
+ ---
2
+ title: Project data
3
+ description: Every project gets its own private database and file storage — browse it in the dashboard, snapshot it before risky changes, and pull it locally.
4
+ ---
5
+
6
+ Every Canopy project comes with its own private database and file storage,
7
+ created automatically the moment the project exists. There are no connection
8
+ strings to configure and no servers to run — your app reads and writes through
9
+ the Canopy SDK, and no other project can ever see your data.
10
+
11
+ ## The Data tab
12
+
13
+ Open a project in the dashboard and the **Data** tab shows what your app has
14
+ stored:
15
+
16
+ - **Collections** — the document-style data your app writes with
17
+ `canopy.db.collection(...)`. Pick a collection and page through its rows.
18
+ - **Tables** — a browser for the underlying database tables, for when your
19
+ app uses raw SQL or you want to see exactly what's on disk.
20
+ - **SQL console** — run a query directly against the project's database from
21
+ the browser. Useful for quick checks and one-off fixes.
22
+
23
+ The **Files** tab next to it lists the project's blob storage — the uploads
24
+ and files your app has saved.
25
+
26
+ ## Snapshots and restores
27
+
28
+ The Data tab's **Data safety** card is your undo button for data:
29
+
30
+ - **Snapshot** stores a full dump of the database on the platform. Take one
31
+ before a risky change — a big import, a cleanup script, letting an agent
32
+ loose on production data.
33
+ - **Restore** replaces the project's current data with a snapshot. This is
34
+ destructive by design (that's the point), so the dashboard asks you to
35
+ confirm.
36
+ - **Export** downloads a dump to your machine.
37
+
38
+ Snapshots live server-side and stay available until you delete the project,
39
+ so you can restore from days ago, not just from your last session.
40
+
41
+ > **Warning:** Restoring replaces **all** current data with the snapshot's contents. Take a fresh snapshot first
42
+ > if there's anything recent you might want back.
43
+
44
+ ## The same tools from the terminal
45
+
46
+ Everything above is also available to you (and your coding agent) via the CLI:
47
+
48
+ ```bash
49
+ canopy db pull # download a fresh SQL dump
50
+ canopy db snapshot # store a dump server-side
51
+ canopy db snapshots # list stored snapshots
52
+ canopy db restore # replace project data with a snapshot
53
+ ```
54
+
55
+ `canopy db pull` is also how you develop against realistic data: pull a dump,
56
+ then run `canopy dev --local --pull` for a throwaway sandbox seeded with it.
57
+
58
+ ## Portable by default, SQL when you need it
59
+
60
+ The SDK's document API (`canopy.db.collection(...)`) behaves the same
61
+ everywhere Canopy runs. Raw SQL via `canopy.db.sql()` passes straight through
62
+ to the underlying database — SQLite on the Cloudflare sites, Postgres on the
63
+ GCP pilot — so anything that database supports works. Your code can ask
64
+ `canopy.db.dialect()` which one it's talking to.
65
+
66
+ - [Working with project data](https://docs.canopy.website/guides/data) — Collection naming rules, dialects and raw SQL, dumps, and restore workflows in depth.