MicroStudio

Roblox Luau on your machine, without Roblox Studio and without the client. Use it as an interpreter, as your project’s runtime, or as a test runner.

npm install -g microstudio

Node 22+. No extras. Prebuilt for Linux, MacOS and Windows.

src/*.tsrbxtscout/*.luauRojoDataModelMicroStudiorunning

An interpreter

Run a Luau file, pipe a script on stdin, or start a prompt. Instance.new, game, workspace and task are already there — no project, no configuration.

microstudio -e "print(typeof(workspace))"

Your project's runtime

Point it at a roblox-ts + Rojo project and it loads the compiled Luau into a live DataModel, then runs the server scripts against a real clock.

microstudio dev examples/hello --once

A test runner

Specs are Luau, or TypeScript in a roblox-ts project. Every file gets its own world, and failures name the file, the line and the call chain.

microstudio test

Everything the runtime gives you

MicroStudio is two layers with one narrow seam: a Rust runtime that owns the simulation, and a TypeScript developer layer that owns the tooling.

A real Luau VM

Nothing is emulated, stubbed or mocked away. The Rust runtime embeds a pinned Luau build and executes the real compiled output.

Roblox, not a mock

Instance.new, the DataModel, the service layer, CFrame and Vector3 datatypes — all present, all inspectable from the REPL.

Deterministic by design

The VM owns the clock, so task.wait and timers advance on command. That is what makes the runtime assertable.

EDEN, built in

An assistant that knows every page of these docs and will navigate you straight to the one you need.

A playground that runs

Write roblox-ts or Luau in the browser, run it on the real runtime in an isolated sandbox, and send the snippet to anyone with a link.

Answer-shaped docs

Compatibility deviations, simulated services and every CLI flag, documented as reference rather than prose.

Write it in the browser.
Run it on the real runtime.

Pick roblox-ts or Luau. TypeScript is compiled by the real roblox-ts compiler in your tab, then the Luau is executed by the actual MicroStudio runtime in an isolated sandbox — Instance.new, game, workspace and task are all real.

The sandbox has no network access and kills anything that overruns its time limit. Every snippet gets a share link.

playground.luauRun
local arena = Instance.new("Model")
arena.Name = "Arena"
arena.Parent = workspace

for i = 1, 3 do
	local pad = Instance.new("Part")
	pad.Name = `Pad{i}`
	pad.Position = Vector3.new(i * 6, 0, 0)
	pad.Parent = arena
end

print(`{arena:GetFullName()} has {#arena:GetChildren()} children`)
$ microstudio playground.luau
game.Workspace.Arena has 3 children

Install it in one command, or spend five minutes in the playground first. Either way, the docs are one click away — and EDEN is in the corner if you get stuck.