Noir is an in-game Lua scratchpad for Garry's Mod. It provides a code editor, a REPL, a file browser, and an execution layer that runs code across realms (self, server, clients, or shared). It is built on gmod-monaco and runs best on the GMod chromium branch.
More screenshots in assets folder
- Run code anywhere on self, server, all clients, a specific client, or shared. Return values and captured output (
print,Msg, errors) are sent back to the console, including output from hooks and timers that fire after the run. - REPL console built on the same Monaco editor, with foldable results and clickable
@file.lua:linelinks to function definitions. - JIT decompiler (
jit_decompiler2): reconstructs readable Lua from LuaJIT 2.1 bytecode for functions with no source on disk, resolving constants, upvalues, and real local names. - easylua-style helpers:
me,this,there,dir, search tables (all,us,bots,props), andlast; unrecognized identifiers resolve through entity search. - In-world entity picker: point at, list nearby, or filter entities by class/model and pass the reference back to your code.
- Find in Files: searches every Lua file locally and on the remote server, on a per-frame time budget with an accurate progress bar (
Ctrl+Shift+F). - Autorun: runs a configured list of scripts on load, with crash protection that disables autorun if a script crashed the game.
- File browser for opening and saving across
DATA,LUA, andGAMEpaths. - GMod-aware autocomplete covering the API (functions, methods, enums, hooks) plus your live runtime tables, with wiki docs on hover.
- luacheck diagnostics as you type.
- Monaco editor features: command palette, code folding, tabs, activity bar with file tree, snippets, minimap, and a custom theme.
- NDL: a debug library (
NDLglobal) with function detours, argument filters, and call tracers.
Open a PR. Lint your changes with glualint before submitting

