Getting started
Install Lithos, wire up credentials, deploy the sample project, change it, and roll it back — all in under ten minutes.
By the end you will have the lithos binary on your PATH, a working
Roblox Open Cloud key and ROBLOSECURITY cookie, and a deployed dev
environment created from the
getting-started example (opens in a new tab).
Prerequisites
| Requirement | Notes |
|---|---|
| Git | Install it (opens in a new tab) if you do not have it. |
| A UTF-8 terminal | PowerShell, Windows Terminal, macOS Terminal, or any modern Linux terminal. Legacy cmd.exe will garble Lithos' box-drawing output. |
| A Roblox account | Lithos can only deploy to experiences your account owns. |
1. Install Lithos
Foreman (opens in a new tab) is the recommended path. It pins the Lithos version per repo and keeps local and CI machines aligned.
- Download
foreman-x.x.x-win64.zipfrom the Foreman releases (opens in a new tab) page and extractforeman.exesomewhere stable (e.g.C:\Programs\foreman\). - Add that folder and
%USERPROFILE%\.foreman\binto yourPATH. - Verify in a new PowerShell window:
foreman --version
Then clone the example repo and let Foreman install Lithos:
git clone https://github.com/siriuslatte/lithos
cd lithos/examples
foreman install
lithos --versionForeman reads the pinned version from examples/foreman.toml.
Prefer a direct binary? See Installation → Manually download from releases.
2. Authenticate
Lithos needs two credentials for almost every deploy:
| Variable | Purpose |
|---|---|
ROBLOSECURITY | Legacy Roblox APIs (place uploads, configurations, social links). |
LITHOS_OPEN_CLOUD_API_KEY | Open Cloud (asset uploads, place publishing). |
- Create an Open Cloud API key in the
Creator Hub (opens in a new tab) with
universe-places:write,asset:read, andasset:writescoped to the experiences you will manage. - If Roblox Studio is signed in on this machine, Lithos can usually read
ROBLOSECURITYfrom the OS keychain automatically. - Put both in a project-root
.envand add.envto.gitignore.
LITHOS_OPEN_CLOUD_API_KEY="…"
ROBLOSECURITY="…"Never commit .env. ROBLOSECURITY is the equivalent of your Roblox
password. See Authentication for full details.
3. Deploy
From examples/:
lithos deploy projects/getting-started --environment devA deploy shows which config and state file Lithos loaded, the plan it intends to apply, and the resulting Roblox URLs.
Loading project:
╷
│ Loaded config file projects/getting-started/lithos.yml
│ Selected provided environment configuration dev
│ No previous state for environment dev
│
╰─ SucceededOn a first deploy, the plan is all creates:
Deploying resources:
╷
│ + Creating: experience_singleton
│ + Creating: place_start
│ + Creating: placeFile_start
│ …
│
╰─ Succeeded with 6 create(s), 0 update(s), 0 delete(s), 0 noop(s), 0 skip(s)That summary line is usually the fastest signal in CI logs.
Target results:
╷
│ Experience: https://www.roblox.com/games/8667346609
│ Places:
│ start: https://www.roblox.com/games/8667346609
╰──○Open the link to launch the experience.
4. Make a change and re-deploy
Edit projects/getting-started/lithos.yml and change the place name:
target:
experience:
configuration:
genre: building
places:
start:
file: game.rbxlx
configuration:
name: Going to the moon with LithosRun deploy again:
lithos deploy projects/getting-started --environment devYou should get one update and the rest noops:
Succeeded with 0 create(s), 1 update(s), 0 delete(s), 5 noop(s), 0 skip(s)That is the core workflow: change config, rerun deploy, apply only the minimum diff. Lithos also recorded a checkpoint before the update.
5. Undo a bad deploy
lithos undo projects/getting-started --environment devundo imports live state, compares it to the last checkpoint, shows the
rollback plan, and applies it.
6. (Optional) clean up
lithos destroy projects/getting-started --environment devRoblox does not allow hard-deletes for most asset types, so destroy
archives the assets and removes them from Lithos state.