These pages teach the runtime in order; the API reference is where you look things up afterwards.
Luau runs under jess in three shapes:
- A script:
jess run script.jsl args.... One VM, thejessglobal, your terminal, and whatever capabilities you grant on the command line. - A command target: a script with a package around it. The manifest names the entry, the layers it activates, and the capabilities it needs;
jess package rungrants exactly those. - An application target: packages loaded into one script domain, driven by frames until it says it is done.
Start with Your First Script, then Packages, which is where almost everything else lives. Applications is for things that keep running. The rest you can read when you need it.
Your First Script
Set up a folder, write a jess script, run it, and learn the handful of rules the whole API follows.
Files, Data, and Regex
The standard-library gaps jess fills: @dream/fs, @jess/data/toml, bytes.regex.
Built-in Modules
The @jess/ namespace: jess-owned Luau modules, embedded, frozen, typed, and unshadowable.
Packages
Package Sources, JPKs, layers, and activation: how Luau software ships for jess.
Applications
Application targets: managed modules loaded into one ScriptDomain, host callbacks, named events, and domain-local interfaces that later packages override on purpose.
Performance
Measure before you optimize: the profiler in the binary, what native code costs, and the work a fast script avoids.
Luau Pitfalls
Type checker and runtime surprises you will hit writing strict Luau for jess, each with a repro and the fix.