Skip to content

Commit efe062c

Browse files
waleedlatif1claude
andcommitted
docs: fix prose defects found auditing the edited pages end to end
Reading the final state of all 34 pages as prose, rather than diffing them, surfaced seams that per-claim review cannot see. The worst was mine: an earlier replacement produced "with a configured Trigger.dev project, and a configured Trigger.dev project" in three files. Also fixed: - A dangling colon in troubleshooting where the list it introduced had been removed, and a lead-in promising two deployment options above a list of three. - "Before the UI walkthrough" on a section that now sits after it, and a reference to "steps 3 and 4 below" that are above. - A rollback snippet whose comment said to set the previous tag but whose commands never did, and an LM Studio section telling operators to recreate a service using the development compose file. - A scaling page that recommended the 8 Gi default two lines above warning that peaks reach 12 GB. - An ADFS example setting SSO_ISSUER to Sim's own URL, which the callout four lines earlier says it must not be. - Table cells that were sentence fragments, prose glued onto the end of an <Image> tag, and a comma splice. - Paragraphs restating an earlier paragraph on the same page verbatim, in access-control, self-hosted, whitelabeling, object-storage and email. - "canvas" used for the visual builder in five places, competitor name-dropping, and two marketing-shaped passages on operator pages. - Title Case headings in troubleshooting, the only page not using sentence case. - type="warning" normalized to type="warn". Both resolve identically in fumadocs, so this is consistency rather than a rendering fix. Every in-scope link and anchor still resolves after the heading renames. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
1 parent 4820548 commit efe062c

23 files changed

Lines changed: 74 additions & 75 deletions

apps/docs/content/docs/platform/enterprise/access-control.mdx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Access Control lets organization admins define permission groups that restrict w
1313

1414
## How it works
1515

16-
Access control is built around **permission groups**. Each group belongs to a specific organization and has a name, an optional description, a **workspace scope**, an optional **member** list, and a configuration that defines what its members can and cannot do. The organization's single **default group** is org-wide; every other group targets a **specific set of workspaces**. A non-default group with **no members** governs **all members** of its workspaces (including external members); adding members narrows it to only those people. Personal or grandfathered workspaces that do not belong to an organization have no permission groups.
16+
Each group belongs to a specific organization and has a name, an optional description, a **workspace scope**, an optional **member** list, and a configuration that defines what its members can and cannot do. Personal or grandfathered workspaces that do not belong to an organization have no permission groups.
1717

1818
Sim resolves the governing group for a user in a workspace deterministically:
1919

@@ -59,7 +59,9 @@ A workspace-scoped group with **no members** applies to everyone in its workspac
5959

6060
Controls which AI model providers members of this group can use.
6161

62-
<Image src="/static/enterprise/access-control-model-providers.png" alt="Model Providers tab showing a grid of AI providers including Ollama, vLLM, OpenAI, Anthropic, Google, Azure OpenAI, and others with checkboxes to allow or restrict access" width={900} height={430} /> The list shows all providers available in Sim.
62+
<Image src="/static/enterprise/access-control-model-providers.png" alt="Model Providers tab showing a grid of AI providers including Ollama, vLLM, OpenAI, Anthropic, Google, Azure OpenAI, and others with checkboxes to allow or restrict access" width={900} height={430} />
63+
64+
The list shows all providers available in Sim.
6365

6466
- **All checked (default):** All providers are allowed.
6567
- **Subset checked:** Only the selected providers are allowed. Any workflow block or agent using a provider not on the list will fail at execution time.
@@ -70,7 +72,9 @@ Expand a provider row to reach its **model denylist**. Clearing individual model
7072

7173
Controls which workflow blocks members can place and execute.
7274

