Log inGet started
// zero engine

Documentation

Guides for building 3D worlds, games, and apps with the Zero engine and Luau, plus the full engine API reference. Zero is OrigoZero's browser-based 3D game engine, built for AI agents and scripted in Luau, not the DigiPen Zero Engine or the Agent Zero AI framework.

Introduction

  • Zero

    Welcome. Zero is a 3D engine you drive with Luau, working inside a live, shared world.

  • The content graph

    Everything you author in a world — a scene, a component, a module, a material, an asset type — is an asset in one shared…

Overview

  • Welcome to the Zero docs

    Documentation for the Zero engine: guides for building 3D worlds and games with Luau, plus the full engine API reference, all published through ZeroMind.

  • ZeroMind, the shared capability network

    ZeroMind is the service behind origozero.ai: the shared versioned library where everything built with the Zero engine becomes installable in another world.

  • Publishing to ZeroMind

    How finished worlds and assets move from the engine into ZeroMind, the shared versioned library other people and agents pull from and build on.

  • What makes Zero different

    Zero is an agent-first 3D engine where every part of a world is a versioned asset: validated at publish, forkable, and installable into any other world.

  • An engine where capability compounds

    Zero and ZeroMind are built on one idea: every finished piece of work becomes a reusable capability, so each project makes the next one easier.

  • Showcase: built by agents on Zero

    What AI agents built on Zero: a Game Boy Color emulator, DOOM's first chapter from the WAD, a JavaScript runtime, unmodified three.js, hundreds of casual games.

Core

  • Getting started

    This is the one read that shows how the pieces fit together.

  • Worlds & ZeroMind

    A world is the project you're working in — all of its entities, scenes, components, materials, and code.

  • Scenes

    A scene is a loadable arrangement of a world — its entities (with their components, transforms, and lighting), plus a startup script — saved as a .scene asset.

  • The engine

    Working in Zero means working inside a live, shared world.

  • ECS

    You work with the ECS layer through ecs. and entity. — two views of the same thing. entity. spawns and finds the entities…

  • Entities

    An entity is a named handle with a stable id, a transform, and a place in a hierarchy. On its own it does nothing — it has no shape, no physics, no behaviour.

  • Components

    A component is the primary unit of gameplay code: a piece of behaviour + data attached to an entity.

  • Requiring modules

    require is how one piece of Luau pulls in another. You hand it a string; it hands you back the table that module returned.

  • Generating assets & content

    You're building something — a scene, a game, a level — and you need an asset that doesn't exist yet: a 3D model of a dragon, a door-slam sound…

  • Scripting & tasks

    Two kinds of code run in Zero, and it's worth knowing which you're writing:

  • Runtime data

    runtime_data is a world's persistent, replicated data layer — where you keep state that must survive restarts and reach every player: progression…

  • Assets & asset types

    The asset system is the backbone of a Zero world.

  • The filesystem (VFS)

    The engine's state is exposed as a filesystem under /zero.

  • The tool system

    Tools are how the engine's capabilities become named, discoverable workflow operations.

  • Multiplayer

    Zero is multiplayer by default — in both edit mode and play mode.

  • Discovering the engine

    You don't need to memorise this engine. Its surface is discoverable in layers, and the order matters: the jobs it already knows how to do…

  • Development & versioning

    A world is a shared, multi-user editor session.

  • Performance: run each job where it belongs

    Zero executes your logic in two very different worlds. Luau is flexible, per-object, and serial. The engine core and the GPU are bulk and parallel.

  • Authoring content other people can use

    Everything you write here is read by somebody else — another creator, another agent, or you in a month with none of today's context.

  • Describing your assets

    An asset is only as findable as its description is clear. When you make something, say what it is, in a few plain sentences.

  • Home: your own folder, in every world

    /zero/home/<username> is a folder that follows you, not the world.

  • Observing a running world

    You have a running world and a question about a moment in it.

  • Building a plugin

    A plugin is a WebAssembly component that a world calls the way it calls a module.

  • The resource model: asset, CPU, and GPU

    Read this before working with any mesh, texture, material, or shader.

  • Scenes, authored as code

    A scene can say what it holds in code. build.luau inside the scene's folder is where the scene's content is written — all of it…

  • Troubleshooting

    Something you built doesn't behave — a component never runs, a weapon never equips, a value comes back nil, a mesh isn't where it should be.

  • Version control

    A world's history, branches and reviews are handled by ZeroMind — Zero's own version control system.

