Getting started✎

From an empty folder to a script running in Studio.

Verified

Roswaal is not a Studio plugin. It writes .luau files next to your graphs, and Rojo syncs those into Studio like any other source file. That means the generated code is a file you can read, diff and commit.

Open a project

Three ways in, all the same editor: installed on your computer, in a browser on your computer, or in a browser on a tablet or a phone.

Where are you working?

Install roswaal

roswaal is one file: the command, the daemon and the editor together, with nothing else to install. Download it for your computer from the latest release.

Your computer

Download roswaal-<version>-macos-aarch64.zip. It is for Apple Silicon: M1 and later. Safari unzips it for you; elsewhere, double-click the zip. Then, in Terminal, put it somewhere your shell looks:

sh
mkdir -p ~/.local/bin
mv ~/Downloads/roswaal ~/.local/bin/
xattr -d com.apple.quarantine ~/.local/bin/roswaal
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zprofile

Open a new Terminal window and roswaal version prints the version.

Info

Why the extra step. macOS marks every download as quarantined, and will not run a quarantined program unless Apple has notarised it. This build is not notarised yet, so macOS says it cannot check it for malicious software and refuses. xattr -d com.apple.quarantine takes the mark off this one file, which says you trust it; it changes nothing else. Signing with an Apple Developer ID is planned for late October 2026, and this step goes away then.

Warning

Ran it before taking the mark off? macOS remembers refusing that copy, and removing the mark afterwards does not change its mind: the command waits and does nothing. Delete it, unzip the download again, and do the steps above on the new copy before running it.

Download roswaal-<version>-windows-x86_64.zip, for 64-bit Intel and AMD. Then, in PowerShell, from the folder it downloaded to:

powershell
$dir = "$env:LOCALAPPDATAPrograms
oswaal"
Expand-Archive .
oswaal-*-windows-x86_64.zip -DestinationPath $dir -Force
Unblock-File "$dir
oswaal.exe"
$path = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$path;$dir", "User")

Open a new terminal and roswaal version prints the version. Unblock-File takes off the mark Windows puts on downloads, so it does not ask about this file again. The path change is yours alone, and is undone in Settings → System → About → Advanced system settings → Environment Variables.

If you install Rojo with Rokit, it installs roswaal the same way, and picks the file for your computer:

sh
rokit add neopolitans/Roswaal roswaal

On any computer with Node.js 24, build it from a clone. npm link puts roswaal on your path, pointing at the clone, so a rebuild takes effect without installing again.

sh
git clone https://github.com/neopolitans/Roswaal
cd Roswaal
npm install
npm run build
npm link

Start it

  1. For a new project, roswaal new my-game makes one in a new folder: Rojo's three folders, a Main graph that prints Hello world, and place.rbxl with a baseplate and a spawn. --lune makes a Lune project, and --no-place leaves the place out.
  2. For a project you already have, go to it and set it up once: roswaal init writes a roswaal.json and a .roswaal/ folder, and nothing else.
  3. Run roswaal serve in the project, and open the editor address it prints — http://127.0.0.1:4471. It opens on that project.
sh
roswaal new my-game   # a new project, in a new folder
cd my-game
roswaal serve         # the editor, on 127.0.0.1:4471

.roswaal/ holds your graphs and is source, not cache — commit it. src/ holds what Roswaal generates from them.

Another project

  1. Click the Roswaal mark at the top left. The projects panel lists the ones you have opened before: click one to switch.
  2. For one that is not listed, press Home at the bottom of that panel.
  3. The start page asks for a folder. Type its path, or press Browse… to choose it.
  4. Press Open. For an empty folder, or one that is not there yet, it says Create: choose Roblox or Lune, and whether to include a place, and it makes a new project there. For a folder with files that is not a Roswaal project yet it says Initialise, which writes a roswaal.json and nothing else.

Open the web app. Nothing is installed: it opens on a demo project, kept in this browser, and the Roswaal mark is blue to say so. To work on your own:

  1. Click the Roswaal mark at the top left, for the projects panel.
  2. Press Project at the bottom of the panel.
  3. New project… starts one from nothing: Rojo's three folders, a Main graph that prints Hello world, and a place with a baseplate and a spawn if you want one. It goes in place of the project kept in this browser, or into an empty folder in Chrome and Edge.
  4. Open folder… works on a folder on your computer and writes into it, as the installed editor does. It is in Chrome and Edge.
  5. Or Open .zip…, in any browser, for a project in a zip. It replaces the project kept in the browser, and asks first.
  6. Or Open place… for a .rbxl or .rbxlx. It shows how many scripts Rojo can sync and how many only the place can hold, and asks which to bring in. Places and Rojo projects has the rest.

Export, beside Settings in the top bar, takes the project out as a zip, with its place file if it has one, or the place file alone, as .rbxl or Legacy .rbxlx. Folders you have opened are listed in the panel, to reopen with a click.

  1. On your computer, zip the project's folder: Compress in Finder, or Send to → Compressed (zipped) folder in Explorer.
  2. Put the zip where the device can reach it: AirDrop, iCloud Drive, or any app that saves to Files.

Then, on the device:

  1. Open the web app and tap the Roswaal mark.
  2. Tap Project at the bottom of the panel.
  3. Tap Open .zip…, and pick the zip in Files.

Export, left of More in the top bar, saves it back to Files as a zip. The panels slide out over the graph, and the edits a keyboard makes are buttons under it: The Interface shows where things are, and Controls has the gestures. An iPad Mini is the smallest screen it is made for; a phone is best for reading graphs.

Your first script

  1. Right-click the project tree and make a new graph. On a touch screen, press and hold instead of right-clicking.
  2. Every script starts at a red Script Start node. Nothing runs without one.
  3. Right-click the canvas, search for Print, and wire Script Start's execution pin into it.
  4. Type something into the Value pin.
  5. Press Compile script. The generated .luau appears in the tree beside it.

The Interface shows what each part of the screen is. Most of the chrome is icons, and Toolbars draws every bar with its buttons named — including the three at the right-hand end of the top row, which are Docs, Node Design and Settings.

luau
--!strict
-- Generated by Roswaal. Do not edit this file directly;
-- edit Hello.nodescript and recompile instead.

print("Hello")

Warning

A generated file you edited by hand is not overwritten. Recompile with force when you mean to replace it.

Getting it into Studio

A node map describes where your files land in the DataModel, and compiles to a Rojo project file. Make one, point a folder at src, then run rojo serve and connect from the Studio plugin.

That is the whole loop: edit the graph, compile, Rojo syncs. Set Compile to Dynamic and the compile step happens as you work.

Last reviewed 8 October 2026 by @neopolitans