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 fc844c0
Browse filesBrowse the repository at this point in the historyBrowse files
fix(security): harden saved-credential, proxy egress, and response-cap paths from the release audit
- Refuse session callers resolving saved service-account secrets on POST /api/auth/oauth/token
- Refuse a proxied hostname when any resolved record is blocked (the proxy re-resolves)
- Apply the response cap to every body, not only decoded ones (undici's http proxy wrapper ignores maxResponseSize)
- Bind workload-identity subjects to their owner at mint time
- Bound Databricks token/identity JSON reads; refuse single-slash https:/ in typed URLs; case-insensitive Dynatrace /api/vN strip
- Twilio recordings: stay on the Twilio API origin and bound fetch concurrency
- Firecrawl: count crawl maxDepth below the start URL; stop sending unused search sources
- sim-setup reset refuses when Docker is installed but unreachable
- Remove the dead requireDeployment branch from workflow access middleware; reuse requireMutableWorkflow; move a misplaced TSDoc
- Docs: CONTRIBUTING setup via sim-setup, sim-setup README, Helm read-only-root mounts, proxy and NO_PROXY behavior, GitLab CSV body limit
Copy file name to clipboardExpand all lines: .github/CONTRIBUTING.md
+8-10Lines changed: 8 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -140,24 +140,22 @@ Using clear and consistent commit messages makes it easier for everyone to under
140
140
141
141
To set up your local development environment:
142
142
143
-
### Option 1: Using NPM Package (Simplest)
143
+
### Option 1: Using the setup wizard (Simplest)
144
144
145
-
The easiest way to run Sim locally is using our NPM package:
145
+
The easiest way to run Sim locally is the `sim-setup` wizard:
146
146
147
147
```bash
148
-
npx simstudio
148
+
npx sim-setup
149
149
```
150
150
151
-
After running this command, open [http://localhost:3000/](http://localhost:3000/) in your browser.
152
-
153
-
#### Options
154
-
155
-
-`-p, --port <port>`: Specify the port to run Sim on (default: 3000)
156
-
-`--no-pull`: Skip pulling the latest Docker images
151
+
The wizard checks Docker, ports, memory, and disk space, generates the required secrets, writes `.env` and a Docker Compose file into a new `sim` directory, starts the containers, runs database migrations, and waits for the health checks to pass. When it finishes, open [http://localhost:3000/](http://localhost:3000/) in your browser.
157
152
158
153
#### Requirements
159
154
160
-
- Docker must be installed and running on your machine
155
+
- Node.js 20 or newer
156
+
- Docker with the Compose plugin, installed and running
157
+
158
+
See the [`sim-setup` README](../packages/sim-setup/README.md) for options and management commands.
Copy file name to clipboardExpand all lines: apps/docs/content/docs/integrations/firecrawl.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
@@ -184,7 +184,7 @@ Crawl entire websites and extract structured content from all accessible pages
184
184
| --------- | ---- | -------- | ----------- |
185
185
|`url`| string | Yes | The website URL to crawl \(e.g., "https://example.com" or "https://docs.example.com/guide")|
186
186
|`limit`| number | No | Maximum number of pages to crawl \(e.g., 50, 100, 500\). Default: 100 |
187
-
|`maxDepth`| number | No | Maximum URL path depth \(e.g., 1 allows /docs and /docs/index.html\). Independent of link discovery depth |
187
+
|`maxDepth`| number | No | Maximum path depth below the starting URL \(e.g., 1 from /docs allows /docs/guide and /docs/guide/index.html\). Independent of link discovery depth |
188
188
|`formats`| json | No | Output formats for scraped content \(e.g., \["markdown"\], \["markdown", "html"\], \["markdown", "links"\]\)|
189
189
|`prompt`| string | No | Natural-language crawl guidance supplied by existing configurations |
190
190
|`excludePaths`| json | No | URL paths to exclude from crawling \(e.g., \["/blog/*", "/admin/*", "/*.pdf"\]\)|
Copy file name to clipboardExpand all lines: apps/docs/content/docs/platform/self-hosting/networking.mdx
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -278,7 +278,7 @@ This depends on the runtime. The published images run Bun. If you build the stan
278
278
| Everything through the SSRF guard — SSO OIDC discovery, the HTTP block, tools, connectors, outbound webhooks, content fetches, MCP servers, and model endpoints typed into a block | Yes — see [Proxying guarded requests](#proxying-guarded-requests) |
279
279
| SSO sign-in — the token, JWKS, and userinfo calls made while a user signs in | Yes — they use the default `fetch` |
280
280
| SSO domain verification (TXT lookup) | No — DNS, sent to `1.1.1.1` and `8.8.8.8` unless `DOMAIN_VERIFICATION_NAMESERVERS` names your resolvers |
281
-
| Amazon Bedrock, object storage on S3, and every AWS integration (DynamoDB, SQS, Lambda, Textract, and the rest) | Yes — each AWS client gets a proxy-aware agent while a proxy is set. Bedrock then uses HTTP/1.1 instead of HTTP/2 |
281
+
| Amazon Bedrock, object storage on S3, and every AWS integration (DynamoDB, SQS, Lambda, Textract, and the rest) | Yes — each AWS service client gets a proxy-aware agent while a proxy is set, and STS calls made for its credentials inherit it. Bedrock then uses HTTP/1.1 instead of HTTP/2. IAM Identity Center (SSO) credential lookups do not use the proxy |
282
282
| Email via SMTP, and the SMTP block | No — SMTP is not HTTP. Use a mail relay the app can reach directly, or Resend or SES |
283
283
| Email via Amazon SES | Yes — the AWS SDK client above |
284
284
| OTLP export from the server SDK | Yes — the exporters get the same proxy-aware agent |
@@ -289,7 +289,7 @@ The practical consequence: a mandatory-egress-proxy environment can route LLM tr
289
289
290
290
### Proxying guarded requests
291
291
292
-
A request through the SSRF guard keeps its checks when it is proxied. Before each request, and again for each redirect hop, the app resolves the destination's hostname with its own DNS and refuses it if any policy in [Security](/platform/self-hosting/security#the-ssrf-boundary) blocks the address. It then hands the hostname, not the address, to the proxy, so a proxy that allowlists by domain sees the name it expects.
292
+
A request through the SSRF guard keeps its checks when it is proxied. Before each request, and again for each redirect hop, the app resolves the destination's hostname with its own DNS and refuses it if any policy in [Security](/platform/self-hosting/security#the-ssrf-boundary) blocks any of the addresses it resolves to, since the proxy may connect to any of them. It then hands the hostname, not the address, to the proxy, so a proxy that allowlists by domain sees the name it expects.
293
293
294
294
- **DNS must still resolve inside the container.** A destination that the app cannot resolve is refused before the proxy is asked.
295
295
- **The proxy resolves the name again.** The app cannot pin the address across a proxy, so the proxy's own egress policy is the last check.
@@ -301,6 +301,8 @@ A request through the SSRF guard keeps its checks when it is proxied. Before eac
301
301
302
302
Set `NO_PROXY` for every destination that is not on the public internet, not just model endpoints. The app reaches the realtime server (`SOCKET_SERVER_URL`), the Presidio PII service (`PII_URL`), and itself (`INTERNAL_API_BASE_URL`) over the same default `fetch`, alongside self-hosted Ollama, LiteLLM, and vLLM — so a proxy that cannot reach your internal network breaks live updates and PII redaction, not only inference. AWS clients and OTLP export follow the same rule, so also add an internal S3-compatible store such as MinIO, AWS VPC endpoints, and an in-cluster OpenTelemetry collector.
303
303
304
+
Each entry is a hostname, a domain suffix (`.svc` or `*.svc`), or an IP address, optionally followed by `:port`. Bracket IPv6 addresses (`[::1]`). CIDR ranges are not supported. `*` disables the proxy only when it is the whole value.
305
+
304
306
Set it in the application environment, not your shell — under `app.env` on Helm, or the service's `environment:` on Compose. On Helm the suffixes alone are not enough: the chart wires `SOCKET_SERVER_URL`, `PII_URL`, and `OLLAMA_URL` to bare Service names, which no domain suffix matches. Add those names too — `helm template` prints the rendered ones, and the prefix is the release name unless it already contains `sim`, in which case it is the release name alone:
0 commit comments