You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit adbaa97
Browse filesBrowse the repository at this point in the historyBrowse files
fix(docs): correct the Sandboxes settings state and the setup doctor scope
The Sandboxes settings entry keeps its sidebar row and shows an upgrade notice until the server's readiness check passes, so say that instead of claiming the section is hidden, and add a troubleshooting bullet for that state. Describe NEXT_PUBLIC_SANDBOXES_ENABLED as an assertion the operator makes rather than a copy of readiness, invoke the setup doctor as npx sim-setup doctor throughout, and qualify its diagnostic mentions to Compose installs and source checkouts.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/enterprise/data-drains.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -237,7 +237,7 @@ DATA_DRAINS_ENABLED=true
237
237
NEXT_PUBLIC_DATA_DRAINS_ENABLED=true
238
238
```
239
239
240
-
`DATA_DRAINS_ENABLED` shows the **Settings → Organization → Data drains** page and gates the server-side mutating endpoints and the cron dispatcher — when unset on a self-hosted deployment, the page is hidden, drain create/update/delete/run requests return `404`, and the dispatcher is a no-op. Set `NEXT_PUBLIC_DATA_DRAINS_ENABLED` to the same value so the browser's configuration matches the server's; `npx sim-setup doctor` reports the pair disagreeing.
240
+
`DATA_DRAINS_ENABLED` shows the **Settings → Organization → Data drains** page and gates the server-side mutating endpoints and the cron dispatcher — when unset on a self-hosted deployment, the page is hidden, drain create/update/delete/run requests return `404`, and the dispatcher is a no-op. Set `NEXT_PUBLIC_DATA_DRAINS_ENABLED` to the same value so the browser's configuration matches the server's; on a Compose install or source checkout, `npx sim-setup doctor` reports the pair disagreeing.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/enterprise/self-hosted.mdx
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ There are two parts to getting this right, and skipping the second is the most c
16
16
17
17
## Enable the feature set
18
18
19
-
Set the master switch and its client twin. Both are required. The server value decides access and what a workspace shows: settings sections and block fields read the deployment's server-resolved configuration, so the sidebar and the API answer the same question. The `NEXT_PUBLIC_` value covers what renders before a workspace loads — the SSO entry point on the login page — and `npx sim-setup doctor` reports any pair that disagrees.
19
+
Set the master switch and its client twin. Both are required. The server value decides access and what a workspace shows: settings sections and block fields read the deployment's server-resolved configuration, so the sidebar and the API answer the same question. The `NEXT_PUBLIC_` value covers what renders before a workspace loads — the SSO entry point on the login page. On a Compose install or source checkout, `npx sim-setup doctor` reports any pair that disagrees; see [Verify your install](/platform/self-hosting/verify).
20
20
21
21
```bash
22
22
ENTERPRISE_ENABLED=true
@@ -59,7 +59,7 @@ Three features do not need a flag at all: **custom branding**, **session policie
59
59
| Sim Mailer inbox — on by default |`INBOX_ENABLED`|`NEXT_PUBLIC_INBOX_ENABLED`|
Sandboxes also need a remote execution provider and a dedicated Function base image before they can run anything. `SANDBOXES_ENABLED` grants the server-side entitlement, and Shell and **Settings → Sandboxes**appear only once the server has also verified the provider credentials and an immutable Function base. `NEXT_PUBLIC_SANDBOXES_ENABLED`is the browser's copy of that readiness: it reveals the Function block's Sandbox selector, and `npx sim-setup doctor`checks it against the server. Set it only after the selected provider has credentials and a valid immutable Function base configured.
62
+
Sandboxes also need a remote execution provider and a dedicated Function base image before they can run anything. `SANDBOXES_ENABLED` grants the server-side entitlement, and the server also verifies the provider credentials and an immutable Function base before it reports Sandboxes as available. Until then a workspace offers no Shell language, and **Settings → Sandboxes**stays in the sidebar but shows an upgrade notice instead of the sandbox list. `NEXT_PUBLIC_SANDBOXES_ENABLED`asserts that readiness to the browser rather than checking it: it reveals the Function block's Sandbox selector, and `npx sim-setup doctor`compares it with the server. Set it only after the selected provider has credentials and a valid immutable Function base configured.
63
63
64
64
JavaScript without `import` or `require` does not use the remote provider and continues to run in the local isolated VM when all Sandbox flags are off. Python, Shell, JavaScript with external imports, and selected custom Sandboxes fail with an explicit configuration error until the remote Function base is ready.
65
65
@@ -251,7 +251,9 @@ If a feature is enabled but nothing appears, check these in order.
251
251
252
252
**The settings section is missing.** The server-side variable is not set, or the app was not restarted after adding it. Variables are read at boot from the container environment, so a restart is enough — no rebuild.
253
253
254
-
**The section appears but the login page has no SSO option, or the Function block has no Sandbox selector.** The `NEXT_PUBLIC_` twin is missing while the server-side variable is set. A workspace follows the server, but the login page renders before any workspace loads and reads the twin, and the Sandbox selector does too. Set both; `npx sim-setup doctor` reports the pair disagreeing.
254
+
**Settings → Sandboxes shows an upgrade notice instead of the sandbox list.**`SANDBOXES_ENABLED` is unset, or the selected provider failed the server's readiness check — missing credentials, or a Function base that is not an immutable reference. The page stays in the sidebar either way. See [Sandboxes](/platform/self-hosting/sandboxes).
255
+
256
+
**The section appears but the login page has no SSO option, or the Function block has no Sandbox selector.** The `NEXT_PUBLIC_` twin is missing while the server-side variable is set. A workspace follows the server, but the login page renders before any workspace loads and reads the twin, and the Sandbox selector does too. Set both; on a Compose install or source checkout, `npx sim-setup doctor` reports the pair disagreeing.
255
257
256
258
**The feature is on but has no effect inside a workspace.** The workspace is not owned by an organization. Check `workspace_mode` and `organization_id`:
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/environment-variables.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -144,7 +144,7 @@ Who may sign up and sign in — the allowlists, blocklists, `DISABLE_REGISTRATIO
144
144
|`E2B_FUNCTION_TEMPLATE_GENERATION`| Monotonic release generation printed by the same build. Required for E2B |
145
145
|`DAYTONA_FUNCTION_SNAPSHOT_ID`| Immutable snapshot **ID** (not a name) for the Function base image. Required for Daytona |
146
146
|`E2B_PI_TEMPLATE_ID` / `DAYTONA_PI_SNAPSHOT_ID`| The image Pi runs on. Separate from the Function base — configuring the provider and Function image alone leaves Pi failing closed |
147
-
|`SANDBOXES_ENABLED` / `NEXT_PUBLIC_SANDBOXES_ENABLED`| Enable custom sandboxes on a self-hosted deployment, bypassing the hosted-plan requirement. Neither is sufficient on its own — a provider key **and** an immutable Function base must also be configured. Set the `NEXT_PUBLIC_` twin only after the server side works; it enables nothing by itself — it reveals the Function block's Sandbox selector and lets `sim-setup doctor` confirm the two sides agree |
147
+
|`SANDBOXES_ENABLED` / `NEXT_PUBLIC_SANDBOXES_ENABLED`| Enable custom sandboxes on a self-hosted deployment, bypassing the hosted-plan requirement. Neither is sufficient on its own — a provider key **and** an immutable Function base must also be configured. Set the `NEXT_PUBLIC_` twin only after the server side works; it enables nothing by itself — it reveals the Function block's Sandbox selector and lets `npx sim-setup doctor` confirm the two sides agree |
148
148
|`IVM_MAX_EXECUTIONS_PER_WORKER`| Executions before an isolated-vm worker is recycled |
149
149
|`IVM_MAX_BROKERS_PER_EXECUTION`| Host-call brokers per execution |
150
150
|`IVM_MAX_BROKER_ARGS_JSON_CHARS`| Max argument payload size |
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/sandboxes.mdx
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,9 +15,9 @@ Until the base image is configured, those languages fail with an explicit config
15
15
| Variable | Purpose |
16
16
| --- | --- |
17
17
|`SANDBOXES_ENABLED`| Grants the server-side self-hosted entitlement |
18
-
|`NEXT_PUBLIC_SANDBOXES_ENABLED`|The browser's copy of provider readiness. Reveals the Function block's Sandbox selector; `sim-setup doctor`checks it against the server |
18
+
|`NEXT_PUBLIC_SANDBOXES_ENABLED`|Browser gate for the Function block's Sandbox selector. An assertion of provider readiness, not a check; `npx sim-setup doctor`compares it with the server |
19
19
20
-
Shell and **Settings → Sandboxes** follow the server: a workspace shows them only when `SANDBOXES_ENABLED` is set and the server has verified the provider credentials and an immutable Function base. `NEXT_PUBLIC_SANDBOXES_ENABLED` is a browser gate for one control, the Function block's Sandbox selector. Whether Python or a selected sandbox actually runs depends on the server-side provider and Function image, so set it only after those work, or you surface a selector for sandboxes that cannot run.
20
+
Shell follows the server: a workspace offers it only when `SANDBOXES_ENABLED` is set and the server has verified the provider credentials and an immutable Function base. **Settings → Sandboxes** stays in the sidebar either way, but shows an upgrade notice instead of the sandbox list until that check passes. `NEXT_PUBLIC_SANDBOXES_ENABLED` is a browser gate for one control, the Function block's Sandbox selector. Whether Python or a selected sandbox actually runs depends on the server-side provider and Function image, so set it only after those work, or you surface a selector for sandboxes that cannot run.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/security.mdx
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,8 +133,9 @@ Workflows can execute user-authored JavaScript and Python. Know which sandbox yo
133
133
Python, Shell, JavaScript with external imports, and tooling-dependent blocks
134
134
require a remote sandbox provider. On a billing-free self-host the provider and
135
135
Function base are not sufficient on their own: `SANDBOXES_ENABLED`grants the
136
-
server-side entitlement, and without it Shell and the Sandboxes settings stay
137
-
hidden even when the provider is configured correctly. JavaScript without `import` or `require`
136
+
server-side entitlement, and without it a workspace offers no Shell language and the
137
+
Sandboxes settings page shows an upgrade notice even when the provider is configured
138
+
correctly. JavaScript without `import` or `require`
138
139
continues to run in the in-process isolate when no remote provider is configured.
139
140
140
141
<Callout type="warn">
@@ -151,7 +152,7 @@ Two browser-side variables project server state into the UI, and neither is deri
151
152
152
153
| Variable | Effect when unset |
153
154
|---|---|
154
-
| `NEXT_PUBLIC_SANDBOXES_ENABLED` | The Function block's Sandbox selector stays hidden, even with a working provider. Shell and **Settings → Sandboxes** are unaffected — a workspace shows them from the server's own readiness check. Python stays selectable; whether it runs depends on the server-side provider and Function image, not on this flag |
155
+
| `NEXT_PUBLIC_SANDBOXES_ENABLED` | The Function block's Sandbox selector stays hidden, even with a working provider. Shell and **Settings → Sandboxes** are unaffected — Shell appears, and the settings page swaps its upgrade notice for the sandbox list, from the server's own readiness check. Python stays selectable; whether it runs depends on the server-side provider and Function image, not on this flag |
155
156
| `NEXT_PUBLIC_E2B_ENABLED` | The E2B-backed Pi block modes stay hidden; `sim-setup doctor` reports it as a mismatch against `E2B_ENABLED`. Revealing them is not enough to make them run — Pi executes on its own image, pinned with `E2B_PI_TEMPLATE_ID` or `DAYTONA_PI_SNAPSHOT_ID`, and fails closed without it |
156
157
157
158
Set the public values only **after** the server-side configuration above is complete — they are assertions about readiness, not switches, and the server-side check has its own conditions beyond them. See [Sandboxes](/platform/self-hosting/sandboxes) for the base-image build and promotion procedure. `npx sim-setup doctor` reports a mismatch in either direction.
0 commit comments