Write modular TypeScript. rb build compiles everything into one obfuscated file with a CDN loadstring — inject it and go. No boilerplate, no module hell, no manual obfuscation.
Declare state once. Signals automatically notify the UI, event handlers, and other components — no manual sync.
One TypeScript file = one component. Lifecycle, connections, and cleanup are managed for you.
on.heartbeat, on.inputBegan, on.respawn. Add when and every throttling with a single option.
Pulse.Loop, Pulse.Draw, Pulse.Aim, Pulse.Hitbox, Pulse.Log — battle-tested primitives so you write features, not plumbing.
Gate the UI with a key or add a premium tier with locked groupboxes. Users unlock premium live — no re-injection.
rb compiles all modules into one obfuscated .lua file. One push to GitHub, one loadstring URL — no per-module obfuscation, no runtime require().
Requires Node.js 18+ and pnpm. Installs the rb CLI globally:
pnpm add -g pulse-rbpnpm add -g pulse-rbrb init my-scriptrb build→ injectState, UI, and event handling — all in one self-contained component. Signals reactively update the character whenever the toggle or slider changes. The framework wires it all up.
Build your first component →// src/combat/SpeedHack.ts
defineComponent('SpeedHack', () => {
const enabled = signal(false)
const speed = signal(16)
on.heartbeat({ when: enabled }, () => {
const h = _PulseGetHumanoid()
if (h) h.WalkSpeed = speed()
})
on.respawn(() => {
const h = _PulseGetHumanoid()
if (h) h.WalkSpeed = enabled() ? speed() : 16
})
return [
toggle('Speed Hack').bind(enabled),
slider('Walk Speed', { min: 16, max: 250 }).bind(speed),
]
})
Write modular source, ship one obfuscated file. Learn to find remotes, hook game logic, and build organized scripts that are easy to maintain and safe to deploy.