Roblox infra-as-code and deployment tool

Get Started
Declarative configuration

Describe the Roblox infrastructure you want and Mantle will take care of the rest.

Learn More
mantle.yml
environments:
  - label: dev
    targetNamePrefix: environmentLabel
  - label: prod
    targetAccess: public
 
target:
  experience:
    configuration:
      genre: building
    places:
      start:
        file: game.rbxlx
        configuration:
          name: Getting Started with Mantle
          description: |-
            Made with Mantle
Smart deployments

Mantle makes the minimum required changes to keep your deployments fast and stable.

Learn More
$ mantle deploy
Deploying resources:

~ Updating: placeConfiguration_start
  │    ╷
  │    │  Dependencies:
  │    │      - place:
  │    │          assetId: 8635420754
  │    │  Inputs:
  │    │      placeConfiguration:
  │    │    -   name: Getting Started with Mantle
  │    │    +   name: Going to the moon with Mantle
  │    │        description: Made with Mantle
  │    │        maxPlayerCount: 50
  │    │        allowCopying: false
  │    │        socialSlotType: Automatic
  │    │        customSocialSlotsCount: ~
  │    │  
  │    ╰─ Succeeded with outputs:
placeConfiguration


  ╰─ Succeeded with 0 create(s), 1 update(s), 0 delete(s), 5 noop(s), 0 skip(s)
Integrated with Roblox tooling

Mantle integrates with the best of the Roblox OSS community. Install with Foreman (opens in a new tab) and build with Rojo (opens in a new tab).

Learn More
foreman.toml
[tools]
mantle = { source = "blake-mealey/mantle", version = "0.11" }
Automate with continuous deployments

Mantle is designed for continuous deployment environments like GitHub Actions.

Learn More
.github/workflows/deploy.yml
name: Deploy
on: push
jobs:
  build-and-deploy:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Roblox/setup-foreman@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Build project
        run: rojo build --output game.rbxlx
      - name: Deploy project
        run: mantle deploy
        env:
          ROBLOSECURITY: ${{ secrets.ROBLOSECURITY }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}