rbx-cli¶
Unified Roblox Open Cloud CLI. One binary, one install, every tool as a
subcommand. The command is rbx, short because you type it all day.
This site is a rendering of the docs/ directory of the
rbx-forge/rbx-cli repository. Every
page is the file the repository already serves, built by CI on every push to
main, so the site and the repository cannot disagree. The "Suggest an edit"
link at the top right of each page opens the exact file it came from.
Two tools, one backbone¶
The command surface looks broad because it is two products that happen to share
a spine. The spine is the environment model: one rbxplace.toml maps env names
to universes and places, and every command resolves --env through it.
Declarative, Terraform for Roblox. init, env, apikey, place,
meta, config, rtbf, shop. You write the desired state into a TOML file you
commit, and the tool reconciles Roblox to match it. Diffable, reviewable, safe
to run on every push, idempotent by construction.
Operational, kubectl for Roblox. servers, analytics, ban, restart,
data, memorystore, message. These act on state that only exists while the
game is running, and no TOML file can describe it. Banning a player is a
consequence of what happened in your game last night, not a checked-in
intention.
One command sits between the two on purpose. secret writes the credentials
the game reads at runtime, and they are the one part of a universe's
configuration that a repository must never contain, so there is no file to
reconcile from, and the value is sealed before it leaves your machine.
Comparable tools have the first pillar. Mantle never had the second, and nothing else does either: you are otherwise clicking through the Creator Hub or writing your own Open Cloud scripts. The second pillar is the difference between deploying a game and running one, and it is why the surface is wide on purpose rather than by accretion.
Every command¶
| Command | What it does |
|---|---|
init |
Create the group, universe and places, and write them into rbxplace.toml |
import |
Adopt a universe that already exists: every config and lockfile, from what is live |
env |
Read rbxplace.toml: list envs, print one id, generate a module for game code |
apikey |
Declare Open Cloud keys and their scopes, create and rotate them |
doctor |
Prove the loaded key works, with one real read rather than a syntax check |
check |
Every configured tool's check in one pass, one exit code. status is the same engine for a human |
place |
Place files: upload, download, promote between envs, roll back |
meta |
Universe and place metadata: name, icon, thumbnails, devices, visibility |
config |
The live in-experience config, with revisions and rollback |
secret |
Credentials the game reads through HttpService:GetSecret, written encrypted |
rtbf |
Which data store keys hold a user's data, so a right-to-be-forgotten request can delete them |
shop |
Game passes, badges and developer products, with typed Luau codegen |
servers |
Live. Servers up now, how the stopped ones ended, and what a crashed one logged |
analytics |
Live. Players, retention, revenue per payer. CSV for charting elsewhere |
ban |
Live. Inspect and change player restrictions |
restart |
Live. Forecast and launch a rolling server restart |
data |
Live. Read, overwrite, copy and recover one data store entry |
memorystore |
Live. Write cache values servers read through MemoryStoreService |
message |
Live. Push a MessagingService message to every running server |
ads |
Live. Launch and steer ad campaigns. Spends money, reads no results |
probe |
Live. A raw authenticated request to any Open Cloud path |
open |
Launch Studio at a place, by name or by id |
download |
Fetch a Roblox asset by id |
completions |
Shell completions that read your rbxplace.toml at TAB time |
Everything marked Live acts on a running game and shares one safety model:
dry run by default, --apply to write, --env all refused. That model, and the
keys it wants, are on Live operations.
Install¶
Add it to your project's rokit.toml, then run rokit install. Pin the
version you want from the
releases page:
Or let Rokit write that entry for you. Pass the alias explicitly, or you get an
rbx-cli command instead of rbx:
The precompiled binaries attached to every release need no Rust toolchain. Building from source does, at the MSRV declared in the workspace manifest.
Where to start¶
In a hurry, or starting from nothing? Quick start walks the whole path on one page, from pinning the tools to a staging deploy running in CI, and links here for the depth rather than before it.
The longer route, and the two ways in depending on whether the experience exists yet:
- Nothing on Roblox yet.
rbx initcreates the group, universe and places, and writes therbxplace.tomlthat everything else reads. - A universe that already exists.
rbx importadopts it: every config and lockfile written from what is live, in one command.
Both paths converge on the same three pages. rbx env explains the
rbxplace.toml they produce and how --env resolves through it,
rbx apikey manages the Open Cloud keys declaratively, and
rbx doctor proves those keys work with one real read rather than
a syntax check.
From there:
- Putting it in CI.
rbx checkruns every configured tool's check in one pass with one aggregated exit code. That page is also whererbx status, the same engine for a human rather than a pipeline, is documented. - Shipping a build.
rbx placeuploads, downloads, promotes between envs and rolls back to a past version. - Everything that is not the place file.
rbx metafor universe and place metadata,rbx configfor in-experience live configs,rbx shopfor passes, badges and developer products with typed Luau codegen. - Answering a deletion request.
rbx rtbfdeclares which data store keys hold a user's data, and checks the declaration against the stores you actually have. A template that matches nothing is accepted by Roblox and deletes nothing, which is the failure worth catching before somebody asks. - Acting on a running game. Live operations is the entry point
and the safety model: dry run by default,
--applyto write,--env allrefused. - More than one person on the repository. Working in a team is
the lockfile conflict procedure. Worth reading before you need it, because a
badly resolved
rbxshop.lock.tomlcreates a second paid game pass that this tool cannot delete.
Not on this site¶
Documentation about the repository rather than the tool stays in the repository: README for the full command table and the stability policy, ARCHITECTURE.md for the crate layout, CONTRIBUTING.md for setup and what makes a PR mergeable, CHANGELOG.md for what changed in a release, and SECURITY.md for where vulnerability reports go, which is never the public tracker.
rbx-cli is a community tool under
MPL-2.0. It is not
affiliated with, endorsed by, or sponsored by Roblox Corporation.