Roswaal is a free visual scripting tool for Luau. You build scripts as node graphs in your browser or in a local app, and Roswaal
compiles them to plain, readable .luau.
- No plugin and no runtime. Graphs are
.nodescriptfiles on disk. What reaches your game is ordinary Luau, with nothing of Roswaal’s in it. - Works with your existing setup. Output syncs through Rojo like any other source file, and Roswaal can open a place file or a Rojo project you already have.
- On a computer, an iPad or a phone. The editor is the same everywhere, and the browser version needs nothing installed.
- Free forever. Roswaal’s own code is 0BSD. See Attributions.
What’s new since 0.97
Work with the codebase you already have.
- Open a place file. A
.rbxlor.rbxlxbecomes a Roswaal project. You choose which scripts to bring in, and identical copies of a script are merged into one file. - Export back into the place. Edited and new scripts are written into your place file. Every other part of the place is left untouched.
- Import a Rojo project.
default.project.jsonbecomes a node map. - Wally packages. Packages show in the project tree, and you can add or remove them there.
- DataModel browser. Browse the place’s instances and open their properties. Drag a property onto a graph to get or set it.
- Luau that understands your project. Hovers show doc comments and follow
requireacross files. Instance paths that don’t exist in the place are flagged.
Events, already typed. On Event runs each time an instance’s event fires. Pick the event from a list of what that class fires, and its parameters arrive typed. Connect Event fills its parameters in the same way.
A new interface.
- The graph fills the window, with every control floating over it in small groups, in every window.
- Panels are cards. Dock them to an edge, stack them, share one as tabs, fold them away, or float and resize them anywhere.
- Made for touch too. On an iPad, cards open from the top bar, and two- and three-finger taps undo and redo. On a phone, the controls fold away to leave room for the graph.
- A new start page and a new node packs page, with recent projects as cards, the demos one click away, and one search over every pack and node.
Node maps keep their folders in step. Writing a node map makes the folders Rojo syncs. Changing an entry’s path moves its folder and the graphs in it, and a graph whose Luau goes where no map syncs it is listed.
Safer saving and compiling. Autosave keeps every edit, open graphs follow their files when a branch switch or pull changes them, and the compiler reads its own Luau back before writing it.
Next up: converting existing Luau into node graphs.
Full details are in the release notes, and everything else is in the documentation.
Getting started
| How | Notes | |
|---|---|---|
| Browser | roswaal.app | Nothing to install, with a demo project ready to open. |
| Rokit (Windows) | rokit add neopolitans/Roswaal roswaal |
macOS and Linux builds are planned. |
| From source | GitHub | Node.js, npm install, npm run build. |
The web app runs on Windows, macOS, iPadOS (including Apple Pencil) and iOS. Android hasn’t been tested yet.
To open a project folder of your own, you need Google Chrome or Microsoft Edge. In any browser, you can open a project as a .zip, or a place file.
Features
Panels that float, dock and share
Drag a card’s header to dock it to an edge, stack it under another, or drop it on another card’s header to share it as tabs.
Search for nodes by name or visually
Right-click to search by name. Ctrl + Right-click to browse visually.
Documentation for every node, with example graphs
Ctrl + K searches it from the editor, Node Design or the documentation itself.
Suggest an edit from any documentation page. Each page has an edit button that opens a report for that page.
Who is Roswaal for?
Roswaal is designed for two groups:
- Game designers and artists who want to build with Luau visually.
- Developers with visual scripting experience from other engines who are new to Roblox. There is a Coming from Blueprints guide for anyone who has used Unreal.
If you already write Luau comfortably, Roswaal may not be what you need. Feedback from experienced programmers is still very welcome, including telling me where it falls short.
Project status
Roswaal is in active development. It is built primarily for Roblox. Lune support is experimental and is a long-term goal.
How it’s made. Roswaal comes out of years of research into visual scripting for game engines, from 2019 to 2026. The designs, mechanisms and planned features all come from hand-written projects, design documents and prototypes that I made before May 2026. The pre-release builds (0.x.x) were written with Claude Code.
I plan to replace all AI-generated code with hand-written code before I consider a 1.0.0 release.
Feedback and bug reports
Report everything at roswaal-feedback/issues. I’m especially interested in:
- Regressions, bugs and unexpected compile output in the current build.
- Lune issues. Experienced Lune developers would be a huge help here.
- Roblox Luau issues.
- Documentation errors and reviews.
- Feature requests for Roblox or Lune.
FAQ
Can I use Roswaal with my existing codebase?
Yes. You can open a place file or import a Rojo project, and your existing scripts appear in the project tree. Graphs can call your modules, and Luau you write by hand sits alongside graphs in the same project. Converting existing Luau into graphs is the next major feature.
Are other languages planned?
Not from me. I’ve been researching visual scripting for Luau and C# for years, and I’m happy with achieving it for Luau. Anyone looking to add support for another language is welcome to fork and try. Be warned, here be dragons.
Why 0BSD?
Roswaal has been my dream project for a long time. A lot of people told me it couldn’t be done, so I built the pre-release versions with Claude Code. Because it isn’t entirely my own work, I don’t want personal credit or gain from it.
Use it, modify it or ship it. No attribution is required. A few bundled pieces keep their own permissive licences, and they’re credited on the Attributions page.
Just have fun node scripting, and let me know when things go wrong!

























