Limits and security
The current runtime boundaries, data isolation model, and execution allowances.
Execution limits
| Resource | Current limit |
|---|---|
| Sandbox CPU time | 50 ms per run |
| Application deadline | 10 seconds |
| Data and Shopify capability calls | 50 per run |
| Bundled JavaScript source | 128 KiB |
| Input / document body | 16 KiB each |
| Result | 64 KiB |
| Documents per SDK list | 100 |
| Operations per atomic batch | 10 distinct documents |
A deadline revokes further capabilities. It does not undo effects already committed. CPU time is distinct from elapsed time while awaiting data or Shopify requests.
Store execution budgets
| Budget | All executions | Public executions |
|---|---|---|
| Daily | 1,000 | 800 |
| Monthly | 10,000 | 8,000 |
Public executions count toward both limits. The difference reserves capacity for authenticated work. Budgets are shared across Preview and Live; daily and monthly resets use UTC.
HTTP routes also have approximate, per-edge burst limits: 30 requests per visitor/store/minute, 120 per work/environment/minute, and 300 per store/minute. Failed attempts and preflight requests count. These counters are traffic protection, not exact global quotas.
Isolation and permissions
Code runs in a separate sandbox with no platform secrets or database bindings. Littleworks supplies scoped capabilities for each invocation. Storage access is constrained to the current store, feature, and environment. Shopify calls require the work’s explicit permission and the app’s approved scopes.
Works cannot make arbitrary outbound network calls. They use db and shopify.graphql for supported operations. Static portability checks flag known incompatible APIs, but do not guarantee that code will run unchanged on another provider.
Public endpoint responsibilities
Rate limits and input validation are automatic. Customer authorization is task-specific: validate a suitable proof inside the work. CORS is not authentication, and an order ID supplied by a visitor is not proof of purchase. See Expose an endpoint.
Current boundaries
- No scheduled jobs, Shopify event subscriptions, or Flow integration.
- No arbitrary outbound HTTP, secret injection, or file storage for works.
- No hosted package installation or TypeScript build through MCP.
- No HTML hosting, streaming responses, custom response headers, or cookies.
- No theme-editing tool or theme app extension supplied by Littleworks.
Use these boundaries when deciding whether Littleworks fits a task. Read the connected server’s get_context for current capabilities before deploying.