ItchDeploy
ItchDeploy · Unity 6

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.

3
Pipeline modes
6
Target platforms
105
EditMode tests

01 · Product

Fewer manual steps. More confidence in the release.

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.

01

An editor tool

Automation logic stays in the Editor assembly and never reaches the Player build.

02

Status instead of guesswork

Every screen states what is ready, what blocks the run, and the single next action.

03

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.

  1. 01

    Download the package

    Take ItchDeploy.unitypackage from the GitHub Releases page and check it against the published checksum.

  2. 02

    Import it

    In Unity choose Assets → Import Package → Custom Package…, keep every entry selected, and press Import.

  3. 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.

Note: the supported location is exactly Assets/ItchDeploy. A Git UPM URL is not advertised yet, because some resources rely on stable Asset paths.

03 · Pipeline

One transparent release flow

Every stage has a legible result, so a build is easy to verify locally or reproduce on CI.

01 / VALIDATE

Validate

Scenes, profile, target platform and the required settings.

02 / BUILD

Build

Unity produces an isolated build with a controlled name and version.

03 / ARCHIVE

Archive

Optionally keep a zip artifact stamped with a legible version and creation time.

04 / DEPLOY

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.

  1. 01

    Open ItchDeploy

    Tools → ItchDeploy → Open ItchDeploy or Ctrl+Shift+D.

  2. 02

    Sign in through the browser

    Press the connect button. The plugin installs Butler, opens the official login and stores the authorization locally.

  3. 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.

  4. 04

    Choose a deployment mode

    Local Editor, GitHub Actions and Unity Automation are configured separately and can all be active at once.

Pipeline readiness
 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.

01 / LOCAL

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
02 / GITHUB

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
03 / UNITY CLOUD

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.

READY

WebGL

HTML5 builds prepared for browser releases.

READY

Android

APK for itch.io; a custom keystore is supported through CI secrets.

READY

macOS

Standalone app bundle with its own itch.io channel.

READY

Linux

Standalone x64 build for the Linux channel.

READY

iOS

Unsigned Xcode artifact; final signing is a separate step.

ARTIFACT ONLY

07 · 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 checks: the plugin uses GitHub CLI authorization, verifies that the secret names exist through the API, and never reads their values.
SecretWhen it is needed
UNITY_LICENSEUnity runner activation.
UNITY_EMAIL, UNITY_PASSWORDUnity account credentials for game-ci.
UNITY_SERIALOnly if your license type requires a serial.
BUTLER_API_KEYDeploying successful builds to itch.io.
ANDROID_KEYSTORE_BASE64Android with a custom keystore only.
ANDROID_KEYSTORE_PASS, ANDROID_KEYALIAS_NAME, ANDROID_KEYALIAS_PASS
iOS: the current workflow produces an unsigned Xcode artifact. Apple signing secrets are not required until you add a signing and export step yourself.

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.

External condition: Unity Build Automation requires an active consumption plan. If the organization is on Teams Basic or free and the API returns notOptedIn, ItchDeploy shows a billing blocker and an activation link instead of a misleading ready state.

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.

PowerShell · validate and deploy
$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
Security: the -itchApiKey argument is rejected on purpose, because command-line arguments are visible to other processes. Pass the key only through BUTLER_API_KEY.

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.

.itchdeploy.json
{
  "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
  }
}
Import applies this JSON to the window settings. Export writes the current non-secret settings back to the file, so the team and CI use the same values.

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.

170 / 170 PASS

Verified on Unity 6

The tests cover configuration, workflow generation, platform rules, authorization, backup logic, UI state and integration guards.

6
Build targets on CI
5
itch.io deploy channels
0
Unity Console errors
ZIP
Release manifest checked

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.

GitHub CLI is not authorized: press the sign-in button, finish the browser flow and return to Unity; the panel refreshes automatically.
WebGL: output must contain index.html. The compression dropdown applies immediately; there is no separate Save button.
Unity Automation HTTP 500 / notOptedIn: this is an organization billing-plan blocker. Activate the consumption plan through the link in the plugin, then run the check again.
Backup sharing violation: the backup folder is excluded from the walk, and the ZIP is written to a temporary file first and moved into place only after it succeeds.

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 →