Skip to main content

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:

FileDescription
build/script.luaPlain compiled output — readable, for debugging
build/script.obf.luaObfuscated — inject this for release
build/script.dev.luaDev build (plain) — includes dev overlay
build/script.compat.luaCompat build — excludes UNC-dependent modules
build/script.compat.obf.luaObfuscated 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 signal but never read or used
  • Ghost references — signal names used in handlers but never declared
  • Orphan functions — func blocks 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.