Rbxasset
Deploy from GitHub to the Creator Store
Install / Use
/learn @Roblox/RbxassetREADME
rbxasset
Deploy rbxm files from GitHub to the Creator Store.
Installation
[!NOTE] Lute v0.1.0-nightly.20251217+ is required.
Prebuilt zip (recommended)
Download the latest release and unzip it where you will require it via a Luau script.
Manual
[!NOTE] Foreman v1.6.2+ is required.
Run the following commands to clone the repo, install dependencies, and build rbxasset.
git clone https://github.com/Roblox/rbxasset.git
cd rbxasset
foreman install
lute run install
lute run build
From there, drag and drop build/rbxasset to a place where you will require it via a Luau script.
Usage
Create an rbxasset.toml file in your project with the following content. Replace the environment configuration with values for the creator and experience to upload with.
[assets.default]
name = "Display Name"
model = "build.rbxm"
environment = "production"
description = "Longform project description"
icon = "img/icon.png"
[environments.production]
creatorId = 35175308
creatorType = "Group"
universeId = 7854970752
placeId = 119490202754966
This defines a default asset and a production environment to deploy to.
Then create a Luau script to handle the deployment:
-- scripts/publish.luau
local process = require("@std/process")
local rbxasset = require("./path/to/rbxasset")
local args = { ... }
local apiKey = args[1]
assert(apiKey, "argument #1 must be a valid Open Cloud API key")
-- The rbxm file needs to be built manually. rbxasset makes no assumptions about
-- how your project is setup, it only cares about having a file to upload. Note
-- the filename `build.rbxm` matches the `model` field in rbxasset.toml
process.system("rojo build -o build.rbxm")
-- Publish the `default` asset defined in rbxasset.toml
rbxasset.publishPackageAsync(process.cwd(), "default", apiKey)
$ lute run scripts/publish.luau <API_KEY>
Where <API_KEY> represents an Open Cloud API key that has the following scopes:
asset:readasset:write
Manifest format
This section details the various fields that can be supplied for assets and environments in rbxasset.toml
Assets
Assets define how the asset will be deployed and shown on the Creator Store.
| Field | Type | Description |
| ------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| name | string | The name of the asset on the Creator Store |
| model | string | Path to the rbxm to upload, relative to rbxasset.toml |
| environment | string | Defines which environment to deploy to. This value must equal one of the environments defined in the environments object |
| description | string? | The description of the asset on the Creator Store |
| icon | string? | Path to the icon (png only) to display on the Creator Store |
| type | "Package" \| "Plugin" | The type of asset to upload to the Creator Store. This must be set before the first publish as asset type is immutable once uploaded. Defaults to "Package" |
Environments
Environments define where an asset will be deployed to. Only one environment is required, but more can be added to setup production/staging deployments.
| Field | Type | Description |
| ------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------- |
| creatorId | number | The ID of the User or Group that will own the published assets |
| creatorType | "User" \| "Group | Either "User" or "Group". This is just to tell rbxasset how to interpret creatorId |
| universeId | number | The game.GameId of an experience that will be used for Luau Execution. The experience must be owned by the asset creator |
| placeId | number | The game.PlaceId of an experience that will be used for Luau Execution. The experience must be owned by the asset creator |
Contributing
We are not currently accepting community contributions. This may change in the future.
License
The contents of this repository are available under the MIT License. For full license text, see LICENSE.
Code of conduct
To maintain an open, welcoming, diverse, inclusive, and healthy community, this project enforces an adapted version of the Contributor Covenant. For more information, see CODE_OF_CONDUCT.md.
