Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ Configure at least one. Every configured provider stays active and is tried in o

## Limits

Self-hosted deployments (billing disabled) run without plan limits: no rate limits, no execution timeouts, no table or storage caps, and no retention-based data deletion. Each limit can be opted back in individually by explicitly setting its variable.
Self-hosted deployments (billing disabled) run without plan limits: no plan rate limits, no execution timeouts, no table or storage caps, and no retention-based data deletion. Each limit can be opted back in individually by explicitly setting its variable.

| Variable | Opts in | Suggested value |
|----------|---------|-----------------|
Expand All @@ -299,6 +299,10 @@ Self-hosted deployments (billing disabled) run without plan limits: no rate limi
Neither deployment presets these. The Helm chart previously did, which enforced hosted-plan caps on self-hosted installs; chart 1.5.0 removed the presets so Compose and Kubernetes behave identically.
</Callout>

<Callout type="info">
One limit applies regardless of billing: the v2 API (`/api/v2/...`) allows each client IP a burst of 600 requests, then 300 per minute, checked before authentication. `BILLING_ENABLED` and the variables above don't change it. With Docker Compose, requests from the host machine all arrive from the bridge gateway address and share one budget. Behind a reverse proxy, set `AUTH_TRUSTED_PROXIES` so each client is counted by its own address.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Other limits still apply

“One limit applies regardless of billing” makes the v2 limit sound like the only exception. Other routes have independent limits too: the contact endpoint, for example, enforces a per-IP limit. Operators investigating a 429 on those routes could mistakenly look to the listed plan variables for a way to change it. Please avoid presenting the v2 limit as the sole exception.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

</Callout>

### Removing a limit you already inherited

If a limit is still enforced after upgrading — most often a `FREE_TABLES_LIMIT` or `FREE_TABLE_ROWS_LIMIT` carried forward from a chart older than 1.5.0, or copied into your own values file — the variable is still reaching the pod. On Helm, remove it by overriding it with `null`:
Expand Down