73-
<Image src="/static/enterprise/access-control-blocks.png" alt="Blocks tab showing Core Blocks (Agent, API, Condition, Function, Knowledge, etc.) and Tools (integrations like 1Password, Ahrefs, Airtable, and more) with checkboxes to allow or restrict each" width={900} height={634} /> Blocks are split into two sections: **Core Blocks** (Agent, API, Condition, Function, etc.) and **Tools** (all integration blocks).
75+
<Image src="/static/enterprise/access-control-blocks.png" alt="Blocks tab showing Core Blocks (Agent, API, Condition, Function, Knowledge, etc.) and Tools (integrations like 1Password, Ahrefs, Airtable, and more) with checkboxes to allow or restrict each" width={900} height={634} />
76+
77+
Blocks are split into two sections: **Core Blocks** (Agent, API, Condition, Function, etc.) and **Tools** (all integration blocks).
7478

7579
- **All checked (default):** All blocks are allowed.
7680
- **Subset checked:** Only the selected blocks are allowed. Workflows that already contain a disallowed block will fail when run — they are not automatically modified.
@@ -83,7 +87,7 @@ Expand an integration block to reach its **tool denylist**. Clearing individual
8387

8488
#### Platform
8589

86-
Controls the modules, actions, and credentials available to group members. Every row refuses at the API, not only in the UI — clearing a box revokes the access, it does not merely hide a tab.
90+
Controls the modules, actions, and credentials available to group members. Every row refuses at the API, not only in the UI — clearing a box revokes the access; it does not merely hide a tab.
8791

8892
<Image src="/static/enterprise/access-control-platform.png" alt="Platform tab showing feature toggles grouped by category" width={900} height={566} />
8993

@@ -141,7 +145,7 @@ The **Chat Deployment** row also carries an **auth-mode allowlist** — *Auth mo
141145
| MCP Tools | Blocks agents from calling MCP tools. |
142146
| Custom Tools | Blocks agents from calling user-defined custom tools. |
143147
| Skills | Blocks agents from loading skills. |
144-
| Tool Auto-Approval | Prevents silencing a tool confirmation, so every call is confirmed again. |
148+
| Tool Auto-Approval | Prevents auto-approving tool calls, so every call must be confirmed. |
145149

146150
**Logs**
147151

@@ -156,7 +160,7 @@ The **Chat Deployment** row also carries an **auth-mode allowlist** — *Auth mo
156160
| Feature | What clearing it withholds |
157161
|---------|---------------------------|
158162
| Invitations | Prevents inviting anyone to a workspace or to the organization. |
159-
| Workspace Creation | Prevents creating new workspaces, which no existing group would govern. |
163+
| Workspace Creation | Prevents creating new workspaces. A new workspace falls outside every existing group's scope. |
160164
| Member Directory | Withholds the member directory. Members cannot see the names or email addresses of other members. |
161165

162166
**Credentials & Access**
@@ -174,12 +178,10 @@ The **Chat Deployment** row also carries an **auth-mode allowlist** — *Auth mo
174178

175179
Two rows — **Workspace Creation** and **Member Directory** — are read only from the organization's **default group**, because the act they govern names no workspace. On any other group the editor renders them inert, tags them **Organization**, and skips them in **Select All**. Set them on the default group.
176180

177-
Five more rows — **Integrations**, **API Keys**, **Invitations**, **Personal API Keys**, and **CLI Access** — apply on the group in front of you for anything scoped to one of its workspaces, but fall back to the default group for the account-level path of the same action (minting a personal key, an organization-wide invitation, an account-level CLI login). To close one of these completely, set it on the default group as well.
181+
Five more rows — **Integrations**, **API Keys**, **Invitations**, **Personal API Keys**, and **CLI Access** — apply on the group in front of you for anything scoped to one of its workspaces. The account-level path of the same action falls back to the default group: minting a personal key, an organization-wide invitation, an account-level CLI login. To close one of these completely, set it on the default group as well.
178182

179183
### 4. Choose who it applies to
180184

