@cloudgrid-io/mcp 0.20.20 → 0.20.22
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.
- package/package.json +2 -1
- package/src/corpus/capability-map.md +1 -1
- package/src/corpus/cloudgrid-yaml.md +3 -3
- package/src/corpus/examples/ai-app/index.md +20 -21
- package/src/corpus/templates/_cloudgrid.yaml.reference +2 -2
- package/src/corpus/templates/admin-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/ai-app/README.md +18 -13
- package/src/corpus/templates/ai-app/cloudgrid.yaml +2 -2
- package/src/corpus/templates/ai-app/index.md +23 -18
- package/src/corpus/templates/ai-app/services/web/app/api/chat/route.js +11 -8
- package/src/corpus/templates/ai-app/services/web/package.json +1 -1
- package/src/corpus/templates/ai-knowledge-base/AGENTS.md +19 -21
- package/src/corpus/templates/ai-knowledge-base/README.md +1 -1
- package/src/corpus/templates/ai-knowledge-base/cloudgrid.yaml +2 -2
- package/src/corpus/templates/ai-knowledge-base/index.md +2 -2
- package/src/corpus/templates/analytics-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/api-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/api-docs/cloudgrid.yaml +2 -2
- package/src/corpus/templates/api-service/cloudgrid.yaml +2 -2
- package/src/corpus/templates/app-with-data/cloudgrid.yaml +2 -2
- package/src/corpus/templates/appointment-booking/AGENTS.md +1 -1
- package/src/corpus/templates/appointment-booking/cloudgrid.yaml +2 -2
- package/src/corpus/templates/approval-workflow/AGENTS.md +2 -2
- package/src/corpus/templates/approval-workflow/cloudgrid.yaml +2 -2
- package/src/corpus/templates/billing-dashboard/AGENTS.md +2 -2
- package/src/corpus/templates/billing-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/blog-cms/cloudgrid.yaml +2 -2
- package/src/corpus/templates/booking-system/AGENTS.md +2 -2
- package/src/corpus/templates/booking-system/cloudgrid.yaml +2 -2
- package/src/corpus/templates/booking-system/index.md +1 -1
- package/src/corpus/templates/calendar-scheduler/AGENTS.md +1 -1
- package/src/corpus/templates/calendar-scheduler/cloudgrid.yaml +2 -2
- package/src/corpus/templates/calendar-scheduler/index.md +1 -1
- package/src/corpus/templates/changelog/cloudgrid.yaml +2 -2
- package/src/corpus/templates/company-website/cloudgrid.yaml +2 -2
- package/src/corpus/templates/course-platform/AGENTS.md +2 -2
- package/src/corpus/templates/course-platform/cloudgrid.yaml +2 -2
- package/src/corpus/templates/crm/cloudgrid.yaml +2 -2
- package/src/corpus/templates/dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/deck/cloudgrid.yaml +2 -2
- package/src/corpus/templates/directory/cloudgrid.yaml +2 -2
- package/src/corpus/templates/docs-site/cloudgrid.yaml +2 -2
- package/src/corpus/templates/erp/AGENTS.md +2 -2
- package/src/corpus/templates/erp/cloudgrid.yaml +2 -2
- package/src/corpus/templates/erp/index.md +1 -1
- package/src/corpus/templates/event-board/cloudgrid.yaml +2 -2
- package/src/corpus/templates/expense-tracker/cloudgrid.yaml +2 -2
- package/src/corpus/templates/feature-request-board/cloudgrid.yaml +2 -2
- package/src/corpus/templates/financial-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/forum/AGENTS.md +3 -3
- package/src/corpus/templates/forum/cloudgrid.yaml +2 -2
- package/src/corpus/templates/hr-portal/AGENTS.md +1 -1
- package/src/corpus/templates/hr-portal/cloudgrid.yaml +2 -2
- package/src/corpus/templates/internal-tools-portal/AGENTS.md +2 -2
- package/src/corpus/templates/internal-tools-portal/cloudgrid.yaml +2 -2
- package/src/corpus/templates/inventory/cloudgrid.yaml +2 -2
- package/src/corpus/templates/invoice/cloudgrid.yaml +2 -2
- package/src/corpus/templates/job-board/cloudgrid.yaml +2 -2
- package/src/corpus/templates/kanban/cloudgrid.yaml +2 -2
- package/src/corpus/templates/landing-page/cloudgrid.yaml +2 -2
- package/src/corpus/templates/lms/AGENTS.md +3 -3
- package/src/corpus/templates/lms/cloudgrid.yaml +2 -2
- package/src/corpus/templates/marketplace/AGENTS.md +1 -1
- package/src/corpus/templates/marketplace/cloudgrid.yaml +2 -2
- package/src/corpus/templates/marketplace/index.md +1 -1
- package/src/corpus/templates/membership-site/AGENTS.md +1 -1
- package/src/corpus/templates/membership-site/cloudgrid.yaml +2 -2
- package/src/corpus/templates/monitoring-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/online-store/AGENTS.md +1 -1
- package/src/corpus/templates/online-store/cloudgrid.yaml +2 -2
- package/src/corpus/templates/portfolio/cloudgrid.yaml +2 -2
- package/src/corpus/templates/product-catalog/cloudgrid.yaml +2 -2
- package/src/corpus/templates/product-launch/cloudgrid.yaml +2 -2
- package/src/corpus/templates/project-management/cloudgrid.yaml +2 -2
- package/src/corpus/templates/property-listings/cloudgrid.yaml +2 -2
- package/src/corpus/templates/quiz-platform/cloudgrid.yaml +2 -2
- package/src/corpus/templates/report/cloudgrid.yaml +2 -2
- package/src/corpus/templates/restaurant-reservations/AGENTS.md +2 -2
- package/src/corpus/templates/restaurant-reservations/cloudgrid.yaml +2 -2
- package/src/corpus/templates/revenue-dashboard/cloudgrid.yaml +2 -2
- package/src/corpus/templates/saas-marketing/cloudgrid.yaml +2 -2
- package/src/corpus/templates/semantic-search/cloudgrid.yaml +1 -1
- package/src/corpus/templates/simple-semantic-search/cloudgrid.yaml +3 -3
- package/src/corpus/templates/status-page/cloudgrid.yaml +2 -2
- package/src/corpus/templates/subscription-management/AGENTS.md +1 -1
- package/src/corpus/templates/subscription-management/cloudgrid.yaml +2 -2
- package/src/corpus/templates/task-manager/cloudgrid.yaml +2 -2
- package/src/corpus/templates/ticket-system/cloudgrid.yaml +2 -2
- package/src/corpus/templates/time-tracking/cloudgrid.yaml +2 -2
- package/src/corpus/templates/travel-booking/AGENTS.md +2 -2
- package/src/corpus/templates/travel-booking/cloudgrid.yaml +2 -2
- package/src/corpus/templates/travel-booking/index.md +1 -1
- package/src/corpus/templates/waitlist/cloudgrid.yaml +2 -2
- package/src/corpus/templates/web-app/cloudgrid.yaml +2 -2
- package/src/corpus/workflows/ai-app.md +13 -9
- package/src/corpus/workflows/ai-knowledge-base.md +15 -12
- package/src/tools/constants.js +1 -1
- package/src/tools/register.js +22 -14
- package/src/tools.js +1 -1
|
@@ -96,7 +96,7 @@ name: my-app
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -113,7 +113,7 @@ clients racing for the same slot cannot both win.
|
|
|
113
113
|
non-secret `services.web.env` block (or as a build-time env), NOT the vault.
|
|
114
114
|
- **AI (optional)** — if you add AI features (e.g. natural-language "book me next
|
|
115
115
|
Tuesday afternoon"), declare `needs: { ai: true }` and call the gateway at
|
|
116
|
-
`process.env.
|
|
116
|
+
`process.env.RUNTIME_GATEWAY_URL` via `@cloudgrid-io/runtime`. Not required for this
|
|
117
117
|
blueprint.
|
|
118
118
|
|
|
119
119
|
## 4. Wiring auth + payments
|
|
@@ -96,7 +96,7 @@ name: appointment-booking
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -197,7 +197,7 @@ services:
|
|
|
197
197
|
# path: /api/health
|
|
198
198
|
# expected: "200"
|
|
199
199
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
200
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
200
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
201
201
|
# env:
|
|
202
202
|
# LOG_LEVEL: info
|
|
203
203
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -116,8 +116,8 @@ routes and the UI agree on what is legal.
|
|
|
116
116
|
Do NOT hardcode keys and do NOT set `DATABASE_MONGODB_URL`/`MONGODB_URL`
|
|
117
117
|
yourself — the grid injects the DB vars.
|
|
118
118
|
- **AI (optional):** if you add AI (e.g. auto-summarize a request), declare
|
|
119
|
-
`needs: { ai: true }`; the grid injects **`
|
|
120
|
-
through `@cloudgrid-io/
|
|
119
|
+
`needs: { ai: true }`; the grid injects **`RUNTIME_GATEWAY_URL`** and you call it
|
|
120
|
+
through `@cloudgrid-io/runtime`.
|
|
121
121
|
- **Non-secret config** → `grid env`. **Secrets** → `grid secrets set` (mapped by
|
|
122
122
|
`vault:`).
|
|
123
123
|
|
|
@@ -96,7 +96,7 @@ name: approval-workflow
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -196,7 +196,7 @@ services:
|
|
|
196
196
|
# path: /api/health
|
|
197
197
|
# expected: "200"
|
|
198
198
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
199
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
199
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
200
200
|
# env:
|
|
201
201
|
# LOG_LEVEL: info
|
|
202
202
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -114,8 +114,8 @@ total from the verified Stripe event.
|
|
|
114
114
|
`vault:`; non-secret flags (log level, default currency) can be plain
|
|
115
115
|
`services.web.env` entries or `grid env`.
|
|
116
116
|
- **AI (only if you add it, e.g. an AI usage-forecast):** declare
|
|
117
|
-
`needs: { ai: true }` and the platform injects **`
|
|
118
|
-
`@cloudgrid-io/
|
|
117
|
+
`needs: { ai: true }` and the platform injects **`RUNTIME_GATEWAY_URL`**; call it via
|
|
118
|
+
`@cloudgrid-io/runtime`. Not required for a billing dashboard.
|
|
119
119
|
|
|
120
120
|
## 4. Wiring payments (Stripe) — and optional auth
|
|
121
121
|
|
|
@@ -96,7 +96,7 @@ name: billing-dashboard
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -195,7 +195,7 @@ services:
|
|
|
195
195
|
# path: /api/health
|
|
196
196
|
# expected: "200"
|
|
197
197
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
198
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
198
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
199
199
|
# env:
|
|
200
200
|
# LOG_LEVEL: info
|
|
201
201
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: blog-cms
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -100,8 +100,8 @@ You do NOT provision infra or set connection strings/secrets by hand. Declared i
|
|
|
100
100
|
`STRIPE_KEY`, `STRIPE_WEBHOOK_SECRET`, `AUTH_PROVIDER_KEY`. Add the underlying
|
|
101
101
|
vault items with `grid secrets set <item> <value>` (or the vault UI) BEFORE
|
|
102
102
|
plug, so resolution succeeds. Never hardcode a key; never commit `.env`.
|
|
103
|
-
- **AI (`needs: { ai: true }`, if you add it)** → `
|
|
104
|
-
`@cloudgrid-io/
|
|
103
|
+
- **AI (`needs: { ai: true }`, if you add it)** → `RUNTIME_GATEWAY_URL`, used via
|
|
104
|
+
`@cloudgrid-io/runtime`. Not required for a basic booking system.
|
|
105
105
|
|
|
106
106
|
Read every injected var lazily (inside getters), same rule as the DB.
|
|
107
107
|
|
|
@@ -96,7 +96,7 @@ name: booking-system
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -197,7 +197,7 @@ services:
|
|
|
197
197
|
# path: /api/health
|
|
198
198
|
# expected: "200"
|
|
199
199
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
200
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
200
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
201
201
|
# env:
|
|
202
202
|
# LOG_LEVEL: info
|
|
203
203
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -64,7 +64,7 @@ The heart of this blueprint. Read it before building. It covers:
|
|
|
64
64
|
2. **Mongo collections + fields** — `services`, `availabilityRules`, `bookings`,
|
|
65
65
|
plus the overlap-check + unique-index rule that prevents double-booking.
|
|
66
66
|
3. **CloudGrid injection** — `DATABASE_MONGODB_URL` for Mongo, `vault:` → env
|
|
67
|
-
vars for secrets, `
|
|
67
|
+
vars for secrets, `RUNTIME_GATEWAY_URL` for ai.
|
|
68
68
|
4. **Auth + payments wiring** — provider SDK from `AUTH_PROVIDER_KEY`; Stripe
|
|
69
69
|
checkout + signature-verified webhook from `STRIPE_KEY` /
|
|
70
70
|
`STRIPE_WEBHOOK_SECRET`.
|
|
@@ -99,7 +99,7 @@ injected as env vars at `grid dev` (local) and at runtime (after `grid plug`):
|
|
|
99
99
|
| Stripe secret (optional, paid booking) | `vault: { STRIPE_KEY: stripe-live-key }` | `STRIPE_KEY` | `lib/stripe.js` |
|
|
100
100
|
| Stripe webhook secret (optional) | `vault: { STRIPE_WEBHOOK_SECRET: stripe-webhook-secret }` | `STRIPE_WEBHOOK_SECRET` | `api/webhooks/stripe/route.js` |
|
|
101
101
|
| Email/SMS key (optional, reminders) | `vault: { SENDGRID_API_KEY: sendgrid-key }` | `SENDGRID_API_KEY` | reminder job / `lib/notify.js` |
|
|
102
|
-
| AI (optional) | `needs: { ai: true }` | `
|
|
102
|
+
| AI (optional) | `needs: { ai: true }` | `RUNTIME_GATEWAY_URL` | via `@cloudgrid-io/runtime` |
|
|
103
103
|
|
|
104
104
|
The `vault:` block only **maps** an org vault item key → an env var name. You must
|
|
105
105
|
store the real value once with `grid secrets set <vault-item-key> <value>` (e.g.
|
|
@@ -96,7 +96,7 @@ needs:
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -204,7 +204,7 @@ services:
|
|
|
204
204
|
# path: /api/health
|
|
205
205
|
# expected: "200"
|
|
206
206
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
207
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
207
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
208
208
|
# env:
|
|
209
209
|
# LOG_LEVEL: info
|
|
210
210
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -77,7 +77,7 @@ on #1543), and the `write files → grid plug --no-deploy → secrets set → gr
|
|
|
77
77
|
`STRIPE_WEBHOOK_SECRET`) and a signed webhook.
|
|
78
78
|
- Pick a date library (luxon / date-fns-tz) for timezone + recurrence math; keep
|
|
79
79
|
it in `lib/time.js`.
|
|
80
|
-
- Add `needs: { ai: true }` (injects `
|
|
80
|
+
- Add `needs: { ai: true }` (injects `RUNTIME_GATEWAY_URL`) only for AI features like
|
|
81
81
|
natural-language event entry.
|
|
82
82
|
- Reminders: leave the cron `reminders` service commented until #1543 ships; use
|
|
83
83
|
the interim external-scheduler-hits-an-HTTP-route workaround (AGENTS.md §5) if
|
|
@@ -96,7 +96,7 @@ name: changelog
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -101,7 +101,7 @@ name: company-website
|
|
|
101
101
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
102
102
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
103
103
|
# disk: true
|
|
104
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
104
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
105
105
|
# ai: true
|
|
106
106
|
|
|
107
107
|
|
|
@@ -197,7 +197,7 @@ services:
|
|
|
197
197
|
# path: /api/health
|
|
198
198
|
# expected: "200"
|
|
199
199
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
200
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
200
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
201
201
|
# env:
|
|
202
202
|
# LOG_LEVEL: info
|
|
203
203
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -86,11 +86,11 @@ runtime (after `grid plug`).
|
|
|
86
86
|
injects them as the named env vars. Read them lazily too (inside the Stripe/auth
|
|
87
87
|
client getters), not at module top level.
|
|
88
88
|
- **AI (only if you add tutoring/quiz-gen)** — `needs: { ai: true }` → injects
|
|
89
|
-
**`
|
|
89
|
+
**`RUNTIME_GATEWAY_URL`**; call it via `@cloudgrid-io/runtime`. Not enabled in this
|
|
90
90
|
blueprint; add the need if you want it.
|
|
91
91
|
|
|
92
92
|
Reserved env var names you must NOT set yourself: `PORT`, `NODE_ENV`,
|
|
93
|
-
`DATABASE_MONGODB_URL`/`MONGODB_URL`, `
|
|
93
|
+
`DATABASE_MONGODB_URL`/`MONGODB_URL`, `RUNTIME_GATEWAY_URL`, `CLOUDGRID_*`.
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
@@ -96,7 +96,7 @@ name: course-platform
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -197,7 +197,7 @@ services:
|
|
|
197
197
|
# path: /api/health
|
|
198
198
|
# expected: "200"
|
|
199
199
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
200
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
200
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
201
201
|
# env:
|
|
202
202
|
# LOG_LEVEL: info
|
|
203
203
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: my-crm
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -102,7 +102,7 @@ name: dashboard
|
|
|
102
102
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
103
103
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
104
104
|
# disk: true
|
|
105
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
105
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
106
106
|
# ai: true
|
|
107
107
|
|
|
108
108
|
|
|
@@ -198,7 +198,7 @@ services:
|
|
|
198
198
|
# path: /api/health
|
|
199
199
|
# expected: "200"
|
|
200
200
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
201
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
201
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
202
202
|
# env:
|
|
203
203
|
# LOG_LEVEL: info
|
|
204
204
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -102,7 +102,7 @@ name: deck
|
|
|
102
102
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
103
103
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
104
104
|
# disk: true
|
|
105
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
105
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
106
106
|
# ai: true
|
|
107
107
|
|
|
108
108
|
|
|
@@ -198,7 +198,7 @@ services:
|
|
|
198
198
|
# path: /api/health
|
|
199
199
|
# expected: "200"
|
|
200
200
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
201
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
201
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
202
202
|
# env:
|
|
203
203
|
# LOG_LEVEL: info
|
|
204
204
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: my-directory
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: docs-site
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -67,8 +67,8 @@ Add indexes as the data grows (e.g. `items.sku` unique, `orders.status`).
|
|
|
67
67
|
yaml only names the mapping. (One-off non-vault secrets can also go via
|
|
68
68
|
`grid secrets set`; non-secret config via `grid env`.) Never commit a key.
|
|
69
69
|
- **AI (optional):** if a module uses AI (e.g. demand forecasting), add
|
|
70
|
-
`ai: true` under `needs:` — the grid injects `
|
|
71
|
-
`@cloudgrid-io/
|
|
70
|
+
`ai: true` under `needs:` — the grid injects `RUNTIME_GATEWAY_URL`, called via
|
|
71
|
+
`@cloudgrid-io/runtime`. Not enabled by default in this blueprint.
|
|
72
72
|
|
|
73
73
|
## 4. Wiring auth + RBAC and payments
|
|
74
74
|
|
|
@@ -96,7 +96,7 @@ name: my-erp
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -195,7 +195,7 @@ services:
|
|
|
195
195
|
# path: /api/health
|
|
196
196
|
# expected: "200"
|
|
197
197
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
198
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
198
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
199
199
|
# env:
|
|
200
200
|
# LOG_LEVEL: info
|
|
201
201
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -62,7 +62,7 @@ needs:
|
|
|
62
62
|
|
|
63
63
|
> **Capability:** this template needs `database: true` (Mongo → `DATABASE_MONGODB_URL`
|
|
64
64
|
> + legacy `MONGODB_URL`) and a `vault:` block for auth + Stripe secrets. Optional
|
|
65
|
-
> `ai: true` adds `
|
|
65
|
+
> `ai: true` adds `RUNTIME_GATEWAY_URL` for forecasting. `requires:` is the deprecated v1
|
|
66
66
|
> alias — don't mix it with `needs:`. See the capability-map for the full injection
|
|
67
67
|
> table.
|
|
68
68
|
|
|
@@ -96,7 +96,7 @@ name: event-board
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: expense-tracker
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: feature-request-board
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: financial-dashboard
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -106,10 +106,10 @@ dev` and runtime.
|
|
|
106
106
|
keys to whatever the provider SDK expects (see §4) and set the vault items with
|
|
107
107
|
`grid_set_secret` / the org vault — do not commit keys.
|
|
108
108
|
- **AI (optional)** — if you add `needs: { ai: true }` (e.g. auto-moderation or
|
|
109
|
-
summarize-thread), the grid injects **`
|
|
110
|
-
`@cloudgrid-io/
|
|
109
|
+
summarize-thread), the grid injects **`RUNTIME_GATEWAY_URL`**; call it via
|
|
110
|
+
`@cloudgrid-io/runtime`. Not required for the base forum.
|
|
111
111
|
- **Reserved vars** you must NOT set yourself: `PORT`, `NODE_ENV`,
|
|
112
|
-
`DATABASE_MONGODB_URL`, `MONGODB_URL`, `REDIS_URL`, `
|
|
112
|
+
`DATABASE_MONGODB_URL`, `MONGODB_URL`, `REDIS_URL`, `RUNTIME_GATEWAY_URL`,
|
|
113
113
|
`CLOUDGRID_*`.
|
|
114
114
|
|
|
115
115
|
`lib/db.js` — copy the lazy-getter pattern from `app-with-data`:
|
|
@@ -96,7 +96,7 @@ name: forum
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -196,7 +196,7 @@ services:
|
|
|
196
196
|
# path: /api/health
|
|
197
197
|
# expected: "200"
|
|
198
198
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
199
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
199
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
200
200
|
# env:
|
|
201
201
|
# LOG_LEVEL: info
|
|
202
202
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -106,7 +106,7 @@ dev-time (`grid dev`) and runtime (after `grid plug`).
|
|
|
106
106
|
`NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY`, or `AUTH0_SECRET` / `AUTH0_CLIENT_ID` /
|
|
107
107
|
`AUTH0_CLIENT_SECRET`) — just keep the `vault:` map keys and the code in sync.
|
|
108
108
|
- **AI (optional):** if you later add `needs: { ai: true }`, the grid injects
|
|
109
|
-
**`
|
|
109
|
+
**`RUNTIME_GATEWAY_URL`** for use with `@cloudgrid-io/runtime` (e.g. drafting policy text
|
|
110
110
|
or summarizing requests). Not required for the core portal.
|
|
111
111
|
|
|
112
112
|
Non-secret config (log level, default PTO allotment) → `services.web.env` in the
|
|
@@ -96,7 +96,7 @@ name: hr-portal
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -196,7 +196,7 @@ services:
|
|
|
196
196
|
# path: /api/health
|
|
197
197
|
# expected: "200"
|
|
198
198
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
199
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
199
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
200
200
|
# env:
|
|
201
201
|
# LOG_LEVEL: info
|
|
202
202
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -128,8 +128,8 @@ dev-time (`grid dev`) and runtime (after `grid plug`).
|
|
|
128
128
|
A tool that talks to a third-party API (Stripe, SendGrid, an internal service
|
|
129
129
|
token) adds one more `vault:` line per secret, e.g. `STRIPE_KEY: stripe-live-key`.
|
|
130
130
|
- **AI (optional):** if a tool needs an LLM (draft copy, summarize a record), add
|
|
131
|
-
`needs: { ai: true }` and the grid injects **`
|
|
132
|
-
`@cloudgrid-io/
|
|
131
|
+
`needs: { ai: true }` and the grid injects **`RUNTIME_GATEWAY_URL`** for use with
|
|
132
|
+
`@cloudgrid-io/runtime`. Not required for the core portal.
|
|
133
133
|
|
|
134
134
|
Non-secret config (log level, feature toggles) → `services.web.env` in the yaml,
|
|
135
135
|
or `grid env`. Actual secrets → the vault (never `env:`, never committed).
|
|
@@ -96,7 +96,7 @@ name: internal-tools-portal
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -196,7 +196,7 @@ services:
|
|
|
196
196
|
# path: /api/health
|
|
197
197
|
# expected: "200"
|
|
198
198
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
199
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
199
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
200
200
|
# env:
|
|
201
201
|
# LOG_LEVEL: info
|
|
202
202
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: my-inventory
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|
|
@@ -96,7 +96,7 @@ name: my-invoices
|
|
|
96
96
|
# # disk — persistent FS mount (PVC). Injects DISK_PATH. Pins to 1 replica.
|
|
97
97
|
# # true | { size: 1Gi, mount: /var/data } (forbidden: /proc /sys /dev)
|
|
98
98
|
# disk: true
|
|
99
|
-
# # ai — AI Gateway via @cloudgrid-io/
|
|
99
|
+
# # ai — AI Gateway via @cloudgrid-io/runtime. Injects RUNTIME_GATEWAY_URL. true | false.
|
|
100
100
|
# ai: true
|
|
101
101
|
|
|
102
102
|
|
|
@@ -192,7 +192,7 @@ services:
|
|
|
192
192
|
# path: /api/health
|
|
193
193
|
# expected: "200"
|
|
194
194
|
# Static runtime env vars (strings). Reserved: PORT, APP_NAME, SERVICE_NAME,
|
|
195
|
-
# NODE_ENV, MONGODB_URL, REDIS_URL,
|
|
195
|
+
# NODE_ENV, MONGODB_URL, REDIS_URL, RUNTIME_GATEWAY_URL, N8N_WEBHOOK_URL, CLOUDGRID_*.
|
|
196
196
|
# env:
|
|
197
197
|
# LOG_LEVEL: info
|
|
198
198
|
# Sibling services/private resources that must be Ready first (no cron, no cycles).
|