Limits
These defaults describe the standalone CLI/HTTP server. An embedded host can supply different validated shell limits. The HTTP server has no global parallel-request count cap.
Request and data sizes
Section titled “Request and data sizes”| Item | Limit or default |
|---|---|
| Disk or namespace name | 1-128 ASCII letters, digits, _ or -. |
| Virtual path | 4,096 UTF-8 bytes; 255 bytes per component; no NUL. |
| Exec source | 64 KiB, UTF-8. |
| Shell pipeline | 32 stages. |
| Text-command line | 1 MiB. |
| KV key | 16 KiB decoded bytes. |
| KV value | 1 MiB stored payload. |
| KV encoded batch | 8 MiB, including keys and operation metadata. |
| HTTP KV JSON body / shell batch JSON input | 8 MiB, including encoding overhead. |
| File upload/download | Streamed; no fixed whole-file byte limit in the route. Storage and client/runtime constraints still apply. |
HTTP SQL and virtual-shell wabesql calls share the active-request budget. Queued requests wait before entering Tokio’s blocking pool.
| Item | Default |
|---|---|
| Active SQL requests | 16 per server router, across disks and databases. |
| SQL deadline | 30 seconds, including admission and result backpressure. |
| HTTP SQL JSON body | 4 MiB. |
| HTTP SQL statement text | 64 KiB. |
wabesql script from stdin |
4 MiB of UTF-8 SQL; inline SQL also counts toward the 64 KiB exec-source limit. |
| Statements | 128 per request or script, including driver-generated HTTP statements. |
| Returned rows | 100,000 per request or script. |
| Encoded SQL results | 8 MiB per request or script. |
| Individual SQL value | 1 MiB. |
These bounds do not impose a hard per-query SQLite heap cap. SQL commands describes script transactions and cancellation; HTTP SQL describes sessions and transaction lifetimes.
The wabesql result budget includes a reserve of up to 512 bytes for its final event. Error messages can be shortened to fit that reserve. Stderr diagnostics are separate from the NDJSON byte count.
JavaScript
Section titled “JavaScript”| Item | Default |
|---|---|
| Invocation deadline through the standalone server | 30 seconds, elapsed time. |
| Worker process memory ceiling | 32 MiB with a configured cgroup; otherwise a 32 MiB address-space limit. |
| JS heap | At most 24 MiB. |
| Open runtime handles | 64 per invocation, across files, scans, writes, shell jobs and batches. |
| Shared retained KV staging budget | 8 MiB per invocation. |
| JS script arguments | At most 64 KiB of string bytes in total. |
The worker ceiling is a maximum; it is not preallocated. It does not cover the supervisor’s shared caches or other server allocations. The KV budget accounts for retained data and buffer capacity, with release on completion or cancellation. Transient encoding/validation, IPC buffers and backing-store caches add memory beyond that budget.
Whole-file fs.readFile and KV get materialize values in the JS heap. Use fs.chunks or HTTP file streaming for larger files. Breaking a scan into pages reduces the amount a client retains, while each returned KV value is still read as a whole value.
Timing and storage
Section titled “Timing and storage”Background flush defaults to 10 seconds, with earlier size triggers. The interval is scheduling policy; it does not guarantee successful storage within 10 seconds during a failure. Explicit flush and eviction wait for persistence.
A default sort run spills at 8 MiB. Local scratch space is also used by several text operations. The spill threshold and cache budget do not define total process RSS. Configuration lists the operator controls.