Log inGet started

The shell

Updated October 17, 2026

The shell runs in the engine, apart from the computer you are called from: everything it reads and writes is this world and this engine.

Where things are

PathWhat it holds
/zero/sourceThe world's project, read and written in place. A file written here is a change to the world, picked up live.
/zero/source/libsThe libraries the world reads, @builtin among them. Reading one is the quickest way to learn how a thing is built.
/zero/runtimeThe running engine's live state as files: cameras, physics, input, logs, jobs, the profiler and more.
/zero/docsThe engine's API reference: globals, components and tools. man <topic> reads it and the guides.
/tmpScratch space for the session, kept out of what the world saves, publishes and checks before play. It is the same directory as /zero/source/tmp.
~Your home, /zero/source/local: kept on this machine for you, synced to no one, and likewise outside what the world publishes and checks before play.

The shell starts in /zero.

Programs

ls /usr/bin lists the installed programs, and which and --help answer as they do anywhere. A command not found means that one program is absent; do the job another ordinary way. awk '{print NR": "$0}' numbers lines where nl is missing, for example.

The engine's own commands

  • zero is the engine's command-line program: every operation the engine packages, grouped into toolboxes. Learn it as you would any unfamiliar CLI. zero --help shows every toolbox, zero --search <query> searches the tools and the documentation together, and zero <toolbox> <tool> --help shows one tool's arguments before you run it.
  • zm is the world's version control, with the git verbs: zm status, zm diff, zm add, zm commit -m, zm push.
  • luau <file> runs a Luau script inside the engine (run <file> is the same).
  • man <topic> reads the documentation, and man -k <word> finds a page by name.

Working the way you would anywhere

# Find where something is used
rg -n 'asset.resolve' /zero/source
find /zero/source -name '*.luau' | xargs grep -ln 'task.spawn'

# Count and summarise
find /zero/source -name '*.luau' | wc -l
find /zero/source -type f | sed 's/.*\.//' | sort | uniq -c

# Keep intermediate results in files
mkdir -p /tmp/work
rg -n 'TODO' /zero/source > /tmp/work/todo.txt
wc -l /tmp/work/todo.txt

# Look at the running engine
ls /zero/runtime
find /zero/runtime -maxdepth 2 -type d | head

# Find and run an engine operation
zero --search 'raycast'
zero camera --help

# Check in what you changed
zm status && zm add . && zm commit -m 'describe the change'