Skip to content

Your First Sync

Welcome to your first step with Tungsten. By the end of this guide, you will have your project configured, your authentication secure, and your first asset safely synced to your Roblox place.

Tungsten is designed to be “zero-config” where possible, but it needs to know where your assets live and which Roblox target (User or Group) you are syncing to.

Open your terminal, navigate to your project directory, and run:

tungsten init

Running init scanned your directory and generated a tungsten.toml configuration file. This file is the “brain” of your project.

Open your newly created tungsten.toml in your preferred code editor. You need to define your creator so Tungsten knows where your assets are going.

[creator]
# Set your User ID or Group ID here, and specify the type
type = "user"  # or "group"
id = 12345678

Tungsten requires an API key with Asset Write and Read permissions to function. You have three ways to provide this key, depending on your security preference:

Section titled “Option A: Environment Variable (Recommended for CI/CD)”

Set the variable globally in your system or terminal session:

export TUNGSTEN_GLOBAL_APIKEY="your-api-key-here"

Create a file named .env in your project root:

  • Directoryassets
    • …
  • tungsten.toml
  • .env
TUNGSTEN_API_KEY=your-api-key-here

If you want to use a key only for a specific run, pass it directly in your command:

tungsten sync cloud --api-key your-api-key-here

Now, place your assets in the folders defined in your inputs. For example, with the default config:

[inputs.assets]
path = "assets/**/*"
output_path = "src/Assets.luau"
type = "decal"

Drop your files in assets/:

  • Directoryassets/
    • play.png
    • monster.png
    • goog.svg

Tungsten will automatically pick up these files on the next sync. You can create a .tmeta file next to any asset later if you need custom names or descriptions, but for now the defaults will handle the heavy lifting.

Now that your config is set and your assets are ready, it’s time to push to the cloud.

Run the following command:

tungsten sync cloud

You should see Tungsten spring into action:

  1. It validates your tungsten.toml.
  2. It authenticates using your provided API key.
  3. It detects the new files in your assets/ folder.
  4. It uploads the assets and returns the asset IDs.

Congratulations! You have successfully synced your first assets. You can now use the returned IDs in your Roblox projects.