Getting Started
This guide walks you from a clean machine to a full build-and-deploy pipeline.
Prerequisites
- .NET 10.0 SDK — required to install and run the global tool.
- A Godot project using the Mono/.NET flavor of Godot (MG-CLI installs the
monoengine builds and runsdotnet buildas part of exporting). giton yourPATH— used by thecommitanddiscord-hookcommands.- Platform tools as needed: nothing extra to pre-install for Steam or itch.io — MG-CLI can install SteamCMD and Butler for you.
Installation
Install from NuGet as a global tool:
dotnet tool install --global mg-cli
Update later with:
dotnet tool update --global mg-cli
Verify it is on your PATH:
mg-cli
Running mg-cli with no arguments prints the ASCII-art banner. Add --help to any command or command group to see its usage, e.g. mg-cli godot --help or mg-cli godot build --help.
Your first build
The example below assumes your Godot project lives at ./game and you want to build the export preset named Windows.
1. Install the Godot engine and export templates
mg-cli godot install 4.4.1
This downloads the Mono engine build and the matching export templates from the official Godot GitHub releases and installs them to the standard per-user location for your OS.
2. Bump the version (optional but recommended)
cd game
mg-cli godot version --bump
This updates config/version in project.godot to a fresh YYYY.MM.BUILD value. See Versioning for the details of the scheme.
3. Build an export preset
mg-cli godot build -p ./game -v 4.4.1 -r Windows
Before exporting, godot build runs a dotnet build to catch C# compile errors early, and imports the project if the .godot folder is missing. Build logs are written to builds/Logs/<preset>.log.
To choose presets interactively instead of naming one:
mg-cli godot build -p ./game -v 4.4.1 -i
Deploying
Once you have a build, deploy it to any of the supported targets.
Steam
# One-time: install SteamCMD
mg-cli steam setup
# Deploy using a VDF build script
mg-cli steam deploy -p ./game --vdf ./steam/app_build.vdf -u <user> -pw <password>
The current version is written into the VDF's Desc field automatically.
itch.io
# One-time: install Butler (you'll be prompted to log in)
mg-cli itchio setup
# Push a build
mg-cli itchio deploy ./game/builds/Windows my-studio/my-game:windows -p ./game
DigitalOcean (self-hosted server builds)
mg-cli digitalocean 203.0.113.10 ./deploy/master_server.service ./builds/master_server -n ./deploy/master_server.conf
Tag the release and announce it
# Stage all, commit with the version, tag v<version>, push to origin/main
mg-cli commit ./game
# Post a Discord embed with a changelog generated from git tags
mg-cli discord-hook -p ./game -h <webhook-url> -s <steam-url> -l <logo-url>
A complete pipeline
Chained together (in a shell, or as CI steps), a full pipeline reads naturally:
mg-cli godot install 4.4.1 \
&& mg-cli godot version --bump \
&& mg-cli godot build -p ./game -v 4.4.1 -r Windows \
&& mg-cli steam deploy -p ./game --vdf ./steam/app_build.vdf -u "$STEAM_USER" -pw "$STEAM_PASS" \
&& mg-cli commit ./game \
&& mg-cli discord-hook -p ./game -h "$DISCORD_HOOK" -s "$STEAM_URL" -l "$LOGO_URL"
Because each command returns a non-zero exit code on failure, the && chain stops at the first problem — you will never deploy a build that failed to export.
Next: see the Command Reference for every flag, or the Architecture to understand how the pieces are wired together.