Skip to content

Sync Details

Azul mirrors the Studio hierarchy into your local syncDir (default: ./sync).

Use this page to understand how instance names, nesting, and script types map to files.

Single Script instance:

  • Studio: ServerScriptService.MyServerScript
  • Filesystem: sync/ServerScriptService/MyServerScript.server.luau

When a script has children, Azul creates a sibling folder with the script name.

  • Studio:

    📜 ParentScript
    - 📜 NestedScript
  • Filesystem:

    📜 ParentScript.server.luau
    📂 ParentScript/
    - 📜 NestedScript.server.luau

If you’re familiar with other popular Roblox sync tools, this may seem a bit unusual. Unlike the existing init.luau convention, this design allows Azul to support arbitrary nesting of scripts without losing 1:1 Studio-to-filesystem mapping.

For a more in-depth explanation of the reason behind this design choice, see this article.

Azul determines script class from filename suffix:

StudioFilesystem
Server Script*.server.luau
Local Script*.client.luau
Module ScriptNo suffix or *.module.luau

Azul treats Studio as the exclusive source of truth for Instance creation, deletion, and renaming.

Creating, deleting, or renaming instances in Studio will sync the changes to your local filesystem. However, doing the same with files in the local syncDir during an active session will not affect Studio.

The recommended workflow is to manage your instance hierarchy in Studio, and edit script contents in your editor.