Limits & Quotas
Lumio enforces per-account and per-extension limits to ensure fair resource usage across the platform. This page lists the defaults and the process for requesting an increase.
Per-account limits
| Resource | Default limit | Notes |
|---|---|---|
| Extensions per account | 25 | Across all visibility levels |
| Versions per extension | 100 | Oldest versions are archived after 100 |
| Team members | 10 | Includes owner |
| API keys | 20 | Active keys; revoked keys do not count |
| Secret keys per extension | 20 | Stored in Lumio Vault |
Per-extension storage limits
| Resource | Default limit | Notes |
|---|---|---|
| Global storage | 100 MB | Shared across all installs |
| Per-install storage | 10 MB | Per unique installId |
| Key count (global) | 10,000 keys | |
| Key count (per install) | 1,000 keys | |
| Value size | 64 KB | Per key |
| Key name length | 255 bytes | UTF-8 |
Server function limits
| Resource | Default limit | Notes |
|---|---|---|
| Actions per extension | 50 | Total defined actions |
| Invocations per minute | 300 | Across all users of this extension |
| Invocation timeout | 30 seconds | Applies to handler execution |
| External fetch calls per invocation | 10 | Via ctx.fetch() |
| Response payload size | 1 MB | Returned from an action |
| Egress hosts | 20 | Entries in allowHosts |
Real-time limits
| Resource | Default limit | Notes |
|---|---|---|
| Active WebSocket connections per install | 5 | Overlay + popout windows |
| Pub/sub messages per second (push) | 100 | Via ctx.realtime.push() |
| Message payload size | 64 KB | Per pub/sub message |
Bundled sound limits
| Resource | Default limit | Notes |
|---|---|---|
| Sounds per extension manifest | 200 | Maximum entries in sounds array |
| Resolved sound limit | 50 | Per-extension deploy cap (see below) |
| Sound file size | 10 MB | Per individual sound file |
| Sound file warning | 5 MB | CLI warns above this threshold |
| Total bundle size | 50 MB | All files combined per deploy |
The resolved sound limit follows a 3-tier priority chain:
- Per-extension override — admin-set via
extensions.max_soundscolumn - Per-developer override — admin-set via developer limit overrides (
max_sounds_per_extensionkey) - Platform default — 50
The CLI checks this limit before deploying (GET /v1/developer/extensions/{id}/limits). The server validates again at upload and install time.
Supported audio formats: MP3, WAV, OGG, WebM, M4A, AAC, FLAC.
To request a limit increase, visit the Developer Limits page at /account/developer/limits. Select the scope (team/developer default or a specific extension), choose which limits to increase, enter your desired values with a reason, and submit. An admin reviews and approves or rejects the request. You can track request status on the same page under the Requests tab.
Build limits
| Resource | Default limit | Notes |
|---|---|---|
| Compiled bundle size (layer) | 5 MB | Gzipped |
| Compiled bundle size (editor) | 5 MB | Gzipped |
| Compiled bundle size (interactive) | 5 MB | Gzipped |
| Static assets (images, fonts) | 20 MB | Per extension version |
| Build time | 5 minutes | Per lumio deploy run |
Rate limits on the Developer API
| Endpoint | Limit |
|---|---|
GET endpoints | 120 requests/minute |
POST /extensions | 10 requests/hour |
POST /extensions/:id/versions | 30 requests/hour |
DELETE endpoints | 30 requests/minute |
Limits are applied per authenticated developer account. Exceeding a limit returns HTTP 429 Too Many Requests with a Retry-After header.
Requesting a limit increase
To request a limit increase, visit the Developer Limits page at /account/developer/limits:
- Click Request increase next to a configurable limit
- Select the scope: Team / Developer account (applies to all extensions) or a Specific extension
- Check the limits you want to increase and enter your desired values
- Provide a reason (minimum 20 characters) explaining your use case
- Review the summary and submit
Requests are reviewed by Lumio admins. Approved increases apply immediately. You can track request status on the same page under the Requests tab. Increases for storage, invocation rate, and bundle size are granted on a case-by-case basis and may require a Pro or Enterprise plan.
Hard limits
The following limits cannot be increased regardless of plan:
| Resource | Hard limit |
|---|---|
| Value size | 1 MB |
| Action invocation timeout | 120 seconds |
| Response payload | 10 MB |
| Egress request timeout | 30 seconds |
| Versions per extension | 500 |