CLI reference

Every luauengine subcommand, its flags, and the exit codes CI cares about.

Everything the editor does is available from luauengine. The editor itself shells out to it, so anything you can click you can script.

luauengine <command> [subcommand] [options]
luauengine help <command>

Global options#

FlagEffect
--project <path>Project directory or luauengine.toml (default: nearest ancestor)
--target <name>Override the target for this invocation
--verbose, -vVerbose output; repeat for more
--quiet, -qErrors only
--jsonMachine-readable output
--no-colourDisable ANSI colour
--versionPrint version and exit

Project#

luauengine new <name> [--template baseplate|empty|platformer|obby]
luauengine init                       # add a manifest to an existing folder
luauengine import <place.rbxl> [--out <dir>]
luauengine open [place]               # launch the editor

Build and run#

luauengine build [--target <t>] [--release] [--out <dir>] [--all] [--report-size]
luauengine run [--target <t>] [--clients <n>] [--server-only]
luauengine serve [--target web] [--port 8080]
luauengine clean [--all]
FlagEffect
--releaseStrip symbols, full Luau optimisation, native codegen, no debug port
--allBuild every target in targets.enabled
--report-sizePrint a size breakdown by component
--clients <n>Number of clients to launch alongside the server
--server-onlyRun the server without any client

Check and test#

luauengine check [--target <t>] [--strict]
luauengine test [--filter <pattern>] [--reporter tap|json|pretty]
luauengine lint [--fix]
luauengine format [--check]

check runs type checking, lints, capability-guard analysis and asset licence auditing. It is the command to gate a pull request on.

Assets#

luauengine assets process [--target <t>] [--force]
luauengine assets list [--unused] [--by-size]
luauengine assets audit [--target <t>]
luauengine assets upload --roblox [--force]
luauengine assets status --roblox
luauengine assets report --size

Publish#

luauengine publish --roblox [--place-id <id>] [--mode published|saved] [--message <text>]
luauengine publish --roblox --all-places
luauengine publish --target windows --to steam
luauengine publish --target web --to cloudflare

Authentication#

luauengine auth roblox            # interactive OAuth
luauengine auth list
luauengine auth logout roblox

CI should set ROBLOX_API_KEY in the environment rather than running auth.

Toolchain#

luauengine toolchain list
luauengine toolchain install <version>
luauengine toolchain default <version>
luauengine toolchain remove <version>
luauengine self-update

A .luauengine-version file in the project root pins the toolchain for every checkout.

Plugins#

luauengine plugin list
luauengine plugin install <name>
luauengine plugin remove <name>
luauengine plugin package <dir> [--out <file>]
luauengine plugin publish <dir>
luauengine plugin doctor <name>

Debug and profile#

luauengine debug attach [--port 6009]
luauengine profile [--target <t>] [--duration <s>] [--out profile.json]
luauengine profile view <file>
luauengine doctor [--target <t>]

CI#

luauengine ci build --all --release --out ./artifacts
luauengine ci check --strict
luauengine ci publish --roblox

The ci prefix forces non-interactive mode, disables progress animation, emits structured logs and treats warnings as errors unless --allow-warnings is passed.

Configuration#

luauengine config get <key>
luauengine config set <key> <value>
luauengine config list
luauengine config edit

User-level configuration (SDK paths, editor preferences, telemetry opt-in) lives outside the project — see Installation for the per-platform location.

Exit codes#

CodeMeaning
0Success
1General failure
2Invalid usage or arguments
3Check failed (type errors, lints, capability violations)
4Asset licence violation
5Missing toolchain or SDK
6Authentication failure
7Network or upload failure

Code 3 and code 4 are the two worth branching on in CI: the first is a code problem, the second means something in assets/ cannot legally ship to that target.

Environment variables#

VariablePurpose
ROBLOX_API_KEYRoblox Open Cloud key for non-interactive publishing
LUAUENGINE_HOMEOverride the toolchain install directory
LUAUENGINE_CACHEOverride the build cache directory
LUAUENGINE_TARGETDefault target when --target is absent
LUAUENGINE_NO_TELEMETRYSet to 1 to disable all telemetry