| Luau heap | 8 MB, or memory_limit_mb | per script; exceeding it raises a memory error |
| Execution budget | 20,000,000 calls, returns and loop iterations per entry into the script, with a 10 second ceiling | raises script execution budget exceeded (possible infinite loop) or (blocked too long) |
| Sustained tick time | a smoothed average above 50 ms for 5 ticks in a row | stops the script with Script terminated: runaway tick time (<n>ms avg); move heavy work into rb.run with rb.sleep between steps |
tick_rate | 1 to 8,000 | modeline |
| Streamed macro delay or hold | up to 1,000,000,000 ms | outside it, play falls back to the host and stream raises |
| Streamed macro move or scroll step | up to 1,000,000 | same |
| Streamed macro speed | 0.001 to 1,000 | play only |
| Host macro scroll step | -127 to 127 | clamped |
rb.math.humanize, rb.math.glide | 10 minutes of mouse movement per call | longer input raises |
rb.ai image | long edge 1,024 or 768 px within 1,500,000 bytes; each side padded to at least 280 px; a JPEG for rb.ai.decide, a PNG for rb.ai.find and rb.ai.read | the JPEG for rb.ai.decide needs min_sdk=3.22.0 |
rb.ai.decide state | 32,000 characters as JSON; tables nested 32 deep | |
| Server dispatch | serviced every 8th engine tick. Per tick, up to 32 UDP datagrams per socket and 32 HTTP requests per server share one 20 ms budget, UDP first; WebSocket events, up to 32 per server or connection, have their own 20 ms budget | the rest wait for the next tick |
rb.hid hold warning | 10 s | one log line per hold |
rb.observe session | 512 MB of log and images | one session at a time |