181-
A workspace-scoped group applies to **all members of its workspaces by default** — including external members. To restrict it to specific people instead, open the group's **Details → General** tab and add members by searching your organization by name or email. Removing every member returns the group to governing everyone in its workspaces.
182-
183185
A user is governed by one group per workspace, so adding a user is rejected when it would conflict with another of their groups on a shared workspace (skipped rather than added in bulk). The default group ignores members entirely — it always governs everyone not covered by a workspace group.
184186

185187
A workspace also has at most one all-members group. Adding a workspace to a group, or removing a group's last member, is rejected when doing so would violate that — memberships and scopes are never silently moved.

apps/docs/content/docs/platform/enterprise/custom-blocks.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ A custom block always runs the **latest deployed version** of its source workflo
1414

1515
## Common uses
1616

17-
Custom blocks turn a workflow one team owns into infrastructure the whole organization can safely reuse. Credentials and complexity stay with the block's author; everyone else gets a clean block that's always up to date. A few patterns:
17+
The block's author keeps the credentials and the workflow logic; consumers see only the inputs and outputs. Common patterns:
1818

1919
- **Internal API gateway.** Wrap an authenticated internal or partner endpoint — "Create Ticket", "Charge Account", "Provision User" — behind a block that takes only the business inputs. Teammates call it without the base URL, API key, or auth headers, and when the endpoint changes you update one workflow instead of every consumer's.
2020
- **Blessed knowledge lookup.** Package a vetted retrieval pipeline — chunking, filters, reranking — as "Search Company Docs" with a single query input, so teams reuse the approved retrieval instead of each rebuilding it.
@@ -90,13 +90,13 @@ Click **Save changes**. The block is published immediately and becomes available
9090

9191
## Using a custom block
9292

93-
In the workflow editor, open the block toolbar. Published custom blocks appear under a **Custom blocks** section. Drag one onto the canvas like any other block, fill in its inputs (using the placeholders as a guide), and reference its outputs in downstream blocks.
93+
In the workflow editor, open the block toolbar. Published custom blocks appear under a **Custom blocks** section. Drag one into your workflow like any other block, fill in its inputs (using the placeholders as a guide), and reference its outputs in downstream blocks.
9494

9595
<Image src="/static/enterprise/custom-blocks-toolbar.png" alt="Workflow editor block toolbar with a Custom Blocks section listing two published blocks below Core Blocks" width={400} height={476} />
9696

9797
Consumers don't need any access to the source workflow. The block runs on its own, using only the inputs provided, and returns only the outputs you exposed. Its internal steps, models, and intermediate values stay hidden unless the block's publisher turned on **Trace runs in consumer logs**, in which case they appear under the block in the run's trace.
9898

99-
<Image src="/static/enterprise/custom-blocks-canvas.png" alt="A custom block connected to a Start block on the workflow canvas, with its query input filled in and the run output showing the returned fields" width={900} height={570} />
99+
<Image src="/static/enterprise/custom-blocks-canvas.png" alt="A custom block connected to a Start block in the workflow editor, with its query input filled in and the run output showing the returned fields" width={900} height={570} />
100100

101101
---
102102

apps/docs/content/docs/platform/enterprise/data-drains.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ The **last 10 runs** for each drain are visible by expanding its row in the sett
187187

188188
## Pairing with Data Retention
189189

190-
Drains and [Data Retention](/platform/enterprise/data-retention) are independent modules. Sim does **not** gate retention on drain progress — if a drain is failing, retention will still purge data on its own schedule. This matches the model used by Datadog Archives and AWS CloudWatch + S3 Export: keep the two configurations orthogonal and let the customer pair them deliberately.
190+
Drains and [Data Retention](/platform/enterprise/data-retention) are independent modules. Sim does **not** gate retention on drain progress — if a drain is failing, retention will still purge data on its own schedule. Keep the two configurations independent and pair them deliberately.
191191

192192
To safely use both together, set the drain cadence shorter than the retention period for the same data category:
193193

