Skip to content

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.

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.

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.

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.