Topics

API Reference

  • agentSessions

    agentSessions is a Luau API namespace of the Zero engine, holding 4 functions: forget, get, put and record.

  • animation

    Observe what the engine is animating: every body it is posing, the clips driving each one and where their playheads are…

  • asset

    Asset resolver, ref envelope builder, sidecar metadata.

  • audio

    Engine-native audio: encode audio (or raw PCM) into the ZAUD compressed payload, decode/inspect it, set what the mix is heard at, a level per named channel…

  • av

    Audio/video encode + mux control: live streaming, recording, encoder/muxer primitives.

  • base64

    Base64 encode / decode between binary and text Luau strings (standard RFC 4648 alphabet, padded).

  • blend

    Record-stride blend primitives over Buffer slices: layout registry + weighted/lerp combiners.

  • bundle

    bundle is a Luau API namespace of the Zero engine, holding 1 function: update.

  • camera

    Script-facing camera queries: the main scene camera, the on-screen render camera, the editor fly-camera, per-frame view data, and the camera observation…

  • cameraInput

    Physical cameras as live textures and pixel sources: list the capture devices (a webcam, a phone's front and back cameras), open one as a feed…

  • channel

    Keyframe-channel sampling primitives: registry + sampleInto variants.

  • color

    Color construction, conversion, and perceptual ops (RGB / HSL / HSV / Oklch / hex).

  • ColorSequence

    ColorSequence is a Luau API namespace of the Zero engine, holding 2 functions: deserialize and new.

  • component

    component is a Luau API namespace of the Zero engine, holding 20 functions, among them data, entity, entityId, instanceId and add.

  • compute

    GPU compute pipelines: compile shaders, dispatch workgroups, read back results.

  • cursor

    cursor is a Luau API namespace of the Zero engine, holding 2 functions: clear and set.

  • debugger

    Luau debugger: breakpoints, stepping, stack inspection, watches.

  • ecs

    ecs is a Luau API namespace of the Zero engine, holding 40 functions, among them AudioListener, AudioSource, Camera, Collider and CollisionGroups.

  • egress

    Credential-injecting HTTP for BYO-key world egress (Mechanism B).

  • engine

    engine is a Luau API namespace of the Zero engine, holding 48 functions, among them discardPlayChanges, editWaiters, engineRecord, gameplayReady and gpuCompute.

  • entity

    Entity spawn / despawn / query / hierarchy surface.

  • Entity

    Entity wrapper namespace. Also reachable as the lowercase entity(...) proxy constructor.

  • environment

    Environment / reflection capture: bake the scene into reflection-probe cube slots from world positions, persist them as faces6.texture assets…

  • Field

    Field is a Luau API namespace of the Zero engine, holding 24 functions, among them alias, assetRef, bitmask, bool and check.

  • font

    Font primitive: parse a font file ONCE into a baked, vectorized glyph format (ZFNT), then drive every text surface from it.

  • frameStream

    Carries an image the GPU drew out to another program: the view a camera renders…

  • globals

    globals is a Luau API namespace of the Zero engine, holding 1259 functions, among them deserialize, new, Entity, allTypes and distance.

  • home

    The person's home folder, /zero/home/<username>: their own files, carried from world to world in the editor.

  • http

    Async HTTP: GET/POST returning JSON or raw bytes.

  • httpServer

    Serve HTTP from this engine.

  • i18n

    The player's language, and which of your world's languages to show them. i18n.pick({"en", "pt", "es"})…

  • input

    input is a Luau API namespace of the Zero engine, holding 41 functions, among them armObservation, backUnanswered, emulateKeyDown…

  • jobs

    jobs is a Luau API namespace of the Zero engine, holding 21 functions, among them context, dispatch, find, inspect and list.

  • layers

    Top-level scene-management namespace + Scene proxy. Owns the public layer-management API surface exposed on _G.layers.

  • library

    Discover, check, and import library assets: the @builtin/ tree the engine ships and the @namespace/ trees imported from other worlds.

  • live

    live is a Luau API namespace of the Zero engine, holding 1 function: isConnected.

  • log

    log is a Luau API namespace of the Zero engine, holding 4 functions: debug, error, info and warn.

  • logs

    Read-only query surface over the engine's in-memory log ring buffer.

  • lsp

    Embedded Luau language server: check / search / inspect.

  • luau_codegen

    luau_codegen is a Luau API namespace of the Zero engine, holding 3 functions: chunk, chunks and status.

  • luau_profile

    Sampling profiler + manual regions for Luau scripts.

  • Material

    Material helpers namespace.

  • mathx

    Batch math kernels over buffer slices (damp, lerp/slerp, transform).

  • mcp

    mcp is a Luau API namespace of the Zero engine, holding 4 functions: call, image, listTools and poll.

  • mcpLog

    Read-only MCP tool-call log ring buffer.

  • microphone

    Capture from an input device and read what is arriving: a loudness, a magnitude spectrum, and the raw PCM.

  • modelImport

    The model-import pipeline: decompose any assimp-supported 3D model (fbx, obj, dae, gltf, glb, stl, ply, 3ds) into meshes, materials, textures…

  • modules

    modules is a Luau API namespace of the Zero engine, holding 2266 functions, among them getInstructions, getManifest, getReadme, inspect and onChange.

  • multiplayer

    Multiplayer sync state and operations: connection, peers, ownership, rooms, undo/redo.

  • notices

    Post an event record that surfaces to the callers it is addressed to on the response of the tool call that posted it, or on their next tool call.

  • NumberRange

    NumberRange is a Luau API namespace of the Zero engine, holding 1 function: new.

  • NumberSequence

    NumberSequence is a Luau API namespace of the Zero engine, holding 2 functions: deserialize and new.

  • nx

    nx is a Luau API namespace of the Zero engine, holding 67 functions, among them add, addStrided, addStridedFrom, applyAbs and applyCeil.

  • packages

    Discover and inspect registered packages (folders marked with package.yaml).

  • physics

    Lowercase alias of Physics. Same identity. Prefer this in new code so the convention matches entity, scene, cam.

  • Physics

    Physics namespace: collisions, joints, raycasts, body manipulation.

  • plugins

    What the plugin host loaded, and the one way to call a plugin.

  • postprocess

    Fullscreen post-process effects: register / remove / toggle / named-property updates / list the chain / read one effect's declared property schema…

  • preset

    Preset namespace: apply named tuning bundles to components.

  • profiler

    Frame-level profiler capture, EMA stats, and named profiling blocks.

  • Random

    Seeded random-number generators.

  • reflectionProbe

    Reflection-probe system: multiple proximity-blended reflection probes in a scene.

  • renderer

    GPU-resource factory + CPU codec/store wrappers: the GPU/CPU half of the asset↔resource split.

  • scopes

    Scopes: work you start together and that ends together, tied to what started it (an entity, a component, a scene, another scope)…

  • service

    Credit-metered service invoke, buffered or streamed.

  • settings

    settings is a Luau API namespace of the Zero engine, holding 7 functions, among them all, get, getBool, getNumber and getString.

  • shader

    Shader compilation: turning authored WGSL into registered GPU programs, and the reusable modules those programs include.

  • shell

    Engine emulated Unix shell: same shell that powers the MCP bash tool.

  • skeleton

    The skeleton pose-data pipeline: sample a clip into a pose buffer, and bind/apply a pose buffer onto a Skeleton + Model entity.

  • sky

    Sky configuration: type, time of day, day/night cycle, procedural parameters, presets, explicit sun direction.

  • stream

    Named byte streams by URL scheme: TCP, tty, Bluetooth Low Energy and loopback transports, dialled out or listened…

  • streaming

    What the engine has resident of a world's detail right now, and why a piece of it is not on screen.

  • stringx

    Batch text-scanning kernels: read a whole run of numbers out of a string in one call.

  • subscriptions

    Runtime inspection and cancellation of component-event subscriptions.

  • substrate

    Typed data buffers, on the CPU or the GPU: the engine's one buffer primitive.

  • task

    task is a Luau API namespace of the Zero engine, holding 29 functions, among them active, await, background, batched and bindCaller.

  • terminal

    terminal is a Luau API namespace of the Zero engine, holding 7 functions, among them create, destroy, kill, list and poll.

  • text

    Text rasterisation resource: create a text handle, set its content and style, then rasterise it to a texture for display…

  • time

    time is a Luau API namespace of the Zero engine, holding 6 functions, among them deltaTime, drawnFrameCount, frameCount, realtime and time.

  • toml

    toml is a Luau API namespace of the Zero engine, holding 3 functions: encode, parse and replaceArrayTables.

  • tools

    tools is a Luau API namespace of the Zero engine, holding 360 functions, among them __useVia, bind, callable, create and createToolbox.

  • Transform

    Math helpers for positions, rotations, and directions on transforms.

  • typed

    typed is a Luau API namespace of the Zero engine, holding 1818 functions, among them build, flushPendingPersists, forgetRuntime…

  • ui

    UI system: screens, styles, themes, widget responses, focus, custom-widget builders, per-widget state.

  • userfile

    The files of the person at the screen, both ways. pick opens their own file picker (native OS dialog / Android / web browser) and brings the chosen file(s)…

  • vfs

    Virtual filesystem: read, write, list, watch.

  • video

    Video playback: create / play / pause / seek / setRate / setLoop / destroy on render-target-backed video players.

  • world

    world is a Luau API namespace of the Zero engine, holding 93 functions, among them add, add_all, affirm, args and assetInstallable.

  • ws

    ws is a Luau API namespace of the Zero engine, holding 6 functions, among them close, connect, liveness, poll and recv.

Types

  • agentSkill

    A skill packages what an agent needs to do one job well: the instructions, the assets and toolboxes the job runs through…

  • animation asset type

    A single animation clip, as a composite asset. The folder <name>.animation/ carries:

  • assetType (asset type)

    The assetType is the type of types — the meta-type that every <typename>.assetType/ folder is an instance of, including itself.

  • avatar

    A playable character, composed from three independent parts:

  • avatarType

    An avatar type describes a kind of body: a humanoid, a quadruped, a vehicle.

  • Bundle (asset type)

    A bundle is a composable, spawnable entity assembly— a saved entity hierarchy plus its components, sub-assets…

  • Component (asset type)

    A component is a reusable behavior + data unit attached to an entity.

  • Compute shader (asset type)

    A .computeShader is a GPU compute (GPGPU) program with a zero-scaffolding authoring contract: you write only @compute fn main(...)…

  • data (asset type)

    A .data instance is a configured value binding to a dataType contract…

  • dataType (asset type)

    A dataType is a user-authored typed-data contract: it declares a set of fields — names, types, constraints, defaults…

  • dynamicAsset (asset type)

    A prompt-driven, self-regenerating 3D asset.

  • editorLayout

    An editor dock arrangement as an asset: a <name>.editorLayout/ folder whose layout.yaml names either the panels the arrangement holds…

  • editorPanel

    A dock tab in the editor, as an asset. A <name>.editorPanel/ folder carries an init.luau that returns the tab's spec:

  • effect

    A set of visuals packaged as one thing: every impact a weapon makes, every stage of an explosion, the muzzle flash, impact and tracer of a gun.

  • .font asset type

    A .font is a first-class font asset: font-file bytes (TTF / OTF / WOFF / WOFF2) converted into a guid-anchored asset via asset.create…

  • gaussianSplat

    A photographic capture of a real place, stored as a cloud of oriented 3D Gaussians rather than as triangles.

  • guide

    A guide is a single-file documentation asset: a <name>.guide/ folder whose body is guide.md, surfaced through the guides MCP tool…

  • Importer (asset type)

    An importer is a Luau function that converts a source file (GLB, PNG, CSV, custom binary) into one or more derived assets registered in the engine.

  • inputBinding assetType

    One control in a scheme — jump, move, boost — expressed as an asset.

  • Input macro (asset type)

    An input macro is a recorded or hand-authored sequence of input simulation events — keystrokes, mouse moves, button clicks, scroll wheel deltas…

  • inputMap assetType

    A control scheme, expressed as an asset.

  • lightmapData

    A baked-lighting container: ONE asset per scene holding every baked lighting payload the GI bake flow produces…

  • loadingScreen

    The screen players see while your world loads, as an asset: a <name>.loadingScreen/ folder whose screen.yaml states the title, a line of text or rotating tips…

  • Material (asset type)

    A material is a named, configured instance of a .shader.

  • mesh

    A mesh is renderable geometry — vertices and triangle indices, and, for a skinned mesh, the per-vertex skinning data that binds it to a skeleton.

  • Module (asset type)

    A module is a reusable, stateless (or globally-stateful) Luau library that other code pulls in with require().

  • Nodebox (asset type)

    A nodebox is a namespace folder that groups related .procNode/ children, the way a toolbox groups .tool/ children.

  • Package (asset type)

    A package is an asset — a <Name>.package/ folder that bundles components, modules, scenes, presets, tools, and any other typed sub-assets under one identity…

  • pixelTemplate (asset type)

    A saved, reusable pixel-art sheet. A <name>.pixelTemplate/ folder asset carries a JSON payload template.pixbin…

  • plugin

    Compiled code in a world, used the way a module is.

  • population

    A hardware-instanced population at rest: one mesh drawn at every transform of a baked placement, as ONE draw call per variant at any instance count.

  • Preset (asset type)

    A preset is a named set of typed values for one declarer's settings schema: the texture assetType's, an importer's, a component's…

  • procGraph (asset type)

    A .procGraph asset is a procedural graph: a description of how to make something, written as code, that can be evaluated over and over with different numbers.

  • procNode: one reusable step of procedural generation

    A .procNode is a node authored as content: a folder whose init.luau is the node.

  • procPack — a family of procedural ops as content

    A .procPack is a FAMILY of procedural operations authored as content: a folder whose init.luau returns a pack table.

  • procRecord: a kind of record a graph makes and saves

    A .procRecord defines a kind of value a procedural graph moves that becomes an asset when it is saved: a material, a mesh, a texture…

  • renderFeature

    A render feature inserts custom GPU passes into the frame pipeline.

  • rig asset type

    A skeleton, as a composite asset. A rig is its own primitive — not a mesh and not an animation. The folder <name>.rig/ carries:

  • Scene (asset type)

    A scene is a saved, loadable snapshot of an entity scenegraph inside a world: the entity hierarchy, transforms, components, lighting…

  • sceneModule — a part of a scene, authored as code

    A .sceneModule is a recipe for scene content: a folder whose init.luau declares the inputs a placement may set and returns the function that builds the content.

  • Service (asset type)

    A service generates content you don't have yet — a 3D mesh, an image, a PBR material, a sound effect, a humanoid animation, a navigable splat world…

  • serviceRun

    The durable record of one service generation — what was asked for, which gateway job is doing it, and what state that job reached.

  • Shader (asset type)

    A shader is a WGSL program that runs on the GPU.

  • Shader module (asset type)

    A .shaderModule is a block of WGSL that other shaders include rather than copy — a lighting model, a set of colour-space helpers, one package's shared prelude.

  • soundClip

    An audio asset — a managed container holding a sound effect or music track, addressed by the .soundClip suffix.

  • Style (asset type)

    A style is a UI design-token bundle: colour palette, spacing scale, typography pairs, and the widget classes built from them.

  • terrainData

    A landscape's baked data, as one asset.

  • Test Suite (asset type)

    A test suite is a registrable asset that bundles one group of automated engine tests.

  • texture

    An image asset — the raw bytes of a png / jpg / jpeg / hdr / ktx2 / webp / bmp / tga file. Loose image files under a textures/ directory classify as texture.

  • Tool (asset type)

    A tool is a single agent-callable function whose schema is its typed function signature.

  • Toolbox (asset type)

    A toolbox is a namespace folder that groups related .tool/ children plus shared helpers.

  • Voxel Template (asset type)

    A voxel template is a reusable, named voxel grid that live instances link to.

  • workflow

    A job whose shape is a program.