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 functionsfunc 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.