@@ -260,4 +260,4 @@ curl -H "Authorization: Bearer $CRON_SECRET" \
260260
https://sim.example.com/api/cron/run-data-drains
261261
```
262262

263-
Each due drain is then fanned out as a `run-data-drain` background job, so the deployment also needs `TRIGGER_DEV_ENABLED` with a configured Trigger.dev project, and a configured Trigger.dev project. Without it the dispatcher still claims the work and enqueues it to the database, but nothing drains that queue for this job type, so the runs stay pending and never execute. See [background jobs](/platform/self-hosting/background-jobs).
263+
Each due drain is then fanned out as a `run-data-drain` background job, so the deployment also needs `TRIGGER_DEV_ENABLED` and a configured Trigger.dev project. Without it the dispatcher still claims the work and enqueues it to the database, but nothing drains that queue for this job type, so the runs stay pending and never execute. See [background jobs](/platform/self-hosting/background-jobs).

apps/docs/content/docs/platform/enterprise/data-retention.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ curl -H "Authorization: Bearer $CRON_SECRET" \
205205
https://sim.example.com/api/logs/cleanup
206206
```
207207

208-
Each call fans the work out as background jobs, so the deployment also needs `TRIGGER_DEV_ENABLED` with a configured Trigger.dev project, and a configured Trigger.dev project. Without it the dispatcher still claims the work and enqueues it to the database, but nothing drains that queue for this job type, so the runs stay pending and never execute.
208+
Each call fans the work out as background jobs, so the deployment also needs `TRIGGER_DEV_ENABLED` and a configured Trigger.dev project. Without it the dispatcher still claims the work and enqueues it to the database, but nothing drains that queue for this job type, so the runs stay pending and never execute.
209209

210210
### PII redaction
211211

apps/docs/content/docs/platform/enterprise/forks.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ Schedules, webhooks, and triggers are not live in the child until you **deploy**
361361

362362
## Edge cases to keep in mind
363363

364-
- **Force overwrite** — Sync does not merge canvas changes. Anything only on the target that conflicts with the source’s deployed workflows can be lost. Use the confirm dialog’s archive list carefully.
364+
- **Force overwrite** — Sync does not merge editor changes. Anything only on the target that conflicts with the source’s deployed workflows can be lost. Use the confirm dialog’s archive list carefully.
365365
- **Deselect on fork** — Cleared references are intentional. Prefer copying the resource, or plan to reconnect it in the child.
366366
- **Background copy** — Right after fork, large tables / knowledge bases / files may still be copying. Check **Activity** if something looks empty.
367367
- **OAuth MCP** — Expect a reconnect in the child (and after a copied server on sync).

apps/docs/content/docs/platform/enterprise/index.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Enterprise
33
description: Enterprise features for business organizations
44
---
55

6-
Sim Enterprise adds fine-grained access control, SSO, audit logging, compliance features, and workspace forking on top of Team plans.
6+
Sim Enterprise adds permission groups, SSO, audit logs, usage tracking, data retention and drains, white-labeling, and workspace forks on top of Team plans.
77

88
---
99

@@ -21,7 +21,7 @@ External workspace members can be governed by permission groups just like intern
2121

2222
### Setup
2323

24-
1. Navigate to **Settings****Organization****Permission groups** from any workspace in your organization
24+
1. Navigate to **Settings → Organization → Permission groups** from any workspace in your organization
2525
2. Create a permission group with your desired restrictions
2626
3. Scope it to workspaces, and optionally add named members
2727

@@ -65,7 +65,7 @@ Configure how long execution logs, soft-deleted resources, and Chat data are kep
6565

6666
## Data Drains
6767

68-
Continuously export workflow logs, audit logs, and Chat data to a customer-owned S3 bucket or HTTPS webhook on a schedule. See the [data drains guide](/platform/enterprise/data-drains).
68+
Continuously export workflow logs, audit logs, and Chat data to a destination you control — object storage, a data warehouse, Datadog, or an HTTPS webhook on a schedule. See the [data drains guide](/platform/enterprise/data-drains).
6969

7070
---
7171

apps/docs/content/docs/platform/enterprise/self-hosted.mdx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ NEXT_PUBLIC_ENTERPRISE_ENABLED=true
2525

