Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/rojo-rbx/rojo/llms.txt

Use this file to discover all available pages before exploring further.

This guide walks you through creating a new Rojo place project, understanding the generated files, and syncing changes to Roblox Studio in real time. By the end you will have a working Rojo workflow on your machine.
You must have both the Rojo CLI and the Roblox Studio plugin installed before following this guide. See the installation guide if you haven’t set those up yet.

Create and serve your first project

1

Initialize a new place project

Create a new directory and initialize a Rojo place project inside it:
rojo init my-game
The init command defaults to the place kind. You can also pass --kind model or --kind plugin for libraries and Studio plugins respectively. Rojo also initializes a Git repository automatically if you have Git installed.
2

Explore the project structure

Change into the new directory and look at what was generated:
my-game/
├── default.project.json
├── src/
│   ├── client/
│   ├── server/
│   └── shared/
├── .gitignore
└── sourcemap.json (generated)
The key file is default.project.json. It defines how the filesystem maps to the Roblox instance tree:
{
  "name": "my-game",
  "tree": {
    "$className": "DataModel",
    "ReplicatedStorage": {
      "Shared": {
        "$path": "src/shared"
      }
    },
    "ServerScriptService": {
      "Server": {
        "$path": "src/server"
      }
    },
    "StarterPlayer": {
      "StarterPlayerScripts": {
        "Client": {
          "$path": "src/client"
        }
      }
    }
  }
}
The $path keys tell Rojo which filesystem directories map to which Roblox services. Files inside those directories become Script, LocalScript, or ModuleScript instances depending on their file name suffix (.server.luau, .client.luau, .luau).
3

Start the Rojo server

From inside the my-game directory, start the local development server:
rojo serve
You should see output confirming the server is listening:
Rojo server listening:
  Address: localhost
  Port:    34872

Visit http://localhost:34872/ in your browser for more information.
The default port is 34872. Leave this terminal running while you work.
4

Connect Roblox Studio

Open Roblox Studio and open any place. In the Plugins toolbar, find the Rojo plugin and click Connect. The plugin connects to localhost:34872 by default.Once connected, Studio’s instance tree updates to reflect your project structure. You should see ServerScriptService and StarterPlayer populated with the scripts from your src/ directory.
5

Make a change and watch it sync

Create a new file at src/server/Hello.server.luau in your editor with these contents:
print("Hello from Rojo!")
Save the file. Within a moment, a new Script named Hello appears under ServerScriptService/Server in Studio — no manual copy-paste required.
You can add new .luau files to the synced directories and they will appear in Studio automatically. Deleting a file removes the corresponding instance.

What to explore next

Project files

Learn how to customize your default.project.json to map more services and directories.

File sync rules

Control which file types Rojo recognizes and how they map to Roblox instances.

Build command

Compile your project into a .rbxl or .rbxm file for distribution or testing.

Syncback

Convert an existing Roblox place into a Rojo project structure.

Build docs developers (and LLMs) love