Skip to main content

Project layout

Each project is a folder or cloud package with main.lua at its root. Additional files must use the .lua extension.

example/
├── main.lua
├── features/
│ └── indicators.lua
└── util.lua

Modules use normal Lua names:

local indicators = require("features.indicators")
local util = require("util")

The bundled loader maps dots to /, appends .lua, rejects absolute paths and traversal, and caches project modules per script instance. Repeated require calls within that instance reuse its module result. Unloading or replacing the script discards its cache, so its project modules execute again on the next load. Different projects may use the same module names. Approved built-in library tables are shared between scripts. The stock package table and external module loaders are unavailable; bundled modules are resolved before approved built-ins, except that traceless always resolves to the root and debug/jit.util are always denied.

Cloud archives may contain at most 128 Lua files, 512 KiB of source in total, and 256 KiB per file. The ZIP itself is limited to 768 KiB.