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
fix(supply-chain): attest every pullable tag, and correct docs from review
Review found that the attestation covered only the multi-arch index while
create-ghcr-manifests also publishes single-arch tags (:version-amd64,
:latest-arm64, and so on) that resolve to different digests. Those were
pullable but unsigned, so verification failed for anyone who pinned one.
The matrix now attests all three subjects per image — the index and both
per-arch manifests. That also makes the SBOMs truthful: the amd64 and arm64
images contain different packages, and one SBOM on the index cannot describe
both. create-release now requires attest-images, so a release can no longer
advertise images whose signing failed.
The helm workflow's path filter now includes the inventory generator, which
could previously change without the check that validates it ever running.
The inventory header named global.imageRegistry alone as the redirect. That
only rewrites the simstudioai/* images; third-party ones also need
global.useRegistryForAllImages, and the NVIDIA device plugin is hardcoded in a
template and cannot be redirected by any values key at all.
Docs corrections from the same round:
- The copilot workloads cannot be covered by networkPolicy.egress — it is only
rendered into policies the chart creates, and it creates none for them.
- Data drains and retention cleanup need Trigger.dev. Without it the work is
claimed and enqueued to the database, but nothing drains that job type.
- MIGRATION_DATABASE_URL has no chart values key: the migrations init container
builds DATABASE_URL itself and reads only the database Secret.
- Finished CronJob Jobs are deleted after ten minutes by ttlSecondsAfterFinished,
so the history limits do not mean what the page implied.
- lock_timeout is 5s for ordinary DDL, but a migration can set it to 0 for
statements like CREATE INDEX CONCURRENTLY.
- Losing Redis interrupts in-flight execution streams and cancellation, which
"drops live updates and nothing else" understated.
- NEXT_PUBLIC_BRAND_BACKGROUND_COLOR sets no background; it only tells Sim
whether the brand ground is dark.
- Pi uses its own image, not the Function base.
- doctor skips the Postgres, migration, and Redis probes on the production
Compose layout, and does not shape-check optional secrets.
- The Daytona snapshot build needs the E2B parity manifest to exist first.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015BwsJTEQRzWJaY4BRCkPZt
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, or the default database-backed job queue, which both deployments use out of the box. 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` 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).
Each call fans the work out as background jobs, so the deployment also needs `TRIGGER_DEV_ENABLED` with a configured Trigger.dev project, or the default database-backed job queue, which both deployments use out of the box.
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.
209
209
210
210
### PII redaction
211
211
212
212
PII redaction runs against a standalone [Presidio](https://microsoft.github.io/presidio/) service. Deploy it (see `apps/pii`) and point Sim at it:
213
213
214
214
```bash
215
215
# The Presidio service exposing /analyze and /anonymize
Both features also fan work out as background jobs, so the deployment needs `TRIGGER_DEV_ENABLED` with a configured Trigger.dev project, or the default database-backed job queue, which both deployments use out of the box. See [background jobs](/platform/self-hosting/background-jobs).
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).
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/enterprise/verified-domains.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
@@ -73,4 +73,4 @@ NEXT_PUBLIC_SSO_ENABLED=true
73
73
74
74
`ENTERPRISE_ENABLED` turns both on together. See the [self-hosted enterprise guide](/platform/enterprise/self-hosted).
75
75
76
-
Once enabled, verify domains from **Settings → Organization → Single sign-on**, in the **Verified domains** section above the identity provider configuration. The older `/settings/domains`link still resolves to the same page.
76
+
Once enabled, verify domains from **Settings → Organization → Single sign-on**, in the **Verified domains** section above the identity provider configuration. The older `/workspace/<workspaceId>/settings/domains`path still resolves to the same page.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/background-jobs.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
@@ -71,7 +71,7 @@ cronjobs:
71
71
enabled: true
72
72
```
73
73
74
-
Each job runs a small `curlimages/curl` pod that calls the app's **in-cluster Service** (not the ingress), with `concurrencyPolicy: Forbid` so a slow run never overlaps itself. The Service load-balances that single call to one replica, so a job never fans out across pods. The chart keeps three completed and one failed Job per CronJob for inspection; it sets no `backoffLimit`, so a failing job retries up to the Kubernetes default of six times before it is marked failed.
74
+
Each job runs a small `curlimages/curl` pod that calls the app's **in-cluster Service** (not the ingress), with `concurrencyPolicy: Forbid` so a slow run never overlaps itself. The Service load-balances that single call to one replica, so a job never fans out across pods. The chart keeps three completed and one failed Job per CronJob, but `ttlSecondsAfterFinished` defaults to 600, so a finished Job is deleted ten minutes after it ends — inspect a failure promptly or collect the logs. It sets no `backoffLimit`, so a failing job retries up to the Kubernetes default of six times before it is marked failed.
75
75
76
76
Disable individual jobs you do not need — billing reconciliation is the obvious one on a self-hosted install:
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/index.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
@@ -113,4 +113,4 @@ Sim is self-contained for the core editor and execution engine. A few features r
113
113
|**Agent blocks**| An API key for at least one model provider | Or a self-hosted OpenAI-compatible endpoint: Ollama, vLLM, LM Studio, or LiteLLM. |
114
114
|**Chat module**|`COPILOT_API_KEY` from sim.ai | Set `NEXT_PUBLIC_CHAT_DISABLED=true` to hide the module instead. |
115
115
|**Integrations**| Your own OAuth app per service | See [Integrations & OAuth](/platform/self-hosting/integrations-oauth). |
116
-
|**Remote Function / Pi execution**| Optional E2B or Daytona key, plus a Function base image | Without one, JavaScript Function code that has no `import` or `require` still runs in the in-process isolated VM. Python, Shell, JavaScript with external imports, custom Function Sandboxes, and Pi require a configured remote provider **and** an immutable Function base image — the key alone is not enough. See [Sandboxes](/platform/self-hosting/sandboxes). |
116
+
|**Remote Function / Pi execution**| Optional E2B or Daytona key, plus a Function base image | Without one, JavaScript Function code that has no `import` or `require` still runs in the in-process isolated VM. Python, Shell, JavaScript with external imports, and custom Function Sandboxesrequire a configured remote provider **and** an immutable Function base image — the key alone is not enough. Pi uses a separate image, pinned with `E2B_PI_TEMPLATE_ID` or `DAYTONA_PI_SNAPSHOT_ID`. See [Sandboxes](/platform/self-hosting/sandboxes). |
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/redis.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
@@ -24,7 +24,7 @@ Sim uses Redis as a message bus and shared cache. Both deployments ship it by de
24
24
With more than one app or realtime replica and no `REDIS_URL`, users on different pods stop seeing each other's edits and live status updates. Beyond one startup log line noting single-pod mode, nothing is logged — the app looks healthy and quietly loses events. Treat Redis as mandatory the moment `replicaCount` exceeds 1.
25
25
</Callout>
26
26
27
-
Everything Sim keeps in Redis is cache, coordination state, or an in-flight event — never committed data, which lives in PostgreSQL and object storage. Losing the instance drops live updates in progress and nothing else, so persistence is not required.
27
+
Everything Sim keeps in Redis is cache, coordination state, or an in-flight event — never committed data, which lives in PostgreSQL and object storage. Persistence is therefore not required. Losing or restarting the instance is not free, though: in-flight execution streams and cancellation markers live here, so active runs stop streaming and a cancellation issued across the gap may not land. Completed work is unaffected.
0 commit comments