CLI Reference
All commands run from your project root (the directory containing src/). Install rb globally with the PowerShell one-liner from the Quick Start, then use rb <command> from any directory.
Project Setup
init
Scaffold a new Pulse project.
rb init my-script
rb init my-script --force # overwrite if directory exists
Creates:
my-script/
src/
layout.ts ← window config + optional key/premium system
pages/
1_Combat.ts ← Combat tab with free + premium groupboxes
combat/
SpeedHack.ts ← free example component
FOVChanger.ts ← free example component
Aimbot.ts ← premium example component
visuals/
PlayerESP.ts ← free example component
misc/
globals.lua
remotes.lua
build/
tsconfig.json
.gitignore
CLAUDE.md ← AI context for Claude Code
AGENTS.md ← AI context for other agents
PULSE_DOCS.md ← full framework reference
:::note Reserved page names Home and Settings are built-in tabs created automatically by the framework. Do not name your pages "Home" or "Settings". :::
Building
build
Compile all .ts and .lua files in src/ into a single script, then obfuscate.
rb build
rb build --no-obfuscate # skip obfuscation (faster)
rb build --dev # include dev overlay
rb build --no-compat # skip compat build
rb build --preset Strong # obfuscation preset: Low / Medium / Strong
rb build --copy # copy obfuscated output to clipboard after build
rb build --lua "C:/path/lua.exe" # specify Lua executable path
Output files:
| File | Description |
|---|---|
build/script.lua | Plain compiled output — readable, for debugging |
build/script.obf.lua | Obfuscated — inject this for release |
build/script.dev.lua | Dev build (plain) — includes dev overlay |
build/script.compat.lua | Compat build — excludes UNC-dependent modules |
build/script.compat.obf.lua | Obfuscated compat |
Never edit files in build/ directly — they're overwritten on every build.
copy
Build and copy the obfuscated output to clipboard in one step.
rb copy
rb copy --compat # copy compat build instead
watch
Auto-rebuild every time a file in src/ is saved. Polls every 500ms.
rb watch
rb watch --compat # also rebuild compat on change
Stop with Ctrl+C. Reinject after each rebuild.
check
Syntax-check the compiled output using luac -p without running a full build. Useful for verifying transpiler output.
rb check
rb check --compat
rb check --lua "C:/path/lua.exe"
clean
Delete all files in build/.
rb clean
lint
Analyse source for common issues before building.
rb lint
Reports:
- Dead signals — declared with
signalbut never read or used - Ghost references — signal names used in handlers but never declared
- Orphan functions —
funcblocks that are never called from any component or page
Run before a final build to catch unused or broken code.
obfuscate
Obfuscate an already-compiled build/script.lua without recompiling.
rb obfuscate
rb obfuscate --preset Strong
rb obfuscate --no-compat
rb obfuscate --copy
The obfuscator (IronBrew2) is cloned from GitHub to ~/.rb/ironbrew2/ on first use and runs via the .NET CLI (dotnet). The IronBrew banner comment that IronBrew2 prepends is stripped automatically from the output.
Module Management
new
Create a new module file inside src/.
rb new module combat/AutoKick # creates src/combat/AutoKick.ts
rb new module player/Stats --plain # creates src/player/Stats.lua (plain Lua)
rb new remote RageMode # appends a remote stub to src/misc/remotes.lua
The module subcommand creates a TypeScript component by default. Pass --plain for a plain .lua file.
remove
Delete a module file from src/.
rb remove combat/AutoKick
Removes the file. Does not update page mounts — remove those manually.
list
Print the load order of all modules as they'll appear in the compiled output.
rb list
rb list --compat # show compat load order
Useful for verifying that globals.lua compiles first and your dependencies are in the right order.
status
Show project summary: version, project root, git status, build output existence.
rb status
Git Shortcuts
save
git add -A && git commit in one step.
rb save "fixed aimbot radius"
rb save # auto-generates a timestamped commit message
history
Show recent git commits.
rb history
rb history 20 # show last 20 commits (default: 10)
restore
Check out a previous commit.
rb restore abc1234 # commit hash
rb restore main # branch name
rb restore v1.0 # tag
Install & Update
Install
Install rb globally with pnpm:
pnpm add -g pulse-rb
Requires Node.js 18+ and pnpm. See Environment Setup if you don't have them.
update
Update the installed rb to the latest version:
rb update
This runs npm install -g pulse-rb@latest under the hood. Alternatively, re-run the PowerShell installer to get the latest version.
Tools
ext install
Install the VS Code extension for legacy .rblua syntax support.
rb ext install
Installs to ~/.vscode/extensions/. TypeScript components use VS Code's built-in language service — no extra extension needed. See VS Code Extension for details.
docs
Generate PULSE_DOCS.md — a single-file reference of the full framework for pasting into AI context windows.
rb docs
rb docs --output my_context.md # custom output path
rb docs --output - # print to stdout
Similar to llms-full.txt on the website, but generated locally from your installed version of the framework. More accurate than the website version if your install has custom changes.
mcp
Start the rb MCP (Model Context Protocol) server. Lets Claude Code connect to your running script for live log inspection and state queries.
rb mcp
rb mcp --setup # print setup instructions for Claude Code
Obfuscation Settings
Compat exclude list
Modules excluded from script.compat.obf.lua are defined in your project's src/layout.ts:
export default {
// ...
compatExclude: ['player/UNC.ts'],
} satisfies LayoutConfig
Any path listed there (relative to src/) is dropped from the compat build only. The full build is unaffected.
The obfuscator is IronBrew2 (.NET CLI). It requires dotnet to be available on PATH — install the .NET SDK from dot.net if you see a "dotnet not found" error. IronBrew2 is cloned automatically to ~/.rb/ironbrew2/ on first use.