@mediamonks/canopy-cli 0.7.11 → 0.7.12

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 (108) hide show
  1. package/dist/{deploy-BCtEY1is.mjs → deploy-B1WrPq5W.mjs} +8 -1
  2. package/dist/{dev-DtoZrexp.mjs → dev-BnUYGQQm.mjs} +5 -4
  3. package/dist/dev-CySBxW7I.mjs +2 -0
  4. package/dist/{dev-worker-BZgtEM9V.mjs → dev-worker-IWnHvQ1f.mjs} +42 -7
  5. package/dist/{docs-BV9qhLJx.mjs → docs-DxB7NhZs.mjs} +1 -1
  6. package/dist/{feedback-Cb8ccQ_R.mjs → feedback-B-GXUBPs.mjs} +1 -1
  7. package/dist/index.mjs +10 -10
  8. package/dist/{local-C5AhA4GM.mjs → local-BGRd_FMZ.mjs} +6 -469
  9. package/dist/{package-BBpw-n7k.mjs → package-CDLufecy.mjs} +1 -1
  10. package/dist/{skill-DJHlTEhS.mjs → skill-BOWfqwr2.mjs} +1 -1
  11. package/dist/src-Bu4Ze32I.mjs +470 -0
  12. package/dist/{upgrade-B86Ao6T5.mjs → upgrade-fhfrid_O.mjs} +1 -1
  13. package/package.json +3 -3
  14. package/dist/dev-BYxSHUH6.mjs +0 -2
  15. package/dist/docs/ci.md +0 -50
  16. package/dist/docs/cli-create.md +0 -46
  17. package/dist/docs/cli-db.md +0 -86
  18. package/dist/docs/cli-delete.md +0 -44
  19. package/dist/docs/cli-deploy.md +0 -58
  20. package/dist/docs/cli-dev.md +0 -82
  21. package/dist/docs/cli-docs.md +0 -47
  22. package/dist/docs/cli-download.md +0 -42
  23. package/dist/docs/cli-egress.md +0 -37
  24. package/dist/docs/cli-feedback.md +0 -75
  25. package/dist/docs/cli-index.md +0 -61
  26. package/dist/docs/cli-init.md +0 -46
  27. package/dist/docs/cli-login.md +0 -43
  28. package/dist/docs/cli-logout.md +0 -32
  29. package/dist/docs/cli-logs.md +0 -57
  30. package/dist/docs/cli-open.md +0 -41
  31. package/dist/docs/cli-projects.md +0 -43
  32. package/dist/docs/cli-promote.md +0 -44
  33. package/dist/docs/cli-rollback.md +0 -45
  34. package/dist/docs/cli-skill.md +0 -39
  35. package/dist/docs/cli-staging.md +0 -54
  36. package/dist/docs/cli-token.md +0 -47
  37. package/dist/docs/cli-upgrade.md +0 -43
  38. package/dist/docs/cli-usage.md +0 -43
  39. package/dist/docs/cli-whoami.md +0 -46
  40. package/dist/docs/cli.md +0 -86
  41. package/dist/docs/data.md +0 -85
  42. package/dist/docs/deploy.md +0 -81
  43. package/dist/docs/dev.md +0 -72
  44. package/dist/docs/developers-agents-and-ai.md +0 -95
  45. package/dist/docs/developers-architecture.md +0 -106
  46. package/dist/docs/getting-started.md +0 -108
  47. package/dist/docs/index.json +0 -331
  48. package/dist/docs/infrastructure.md +0 -406
  49. package/dist/docs/migrations.md +0 -183
  50. package/dist/docs/overview-faq.md +0 -105
  51. package/dist/docs/overview-how-it-works.md +0 -82
  52. package/dist/docs/overview-use-cases.md +0 -76
  53. package/dist/docs/overview-what-is-canopy.md +0 -75
  54. package/dist/docs/platform-ai-usage.md +0 -65
  55. package/dist/docs/platform-client-access.md +0 -54
  56. package/dist/docs/platform-deploys-and-rollbacks.md +0 -93
  57. package/dist/docs/platform-egress.md +0 -75
  58. package/dist/docs/platform-feedback.md +0 -114
  59. package/dist/docs/platform-members-and-access.md +0 -71
  60. package/dist/docs/platform-project-data.md +0 -76
  61. package/dist/docs/platform-schedules.md +0 -90
  62. package/dist/docs/platform-sites-and-profiles.md +0 -61
  63. package/dist/docs/porting-nextjs.md +0 -233
  64. package/dist/docs/sdk-ai.md +0 -103
  65. package/dist/docs/sdk-auth.md +0 -57
  66. package/dist/docs/sdk-database.md +0 -126
  67. package/dist/docs/sdk-files.md +0 -82
  68. package/dist/docs/sdk-services.md +0 -58
  69. package/dist/docs/sdk.md +0 -126
  70. package/dist/docs/staging.md +0 -106
  71. package/dist/docs/static-serving.md +0 -318
  72. package/dist/docs/troubleshooting.md +0 -102
  73. package/dist/skill/canopy/SKILL.md +0 -160
  74. package/dist/templates/spa/.github/workflows/canopy-deploy.yml +0 -34
  75. package/dist/templates/spa/AGENTS.md +0 -47
  76. package/dist/templates/spa/README.md +0 -14
  77. package/dist/templates/spa/_gitignore +0 -4
  78. package/dist/templates/spa/canopy.json +0 -5
  79. package/dist/templates/spa/index.html +0 -12
  80. package/dist/templates/spa/package.json +0 -21
  81. package/dist/templates/spa/src/app.tsx +0 -25
  82. package/dist/templates/spa/src/canopy.ts +0 -5
  83. package/dist/templates/spa/src/main.tsx +0 -10
  84. package/dist/templates/spa/src/style.css +0 -29
  85. package/dist/templates/spa/tsconfig.json +0 -16
  86. package/dist/templates/spa/vite.config.ts +0 -7
  87. package/dist/templates/static/AGENTS.md +0 -45
  88. package/dist/templates/static/README.md +0 -9
  89. package/dist/templates/static/_gitignore +0 -2
  90. package/dist/templates/static/canopy.json +0 -4
  91. package/dist/templates/static/index.html +0 -21
  92. package/dist/templates/static/main.js +0 -9
  93. package/dist/templates/static/style.css +0 -29
  94. package/dist/templates/worker/.dev.vars.example +0 -9
  95. package/dist/templates/worker/.github/workflows/canopy-deploy.yml +0 -34
  96. package/dist/templates/worker/AGENTS.md +0 -63
  97. package/dist/templates/worker/README.md +0 -17
  98. package/dist/templates/worker/_gitignore +0 -5
  99. package/dist/templates/worker/canopy.json +0 -6
  100. package/dist/templates/worker/index.html +0 -12
  101. package/dist/templates/worker/package.json +0 -22
  102. package/dist/templates/worker/src/app.tsx +0 -25
  103. package/dist/templates/worker/src/canopy.ts +0 -5
  104. package/dist/templates/worker/src/main.tsx +0 -10
  105. package/dist/templates/worker/src/style.css +0 -29
  106. package/dist/templates/worker/tsconfig.json +0 -16
  107. package/dist/templates/worker/vite.config.ts +0 -7
  108. package/dist/templates/worker/worker/index.ts +0 -52
