Every Rojo project is described by aDocumentation 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.
.project.json or .project.jsonc file. This file tells Rojo how to map your filesystem to a Roblox instance tree, which ports to serve on, which place IDs to allow, and more. This page is the definitive reference for every field you can set in a project file.
.project.jsonc files support JavaScript-style single-line (//) and multi-line (/* */) comments, as well as trailing commas in objects and arrays. Use them freely for documentation inside your project files.Top-level fields
These fields sit at the root of the JSON object.The name of the top-level instance described by the project. When the file is named
default.project.json, this defaults to the name of the containing folder. For all other project files you must set this explicitly.The root instance and its descendants. See ProjectNode fields below.
The port that
rojo serve listens on when using this project. Overridden by the --port flag.The address that
rojo serve binds to. Override this to expose Rojo on a non-loopback interface.A set of Roblox place IDs that are permitted to sync with this project. When set, Rojo rejects connections from any place not in this list. Use this to prevent accidentally syncing into the wrong place.
A set of Roblox place IDs that are explicitly blocked from syncing with this project. Connections from these places are rejected even if
servePlaceIds is not set.The place ID of the current place. Sent to the Roblox Studio plugin when it connects so the plugin knows which place it is working with.
The universe (game) ID of the current place. Sent to the Roblox Studio plugin on connection.
When
true (the default), Rojo creates the classic Script and LocalScript instances for *.server.lua and *.client.lua files. Set to false to opt into the newer RunContext-based behavior where both produce a Script with the RunContext property set to Server or Client respectively.Glob patterns, relative to the project file’s folder, for files and directories that Rojo should ignore entirely. Useful for excluding test fixtures, generated files, or editor metadata.
Custom rules that map file glob patterns to snapshot middleware. Rules are checked before the built-in defaults, so you can override how any file type is handled. See Custom sync rules for full documentation.
Configuration for the
rojo syncback command, which writes changes from Roblox Studio back to the filesystem.ProjectNode fields
AProjectNode describes one Roblox instance and optionally its children. You define the tree as a ProjectNode object, and every named key that does not start with $ becomes a named child ProjectNode.
The Roblox class name for this instance (e.g.
"Folder", "ModuleScript", "RemoteEvent"). Required when $path is not set. Cannot be set to a non-Folder class when $path is also set.A path, relative to the project file, that this instance should come from. Rojo determines the class and content from the file or directory at that path.Use a plain string for a required path — Rojo will error if the file is missing:Use an object with an
"optional" key for a path that may not exist:A map of property names to values that are applied to the resulting instance. Values use the same unresolved value format as the reflection database — Rojo infers the type when possible, or you can supply an explicit type tag.
A map of attribute names to values set on the instance. Values follow the same format as
$properties.Controls what Rojo does during live sync when it encounters instances inside this node that are not present in the project.
true— leave unknown instances alone.false— destroy instances Rojo does not recognize.- Unset — defaults to
truewhen$pathis not set,falsewhen$pathis set.
An identifier for this instance used to resolve referent properties. Other nodes can reference this ID in property values that expect a
Ref.Any key that does not start with
$ is treated as a named child instance. Its value must be another ProjectNode object. This is how you build an instance hierarchy directly in the project file without corresponding filesystem paths.Complete examples
- Place project
- Library project
- Plugin project
A typical game place that roots everything in
src/ and applies a few top-level properties.default.project.json
