rebind is the command-line companion to the Rebind app: scaffold a package, validate and lint it offline, run it against your local Rebind app with live logs and hot-reload, then package and publish it to the marketplace. It installs with Rebind and lands on your PATH — no separate download. check, lint, new, and package work fully offline. run, exec, repl, whoami, and publish talk to the Rebind app, so it must be running (and signed in, for whoami/publish).

Commands

Every [path] defaults to the current directory and accepts either a package directory or a single .lua/.luau file.

new

The package name is the final path component (rebind new tools/hello creates a package named hello), lowercased to the marketplace slug charset.

check

Offline validation of the package contract: manifest schema and pricing rules, identity declarations, the full require graph, Luau compilation of every reachable module, and a permission audit (undeclared Net.* / System.Exec use fails here instead of at runtime).
Checking a script that lives inside a package shows its container:

lint

Advisory linting over the same require graph, with the Rebind standard library preloaded so HID, Log, hooks, and friends resolve. Warnings never block anything; error-severity findings (definite bugs) exit non-zero and block publish.

run

The dev loop: validates, loads the entry into the running Rebind app, streams the script’s log channel, and hot-reloads when a source file changes.
Only this script’s lines appear — its own Log.* output plus Rebind’s lifecycle notices and errors for it. --all-logs streams every Rebind log line (prefixed with its source) for app-wide debugging. Edits to .lua/.luau/ .toml files and anything under assets/ trigger a reload; a failing re-check keeps the previous run alive. rebind run scripts/wiggle.luau runs a single script from a package’s scripts/ directory — it inherits the package’s min_sdk, and its requires resolve from the package root.

exec and repl

Both run chunks in a persistent scratch runtime inside the Rebind app — the full SDK with real input output, state surviving between calls.
rebind exec - reads the chunk from stdin. A Lua error exits non-zero. rebind repl is the interactive version: same runtime, TAB completion queried live from the VM (your own variables complete, not just SDK names), and unfinished chunks continue on the next line. ⌃D exits.

package

Builds the .rbp registry artifact — a gzipped tarball of the package’s plaintext source and assets. Format details and the marketplace DRM rules are in Package format.

publish

Check → lint → package → upload for review. Requires a Developer account, a [marketplace] section in rebind.toml, a short_description, and an icon. The Rebind app’s authenticated session does the uploading; the CLI holds no credentials.

whoami

device is your registered Rebind Link with its live attachment state; transport is the session mode (hardware when your device drives output, software otherwise).