How to Use itch Butler in the App - First GUI Upload Evening 2026

If you are searching itch butler, you may not want another CLI wall of user/game:channel. You want a Monday path: open the itch desktop app, use the Upload sidebar, push a folder or zip to a named channel, preview the patch, and decide keep or hold before players download the wrong build.
On May 18, 2026, itch.io announced that pushing builds with butler is now in the itch app—a friendly GUI that wraps the same patching pipeline as the command line, without requiring a terminal.Official update The butler manual now points creators who prefer GUI to the app (v26.12.0 or later) for uploads, change previews, and build management.Butler intro Installing butler
Who this is for: beginners who never ran butler push, creators shipping jam builds, and indie leads who want a human-owned upload ritual before CI automation.
Time: 60–120 minutes for a first GUI push on a throwaway or beta channel.
Honest limit: the GUI is for interactive pushes. Headless CI, API keys in GitHub Actions, and scripted multi-channel matrices still belong on the CLI—use the ninety-minute Butler + store QA pass when you need terminal discipline and store-page truth tables.
Non-repetition: This is not the terminal-first QA checklist. It is not the Sale Explorer / Bundle Hosting / Patreon changelog. It is not the itch–Steam dual depot dress rehearsal. Same storefront family—different job.
Why this matters now
- Butler stopped being “terminal only.” Official docs and the May update make the Upload tab a first-class path for creators who were stuck uploading giant browser zips or avoiding patches entirely.Announcement
- Upload season is continuous. July 2026 Sale Explorer and bundle tooling keep itch discovery busy; dual Steam+itch teams still need clean channels before October peaks.Sale Explorer playbook
- SERP is announcement-heavy. The update explains the Builds page; it does not ship an indie I1–I6 keep/hold with channel map, patch-preview traps, multi-profile auth, and explicit handoff to CLI/CI. That gap is this URL.
Parent demand stays enormous under itch.io organic search (Semrush-class snapshots put organic traffic in the multi-million range). The desktop app itself sits at thousands of GitHub stars—the same binary that now ships the Upload UI.
What the GUI is (and is not)
| Surface | What it does | Use tonight? |
|---|---|---|
| itch app Upload / Builds | List builds, push dialog, patch preview, live progress, profile credentials | Yes — start here |
| Standalone butler CLI | butler push, push-preview, CI keys, ignore flags, scripted channels |
When automating or debugging |
| Browser “Upload files” on Edit game | Classic full-file upload without Wharf patching | Hold for tiny one-shots; prefer butler for updates |
| Restricted / hidden uploads | QA and press channels not on the public page | Yes — with a written map |
Butler still works the same underneath: first push sends the build; later pushes send patches (what changed). Players on the itch app download patches instead of whole games when possible.Announcement Pushing builds
Prerequisites
- [ ] itch.io account that can edit the target project.
- [ ] itch desktop app v26.12.0 or later (Preferences → check for updates if Upload is missing).Announcement
- [ ] A smoke-tested Windows/macOS/Linux folder or zip—not “the build we probably made yesterday.”
- [ ] Written channel map (example:
windowspublic,windows-betahidden/QA). - [ ] Named session owner who will file the receipt.
- [ ] Optional: second clean machine or fresh download folder for the post-push install smoke.
If Upload is missing, you are on an old app build—update first; do not “fix” it by pasting CLI you do not understand yet.
Beginner path - first GUI push in one evening
Step 1 - Update the app and open Upload
- Launch the itch app and sign in.
- Confirm version ≥ 26.12.0.
- Open the Upload entry in the sidebar → Builds page.
You should see rows for builds on projects you can edit: project, channel, version, status, size, pushed time. Filter by Live / Processing / Failed; search by project, channel, or version.Announcement
Step 2 - Freeze the artifact (10 minutes)
Write on a sticky note:
Version: 0.3.1
Git: abc1234
Folder/zip path:D:\Builds\MyGame-windows\
Channel tonight:windows-beta(not publicwindowsyet)
The GUI cannot save you from pushing the wrong folder. That is still a human gate.
Step 3 - Push dialog - project, channel, source
Click Push new build:
- Pick the project.
- Choose a channel or type a new kebab-case name (
windows-beta,linux-arm64,macos-preview). - Optionally set a user version (your semantic version).
- Drop a folder or .zip.
- Use recent folders when you re-push the same export path often.
Channel names hint platform tags (win/windows, linux, mac/osx, android). You can fix tags later on Edit game—but starting clean avoids player confusion.Pushing builds
Step 4 - Run patch preview before you commit
Before the real push, generate the preview of what changed since the last build on that channel: new / modified / deleted / unchanged counts, sizes, and largest changed files.Announcement
Beginner checkpoint: if preview shows your entire Library/ or a gigabyte of .pdb files as NEW, hold. Fix the export folder. On CLI this is butler push-preview; the GUI is doing the same job with less typing.Push preview docs
Step 5 - Push and watch status
Start the push. Track phase (preparing, diffing, uploading, finishing), bytes, patch size, ETA. Expand the build row afterward to audit associated files, whether an optimized patch is still processing, and the copyable CLI command if you want to mirror the push later from a terminal.Announcement
Remember: default patch can go live while the backend still optimizes the patch (sometimes ~30 minutes on large games). Players are not blocked waiting for optimization.Pushing builds
Step 6 - Download your own build once
In a clean folder (or another profile), install/download the channel you just pushed. Launch once. If controls or README claim features the zip does not have, fix the page or the zip before you unhide.
Step 7 - Optional - copy the CLI twin
Expand the successful Builds row and copy the equivalent butler push command when the UI offers it. Paste it into your team notes. That is how a beginner GUI evening becomes a CI ticket tomorrow without reinventing the channel string.Announcement
Builds page - what each column is for
Treat the Builds list like a flight board, not a decoration.
| Column / detail | Why you care |
|---|---|
| Project | Confirms you did not push to the jam fork by mistake |
| Channel | Public vs beta vs press slot |
| Version / user version | Matches the sticky note from Step 2 |
| Status | Live vs Processing vs Failed |
| Size | Catch accidental 8 GB “indie” builds early |
| Pushed time | Correlate with Discord “is it up yet?” |
| Expanded files | Archive vs patch vs signature; see if optimized patch exists yet |
| Copied CLI | Handoff to automation |
Filter Failed every Friday. A silent Failed row is how press gets last week’s build while Slack thinks you shipped.
Export folders that survive a GUI push (Unity and Godot)
The Upload dialog does not magically exclude caches. Prepare a release directory the same way CI would.
Unity (Windows example)
- Push the player build folder (exe +
_Data/ IL2CPP siblings), not the entire Unity project. - Strip or never export
.pdbinto the folder you drop into the dialog. - Confirm x64 vs ARM matches the channel name story you tell players.
Godot 4
- Push the export preset output directory, including
.pck/.exe(or macOS.appbundle) as your preset defines. - Include GDExtension native libraries next to the binary when the preset requires them.
- Do not drop the whole
res://project tree into Upload “because it is easier.”
Zip vs folder
- Folder pushes are fine when the tree is already the player payload.
- A single
.zipinside an otherwise empty folder may be auto-unpacked by butler (CLI documents auto-unzip)—know whether you intend nested zip behavior before you blame “itch ate my archive.”Pushing builds
Browser upload vs GUI butler vs CLI - decide in thirty seconds
| Method | Patching | Best for | Worst for |
|---|---|---|---|
| Browser Upload files | No Wharf patch pipeline | Tiny one-off files, non-game assets | Frequent game updates |
| App Upload / Builds GUI | Yes | Humans, jam nights, learning channels | Headless CI matrices |
| butler CLI | Yes | CI, ignore patterns, scripted OS matrix | First-time creators allergic to terminals |
If you re-upload a 2 GB game through the browser every hotfix, you are burning your evening and your players’ bandwidth. Switch to GUI or CLI butler the same week you ship the second build.
Jam night playbook (90 minutes on the clock)
- T−90: Freeze artifact + channel map (
jam-windows, notwindowsif you might iterate). - T−70: App update check; open Upload; confirm profile.
- T−60: Push dialog + preview; fix folder if preview screams.
- T−40: Push; watch Live/Processing.
- T−25: Clean download smoke; fix README lies.
- T−10: Unhide or flip page visibility only if I1–I6 pass.
- T−0: Paste build id / user version into the jam submission form and your dual-Steam sheet if needed.
Do not invent a new channel name under panic. Panic invents final-final-2.
Developer path - channels, hidden builds, CI handoff
Channel map (write it once)
| Channel | Audience | Public? | Notes |
|---|---|---|---|
windows |
Players | Yes | Only after I1–I6 |
windows-beta |
QA / friends | Hidden or restricted | Nightly GUI pushes |
press |
Creators | Restricted URL | Never reuse as retail |
linux / macos |
Players | Yes | Separate OS exports |
kebab-case only. Do not invent Windows Final!!! as a channel name.
Hidden channels from the GUI
The app supports pushing new builds as hidden so they are not visible to end users immediately.Announcement CLI equivalent is butler push ... --hidden on first push to a new channel—later hidden patches on existing channels are not supported the same way; read the flag rules before you assume.Hidden pushes
Keep/hold: use hidden for brand-new QA channels. Do not treat --hidden as a general “secret patch” switch on busy public channels.
Multi-profile auth
The GUI pushes with the logged-in itch app profile. Switching profiles is how you manage studio vs personal accounts without juggling API keys in a shell.Announcement
Company rule: name which profile owns retail windows. Contractors get a QA profile that can only see beta projects.
When CLI / CI still wins
| Job | Prefer |
|---|---|
| First human learning push | GUI |
| Jam night single channel | GUI |
| GitHub Actions matrix (win/mac/linux) | CLI + API key |
--ignore '*.pdb' automation |
CLI |
| Store-page + zip truth table | Ninety-minute QA |
| Dual Steam + itch same version row | Dual depot dress rehearsal |
Expand a Builds row to copy the equivalent CLI command when you are ready to automate the same channel.Announcement
HTML5 / browser games caveat
Tagging a channel as HTML5 / playable in browser still needs Edit game settings after the first push, and the page type must be HTML—not only “downloadable.”Pushing builds Pair with browser demo scope discipline before you treat HTML5 as free marketing.
Size and processing honesty
Backend rejects builds whose total uncompressed size exceeds 30GB.Pushing builds If your “indie zip” is pathologically huge, fix Addressables/export settings before blaming the Upload tab.
Gates I1–I6 (GUI latch)
Latch itch_butler_gui_ok only when all six pass. Receipt example: itch_butler_gui_upload_receipt_v1.json.
| Gate | Pass if… |
|---|---|
| I1 App | itch app ≥ 26.12.0; Upload tab visible |
| I2 Artifact | Path matches smoke-tested export; version written down |
| I3 Channel | Channel matches written map; not accidental public retail |
| I4 Preview | Patch preview reviewed; no surprise multi-GB NEW trees |
| I5 Push | Build shows Live (or Processing with default patch acceptable); no Failed without triage |
| I6 Smoke | Clean download/launch once; store claims match binary |
If any gate fails, hold unhide / public channel promotion.
Example receipt
{
"receipt": "itch_butler_gui_upload_receipt_v1",
"project": "user/my-game",
"channel": "windows-beta",
"user_version": "0.3.1",
"app_version": "26.12.x",
"preview_ok": true,
"hidden_or_restricted": true,
"gates": { "I1": true, "I2": true, "I3": true, "I4": true, "I5": true, "I6": true },
"owner": "session-owner-name",
"notes": "GUI push only; retail windows channel held."
}
Failure modes and quick fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| No Upload tab | App < 26.12.0 | Update via Preferences |
| Push Failed | Auth / path / size | Expand row error; fix artifact; retry |
| Huge patch unexpectedly | Wrong folder / caches | Preview first; rebuild clean export |
| Players on old build | Wrong channel / cached page | Confirm channel tags; wait processing; clear client |
| “I pushed hidden but…” | Flag only for new channels | Read hidden rules; use restricted uploads for ongoing QA |
| CI still broken | GUI ≠ automation | Move matrix to CLI keys after I1–I6 human path works |
| Dual Steam mismatch | No shared version row | Dual depot rehearsal checklist |
Company / diligence notes
- Ownership: one person owns channel map; one person owns retail unhide.
- Cost/ROI: GUI reduces jam-night support tickets from “how do I install butler?”; CI still saves engineer hours at scale.
- Security: profile switch discipline; no shared personal login on a contractor laptop without a wipe policy.
- Audit: keep receipts with build IDs / user versions next to Steam build IDs when dual-shipping.
- Governance: forbid silent pushes to public
windowswithout I4 preview screenshots in the release thread.
How this fits a micro-studio week
Monday: I1–I6 on windows-beta only.
Tuesday: Fix store short text if smoke fails claims.
Wednesday: Promote to public windows after another preview.
Thursday: Copy CLI command into Actions for one OS.
Friday: Align itch user version with Steam build id in one spreadsheet row.
Common mistakes
- Pushing retail channel on night one — start beta/hidden.
- Skipping preview — that is how Library folders ship.
- Confusing browser upload with butler — no patch savings.
- Assuming Processing means broken — default patch may already be live.
- One channel for win+mac+linux mess — split OS channels unless you truly ship a universal payload.
- Ignoring the existing CLI QA checklist when CI arrives — GUI does not replace store-page truth.
- Treating HTML5 as automatically tagged — Edit game still required.
- No clean download smoke — you only tested the export folder on the build machine.
Key takeaways
- itch butler now ships a GUI in the itch app Upload / Builds tab (v26.12.0+).
- Same patching benefits as CLI—without requiring a terminal for human pushes.
- Always preview before push; treat surprise NEW trees as a hold.
- Use a written channel map; do not improvise retail names.
- Hidden helps new QA channels; know the flag limits.
- Multi-profile auth beats sharing one personal login.
- Latch
itch_butler_gui_okonly on I1–I6. - Hand off to CLI/CI when you need matrices, ignore patterns, or API keys.
- Pair with Butler ninety-minute QA for store-page + zip discipline.
- Keep discovery changes in view via Sale Explorer playbook.
FAQ
What is itch butler in the app?
The itch desktop app’s Upload / Builds UI that runs butler under the hood so you can push folders or zips to project channels, preview patches, and manage build status without a terminal.Announcement
Which itch app version do I need?
At least v26.12.0 for the Upload tab.Announcement
Is the GUI the same as butler push?
Same patching pipeline and credentials-of-the-logged-in-profile model; CLI still exposes flags (ignore, dereference, if-changed, dry-run) and CI auth the GUI is not trying to replace.Butler docs Pushing
Can beginners finish a safe first upload in one evening?
Yes if you push a beta/hidden channel, run preview, and smoke-download once. No if you aim to rewrite all CI and unhide retail the same night.
Should I still learn the CLI?
Yes before you automate. Use the GUI to learn channels and previews; use the ninety-minute QA pass when store copy and CI keys matter.
Why is my build stuck on Processing?
Backend optimized-patch generation can take a while on large builds; the default patch can already be live for players.Pushing builds
How do hidden uploads work in the GUI?
The app supports pushing as hidden so builds are not immediately player-visible; align with butler --hidden rules for new channels and unhide from Edit game when ready.Announcement Pushing
How do I know my channel tags are correct?
Channel names hint Windows/Linux/Mac/Android tags, but you can always adjust checkboxes on the Edit game page and save. Open the green channel button to inspect builds and status after a push.Pushing builds
What if preview shows almost everything as NEW?
You are comparing against an empty or unrelated previous build, or you pointed at a different folder than last time. Confirm channel name, confirm path, and only then push. First push to a brand-new channel reporting everything as NEW is normal.
Related reading
- itch.io Butler upload and store page ninety-minute QA pass
- itch.io Sale Explorer Bundle Hosting and Patreon - What Changed 2026
- Your first itch–Steam dual depot dress rehearsal
- itch pay-what-you-want vs Steam demo SKU economics
- Stop unscoped itch HTML5 “free marketing”