@@ -1,105 +0,0 @@
1
- ---
2
- title: FAQ
3
- description: Quick answers to the questions people ask before (and just after) putting a project on Canopy.
4
- ---
5
-
6
- Short answers to common questions. If yours isn't here, the guides go deeper —
7
- start with [getting started](https://docs.canopy.website/guides/getting-started).
8
-
9
- ## Who can see my project?
10
-
11
- By default, any Monk who signs in with OneLogin. If that's too broad, switch
12
- the project to **collaborators only** in Settings — then only the people you've
13
- invited can open the live app (it still appears in the company project list,
14
- and platform admins can still manage it).
15
-
16
- ## Can clients without OneLogin see it?
17
-
18
- Yes. You can put a shared **password** on a project from its Settings. Anyone
19
- you give the password to can view the app without a Monks account — useful for
20
- sharing work-in-progress with a client. That's the only way in without
21
- OneLogin; there is no fully public option.
22
-
23
- ## Can I make my project public?
24
-
25
- No, and that's deliberate. Nothing on Canopy is reachable without OneLogin or a
26
- project password. If your project needs an anonymous public audience, it
27
- belongs on dedicated hosting — see [Use cases](https://docs.canopy.website/overview/use-cases).
28
-
29
- ## What happens if a deploy breaks something?
30
-
31
- Nothing you can't undo. Every deploy is a numbered version, and you can make
32
- any earlier version live again in one step from the dashboard or the CLI. You
33
- can also open any past version at its own preview link to compare before
34
- deciding.
35
-
36
- ## Where does my data live?
37
-
38
- With the project. Each project has its own private database and its own file
39
- storage space — no other project can touch them. You can browse the data in
40
- the dashboard, and take or restore database snapshots. Deleting a project
41
- deletes everything it owned.
42
-
43
- ## Can my project use AI models? What stops a runaway bill?
44
-
45
- Projects get access to the major AI models through the platform, with a hard
46
- spend cap per project. If something loops out of control, it stops at the cap.
47
- You can see exactly what's been spent — by model — in the dashboard's Usage
48
- tab or from the CLI.
49
-
50
- ## Does it cost anything?
51
-
52
- The platform is run by the Monks platform team, and it's designed so that idle
53
- projects cost essentially nothing. The costs that do exist — mainly AI usage —
54
- are visible per project in the dashboard and capped hard, so there are no
55
- surprises.
56
-
57
- ## Do I need to know how to code?
58
-
59
- You need to be able to work with an AI coding agent — the agent writes the
60
- code, and Canopy's bundled skills keep it on the safe path. The
61
- [getting started guide](https://docs.canopy.website/guides/getting-started) shows how to connect your
62
- agent so it knows how the platform works.
63
-
64
- ## Can I work on it with teammates?
65
-
66
- Yes. Invite people from the project's page in the dashboard with the people
67
- picker — as admins or collaborators. Combined with collaborators-only mode,
68
- this also controls who can open the live app.
69
-
70
- ## Can I bring an app I already started?
71
-
72
- Yes. You don't have to start from a Canopy template — an existing app can be
73
- onboarded onto the platform and gain the same URL, sign-in, and deploy flow.
74
- The [getting started guide](https://docs.canopy.website/guides/getting-started) covers both paths.
75
-
76
- ## Can I host my Next.js app on Canopy?
77
-
78
- Not as-is — Canopy serves pages as static files and deliberately runs no
79
- app servers, so server-side rendering, server components fetching at request
80
- time, and server actions have nowhere to run. What works well is a port:
81
- the frontend becomes a static build, backend logic moves into the project's
82
- worker under `/api/*`, and the platform takes over auth, database, files, and
83
- AI. For apps that only lightly use Next's server side that's a small job; the
84
- [porting guide](https://docs.canopy.website/guides/porting-nextjs) walks through it and helps you judge
85
- whether your app is a good fit.
86
-
87
- ## Can it deploy automatically when we change the code?
88
-
89
- Yes. Create a project-scoped deploy token, add it to your repository's CI, and
90
- merging to `main` ships a new version on its own. The token can only deploy
91
- that one project — it can't touch your data. See the [CI guide](https://docs.canopy.website/guides/ci).
92
-
93
- ## What if my project outgrows Canopy?
94
-
95
- It graduates. Canopy optimizes for many small projects, not for making one
96
- project big — so when yours needs scale, guarantees, or a public audience, it
97
- exports cleanly (code, database file, and file archive) and moves to dedicated
98
- hosting. No lock-in, no rewrite.
99
-
100
- ## Is my project backed up if something goes wrong?
101
-
102
- You have two safety nets you control: versions (every deploy is kept, with
103
- rollback and download) and database snapshots (take one before a risky change,
104
- restore it if needed). For anything beyond that, remember Canopy offers no
105
- production guarantees — see [Use cases](https://docs.canopy.website/overview/use-cases).
@@ -1,82 +0,0 @@
1
- ---
2
- title: How it works
3
- description: The life of a Canopy project in plain words — create, build, deploy, roll back.
4
- ---
5
-
6
- Every Canopy project follows the same simple lifecycle. Here's what happens at
7
- each step, without the technical machinery.
8
-
9
- ## Create a project
10
-
11
- A project starts in one of two ways: your coding agent runs the Canopy CLI to
12
- create one from a starter template, or you register an app you already started.
13
- Either way, the project appears in the
14
- [dashboard](https://dashboard.canopy.website) the moment it exists — with its
15
- sign-in wall, database, file storage, and AI access already arranged.
16
-
17
- Starters come in three shapes — a simple static site, a fully-typed React app,
18
- or a React app with server-side code — so you begin from the shape that fits.
19
- The details live in the [getting started guide](https://docs.canopy.website/guides/getting-started).
20
-
21
- ## Your project gets its own address
22
-
23
- Each project has a short name (its _slug_) and lives at its own URL:
24
- `your-slug.canopy.website`. You don't buy domains or configure anything — the
25
- address exists as soon as the project does.
26
-
27
- ## Everything sits behind Monks sign-in
28
-
29
- Visitors to your project's URL hit OneLogin before they see anything. By
30
- default any Monk can open it. From the project's Settings you can tighten that
31
- to collaborators only, or add a shared client password so people outside Monks
32
- can view it. The password stays visible in Settings, so you can look it up and
33
- share it again later. There is no "make it public" switch — that's by design.
34
-
35
- ## Deploys create versions
36
-
37
- When you (or your agent) publish the project — one command from the terminal, a
38
- drag-and-drop upload in the dashboard, or automatically when code lands in your
39
- repository — Canopy records it as a new numbered **version** and makes it live.
40
-
41
- Versions are what make deploying low-stakes:
42
-
43
- - Every past version keeps a stable preview link, so you can open an older
44
- build next to the newest one.
45
- - You can download the exact files behind any version.
46
- - If a deploy breaks something, you pick an earlier version in the dashboard or
47
- CLI and make it live again in one step. That's a **rollback**, and it takes
48
- seconds.
49
-
50
- More detail in the [deploying guide](https://docs.canopy.website/guides/deploy) and the
51
- [CI guide](https://docs.canopy.website/guides/ci) for automatic deploys on push.
52
-
53
- ## Data lives with the project
54
-
55
- Whatever your app saves — records, uploads — goes into that project's own
56
- private database and storage space. No other project can read it, and deleting
57
- a project deletes everything it owned. You can browse the data from the
58
- dashboard, and take or restore **snapshots** of the database when you want a
59
- safety net before a risky change. See the [project data guide](https://docs.canopy.website/guides/data).
60
-
61
- ## Usage is visible
62
-
63
- The dashboard's Usage tab shows how active a project is (page loads today and
64
- over the last 7 days), what its AI calls have cost by model, and its database,
65
- file, and deploy footprint. AI spending also has a hard per-project cap — a
66
- loop gone wrong stops at the cap instead of running up a bill.
67
-
68
- ## Words you'll hear
69
-
70
- | Word | What it means |
71
- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
- | **Project** | One app on Canopy: its code, its URL, its database, its files, its settings, its people. |
73
- | **Deploy** | Publishing your project so the new state is live at its URL. |
74
- | **Version** | The numbered result of each deploy. Every version keeps a preview link and can be downloaded. |
75
- | **Rollback** | Making an earlier version live again, in one step. |
76
- | **Snapshot** | A saved copy of a project's database you can restore later. |
77
- | **Slug** | The project's short name — the first part of its URL. |
78
- | **Site** (or **profile**) | An installation of the Canopy platform. Most people only ever use the main one; the CLI can point at others (like staging) and always shows which one you're on. |
79
- | **Collaborator** | A teammate invited to a project through the dashboard's people picker. |
80
-
81
- - [Getting started](https://docs.canopy.website/guides/getting-started) — From nothing to a live project, step by step.
82
- - [Local development](https://docs.canopy.website/guides/dev) — Preview changes on your machine against your real project data.
@@ -1,76 +0,0 @@
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.
@@ -1,75 +0,0 @@
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.
@@ -1,65 +0,0 @@
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.
@@ -1,54 +0,0 @@
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 **Who outside Monks can open
32
- it** card:
33
-
34
- 1. Set a password. Pick something you're comfortable saying out loud on a
35
- call — it's a shared secret, not a personal credential.
36
- 2. Send the client the project URL and the password.
37
-
38
- To change the password, set a new one — previously handed-out passwords stop
39
- working for new sign-ins. To turn client access off entirely, remove the
40
- password from the same card; visitors are back to Monks-only immediately.
41
-
42
- > **Warning:** A shared password is deliberately lightweight protection — right for work-in-progress previews,
43
- > wrong for anything sensitive. Anyone who has it can view the app and share it further, so rotate
44
- > it when a review round ends.
45
-
46
- ## Playing well with other access controls
47
-
48
- Client access is independent of
49
- [collaborators-only mode](https://docs.canopy.website/platform/members-and-access): you can lock
50
- the app down for Monks outside the team while a client with the password
51
- still gets in. That combination — "the client and the project team, nobody
52
- else" — is a common setup during a review phase.
53
-
54
- - [Members & access](https://docs.canopy.website/platform/members-and-access) — Who can view and who can manage a project, and how to tighten it.
@@ -1,93 +0,0 @@
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.
@@ -1,75 +0,0 @@
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.