moxzi
Docs / Reference / Limits

Limitsalpha

Every numeric limit in moxzi's compiler, runtimes and on-chain builder.

Compiler#

LimitValue
Nesting depth of expressions and types128. Deeper nesting is a parse error
Steps per build (--max-steps)5,000,000 by default
Nesting in code compiled in a browser tabAbout 60 chained operators

Native kernels#

See the Kernel ABI for the rules behind these.

LimitValue
Static data of the program, the runtime and every kernel in a canister, together512 KB
One scratch allocation by a kernel64 MiB
One kernel uploaded for an on-chain build1,900,000 bytes

Every runtime#

These apply in moxzid, moxzi-web, actor platforms and games, so a program behaves the same in each.

LimitValue
Depth of a chain of self-calls512
Queued messages between one sender and one receiver500
Debug.print lines kept per actor4096
Wasm stack4 MiB
Best-effort call deadline300 seconds at most
Outcall response size, when the request doesn't set one2 MiB
Wasm module chunk size, and chunks per store1 MiB, 100
Snapshots per canister10
Default wasm_memory_limit4 GiB

Hosted actor platforms#

These apply to runtimes built on moxzi-host. The compiler and game runtime retain the shared per-destination queue rule above without imposing this platform-level aggregate.

LimitValue
Successful outbound calls queued by one actor message, across all destinations1,024 by default; embedders may select another positive finite value

Cycles charged off-chain#

The off-chain runtimes charge cycles at the Internet Computer's rates, so code that attaches cycles works the same way on mainnet.

ItemCycles
Message590,000
Instructions4 per 10
Creating a canister500,000,000,000
HTTPS outcall400,000,000 plus 100,000 per byte
Threshold signature26,000,000,000

moxzid#

LimitDefault
Instructions per message (--instruction-limit)40,000,000,000
Starting cycles per actor (--cycles)100,000,000,000,000
Request body, public actor and website routes8 MiB
Request body, authenticated control/service routes192 MiB
Outcall time limit (--outcall-timeout-secs)30 seconds
Outcall response body (--outcall-max-response-bytes)16 MiB host ceiling; 2 MiB actor default
Outcall request URL / body / transform context8 KiB / 2 MiB / 64 KiB
Outcall request or response headers128 fields and 64 KiB aggregate
Recent messages kept per actor (--history)50
Platform-image heap bytes1 GiB
Platform-image stable-memory bytes512 MiB
Platform-image decoded bytes1.5 GiB
Platform-image stored chunk bytes128 MiB
Platform-image metadata / patch bytes64 MiB each
Legacy whole-dedup decoded JSON16 MiB
Legacy outcomes / peers / outstanding call-context records32 / 64 / 65,536

There's no limit on the size of the state directory.

The image limits can be changed with the MOXZI_IMAGE_MAX_* variables documented in the host ABI. Images over a limit are retained by the platform and activation returns 413 resourceLimit; the actor stays inactive until the image is migrated or the operator raises the specific limit.

moxzi-web#

LimitValue
Instructions per message, with meter: true40,000,000,000 by default
Cost of meter: trueModules about 20% larger; calls about 50% slower
HTTPS outcall response4 MiB channel ceiling; 2 MiB actor default
Actors per runtimeAbout 100, depending on their memory
Platform-image heap / stable-memory / decoded bytes256 MiB / 64 MiB / 320 MiB
Platform-image stored chunks / metadata / patches64 MiB / 16 MiB / 16 MiB
Legacy whole-dedup decoded JSON16 MiB
Legacy outcomes / peers / outstanding call-context records32 / 64 / 65,536

Cloudflare may override the complete browser image policy with MOXZI_IMAGE_LIMITS JSON. The legacy whole-dedup decode limit is fixed so malformed compressed metadata is rejected before JSON parsing. Oversized legacy records require offline migration to current dedup slots.

On-chain builder#

LimitValue
Uploaded files per caller64 MiB
Uploaded files, all callers1 GiB
Registered package storage256 MiB
Cached builds200 MiB
Stored build results100 MiB, oldest removed first
Escrow750,000 cycles per uploaded byte, at least 500,000,000,000
Charge3× the cycles used, at most the escrow

Internet Computer#

These are the IC's own limits, which on-chain builds and deployed canisters are subject to.

LimitValue
Instructions per update message40 billion
Instructions per query5 billion
Instructions per install_code300 billion
Wasm memory (64-bit)6 GiB
Stable memory500 GiB
Ingress message size2 MiB
Inter-canister message size, same subnet10 MiB

moxzi.game#

LimitValue
Instructions per call into a game (--message-fuel)20,000,000 by default
Save file128 MiB
HUD labels64, 4096 bytes each, 16384 bytes in total
Sound cues per tick32
Sound file16-bit PCM WAV, 10 seconds, 4 MiB
UI file256 KiB
On this pageCompilerNative kernelsEvery runtimeHosted actor platformsCycles charged off-chainmoxzidmoxzi-webOn-chain builderInternet Computermoxzi.game