2626
That turns on organizations, permission groups, SSO, white-labeling, audit logs,
2727
usage tracking, custom blocks, session policies, data retention, data drains, workspace
28-
forks, the Sandbox entitlement, and the inbox. Sandboxes remain unavailable until their
29-
remote provider and dedicated Function base are configured.
28+
forks, the Sandbox entitlement, and the inbox.
3029

3130
### Turning one feature off
3231

@@ -64,13 +63,13 @@ JavaScript without `import` or `require` does not use the remote provider and co
6463

6564
See [Sandboxes](/platform/self-hosting/sandboxes) for the provider credentials, the Function base-image build, and the promotion procedure.
6665

67-
<Callout type="warning">
66+
<Callout type="warn">
6867
Data retention is the one feature that deletes data. Its flag controls the cleanup pass, not the settings screen — retention windows are always configurable. Nothing is ever deleted until you enable it, and even then only against windows you configured explicitly. Sim never applies the hosted plan defaults to a self-hosted deployment.
6968
</Callout>
7069

7170
## Schedule the background jobs
7271

73-
Two enterprise features do their work from a cron-driven HTTP endpoint rather than from the app process. Both endpoints authenticate with a bearer token equal to `CRON_SECRET`, and both return `401` when `CRON_SECRET` is unset:
72+
Two enterprise features do their work from a cron-driven HTTP endpoint rather than from the app process. All four endpoints authenticate with a bearer token equal to `CRON_SECRET`, and both return `401` when `CRON_SECRET` is unset:
7473

7574
```bash
7675
CRON_SECRET=$(openssl rand -hex 32)
@@ -83,7 +82,7 @@ CRON_SECRET=$(openssl rand -hex 32)
8382
| Retention — soft deletes | `GET /api/cron/cleanup-soft-deletes` | Daily | **No** |
8483
| Retention — Chat tasks | `GET /api/cron/cleanup-tasks` | Daily | **No** |
8584

86-
<Callout type="warning">
85+
<Callout type="warn">
8786
The Helm chart schedules the data-drain dispatcher but **not** the three retention cleanup endpoints. Setting `DATA_RETENTION_ENABLED=true` on the chart alone deletes nothing — the windows are evaluated only when one of those endpoints is called. Add them to `cronjobs.jobs` yourself, or drive them from an external scheduler.
8887
</Callout>
8988

@@ -92,7 +91,7 @@ curl -H "Authorization: Bearer $CRON_SECRET" \
9291
https://sim.example.com/api/logs/cleanup
9392
```
9493

95-
Both features also fan work out as background jobs, so the deployment needs `TRIGGER_DEV_ENABLED` with a configured Trigger.dev project, and a configured Trigger.dev project. Without it the dispatcher still claims the work and enqueues it to the database, but nothing drains that queue for this job type, so the runs stay pending and never execute. See [background jobs](/platform/self-hosting/background-jobs).
94+
Both features also fan work out as background jobs, so the deployment needs `TRIGGER_DEV_ENABLED` and a configured Trigger.dev project. Without it the dispatcher still claims the work and enqueues it to the database, but nothing drains that queue for this job type, so the runs stay pending and never execute. See [background jobs](/platform/self-hosting/background-jobs).
9695

9796
## Choose an organization model
9897

apps/docs/content/docs/platform/enterprise/session-policies.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Use this after a security incident, an offboarding wave, or before tightening a
6060
{
6161
question: 'What happens to a member who is working when their session expires?',
6262
answer:
63-
'They are redirected to sign in again on their next request. Unsaved workflow changes in the editor are preserved by the collaborative canvas, which continuously syncs edits.',
63+
'They are redirected to sign in again on their next request. Unsaved workflow changes in the editor are preserved by the collaborative editor, which continuously syncs edits.',
6464
},
6565
{
6666
question: 'Does "Sign out all members" affect API keys or running workflows?',

0 commit comments

Comments
 (0)