ItchDeploy gives Unity teams one governed path from project to a build players can reach. itch.io authorization happens in the browser, Butler installs itself, and Editor-only code never ships inside the game.
Build. Deploy.
Without the busywork.
Local · GitHub Actions · Unity Build Automation
One window for Unity builds and itch.io deployment: locally through Butler, on GitHub runners, or in Unity Build Automation. The plugin checks its own dependencies and shows the next action you need.
01 · Product
Fewer manual steps. More confidence in the release.
An editor tool
Automation logic stays in the Editor assembly and never reaches the Player build.
Status instead of guesswork
Every screen states what is ready, what blocks the run, and the single next action.
One configuration
Platforms, channels and deployment modes stay in sync through .itchdeploy.json.
02 · Install
Installation with no hidden steps
Requires Unity 6.0 or newer. Download the release archive and copy a single folder; local profiles and keys are not part of the package.
- 01
Download the package
Take ItchDeploy.unitypackage from the GitHub Releases page and check it against the published checksum.
- 02
Import it
In Unity choose Assets → Import Package → Custom Package…, keep every entry selected, and press Import.
- 03
Wait for compilation
Unity imports self-contained Editor code with no required third-party packages. The command then appears in the Tools menu.
What the package contains
Production code only: Editor/, Runtime/ and the package metadata. Tests, Butler, deployment history, project profiles, backups and credentials are all excluded.
03 · Pipeline
One transparent release flow
Every stage has a legible result, so a build is easy to verify locally or reproduce on CI.
Validate
Scenes, profile, target platform and the required settings.
Build
Unity produces an isolated build with a controlled name and version.
Archive
Optionally keep a zip artifact stamped with a legible version and creation time.
Publish
Butler sends the validated build to the itch.io channel you chose.
04 · Quick start
Your first deployment in a few steps
There is no need to type an itch.io API key, username or slug. The plugin authorizes Butler in the browser and loads the games available to you.
- 01
Open ItchDeploy
Tools → ItchDeploy → Open ItchDeploy or Ctrl+Shift+D.
- 02
Sign in through the browser
Press the connect button. The plugin installs Butler, opens the official login and stores the authorization locally.
- 03
Pick the itch.io game
Choose an available project from the list. If it does not exist yet, open the new page form on itch.io.
- 04
Choose a deployment mode
Local Editor, GitHub Actions and Unity Automation are configured separately and can all be active at once.
● Butler ready ● itch.io authorization ready ● Deployment target studio/game ● Active platform WebGL → html5 # The primary button follows the current state: Build and upload - WebGL (HTML5)
05 · Deployment modes
Three pipelines, one configuration
These modes are not mutually exclusive. Local runs suit a manual release, GitHub Actions suits a Git-driven process, and Unity Automation suits Unity's cloud infrastructure.
Unity Editor + Butler
Builds the active platform on your machine and uploads the result to itch.io immediately.
- Fastest to start
- Works without GitHub
- Local archives and history
GitHub Actions
Generates a matrix workflow for the selected platforms, runs the tests and deploys successful builds.
- Push, manual or tag trigger
- Repository Secrets
- Release artifacts
Build Automation
Checks the package, Cloud Project, build target, the Butler post-build hook and the billing plan.
- Managed from one screen
- Automatic target and hook
- External blockers stated plainly
06 · Targets
Publish to the platform you need
Channels are set per platform. On GitHub Actions iOS produces an unsigned Xcode artifact; every other supported target can deploy through Butler.
Windows
Standalone x64 builds for desktop channels.
READYWebGL
HTML5 builds prepared for browser releases.
READYAndroid
APK for itch.io; a custom keystore is supported through CI secrets.
READYmacOS
Standalone app bundle with its own itch.io channel.
READYLinux
Standalone x64 build for the Linux channel.
READYiOS
Unsigned Xcode artifact; final signing is a separate step.
ARTIFACT ONLY07 · GitHub Actions
CI/CD generated for your project
The GitHub Actions screen finds the remote, checks the workflow and repository secrets, then leaves one primary button for the current step.
What the workflow does
Runs the EditMode tests, builds the platform matrix on the matching runners, and, when deployment is enabled, uploads the result through Butler. A tag v* creates a GitHub Release.
| Secret | When it is needed |
|---|---|
UNITY_LICENSE | Unity runner activation. |
UNITY_EMAIL, UNITY_PASSWORD | Unity account credentials for game-ci. |
UNITY_SERIAL | Only if your license type requires a serial. |
BUTLER_API_KEY | Deploying successful builds to itch.io. |
ANDROID_KEYSTORE_BASE64 | Android with a custom keystore only. |
ANDROID_KEYSTORE_PASS, ANDROID_KEYALIAS_NAME, ANDROID_KEYALIAS_PASS |
08 · Unity Build Automation
A cloud target, also in one action
The plugin installs the official package, checks the Unity Cloud project, creates or updates a build target for the active platform, syncs the post-build hook and reports the result.
[ 01 · CONNECT ]
Cloud Project
If the project is not linked, the primary button opens the exact place in Project Settings and explains what is required.
[ 02 · CONFIGURE ]
Target + Butler hook
The target gets a valid name, the active platform, source control, and a post-build script that deploys through Butler.
[ 03 · RUN ]
Build & deploy
Once the checks are green, the primary button starts the cloud build. Status refreshes automatically.
09 · CLI
The same pipeline in batch mode
The CLI delegates to the same BuildDeployer, so the local window and the automation cannot drift apart in behaviour.
$env:BUTLER_API_KEY = "***" Unity.exe -batchmode -quit -projectPath . ` -executeMethod ItchDeploy.Editor.ItchDeployCLI.Validate Unity.exe -batchmode -quit -projectPath . ` -executeMethod ItchDeploy.Editor.ItchDeployCLI.Deploy ` -itchTarget WebGL -itchChannel html5
10 · Configuration
What the plugin imports and exports
.itchdeploy.json at the repository root is the portable build and deploy configuration. It holds the itch.io target, the Unity version, the channels and the CI switches, and never an API key or password.
{
"itch_user": "studio",
"itch_game": "my-game",
"unity_version": "6000.0.62f1",
"default_target": "WebGL",
"default_channel": "html5",
"auto_deploy": true,
"webgl_compression": "brotli",
"channels": {
"StandaloneWindows64": "windows",
"WebGL": "html5",
"Android": "android"
},
"ci": {
"github_trigger": "push_main",
"github_deploy": true,
"unity_build_automation_deploy": true
}
}
11 · Quality gate
Checks that run before the expensive build step
Local runs and CI verify the same preconditions. The suite runs in full on every change, alongside a real multi-platform GitHub pipeline.
Verified on Unity 6
The tests cover configuration, workflow generation, platform rules, authorization, backup logic, UI state and integration guards.
12 · Troubleshooting
When the primary button does not deploy yet
The status colour matches the cause: green means ready, amber means an action or external condition is pending, red means a local error.
13 · Release
Releases
The production release line: a UI Toolkit window, browser authentication, itch.io project selection, three deployment modes, multi-platform CI, backups and built-in diagnostics.
[ PACKAGE ]
A clean archive
The ZIP holds only the plugin code and the documentation. A SHA-256 checksum is published next to it.
Download →[ SOURCE ]
MIT License
The code is on GitHub. Questions and reproducible bugs are welcome through Issues.
Open the repository →