Repository navigation
Command Line
Everything the app does is available from the distiller command-line tool, which ships inside the app:
/Applications/Distiller.app/Contents/Helpers/distiller --helpTo type just distiller, link it onto your PATH, for example:
ln -s /Applications/Distiller.app/Contents/Helpers/distiller /usr/local/bin/distillerFrom a source checkout, use swift run distiller …. The app and the command line share the same library, bottles and settings, so a game installed in one appears in the other.
--help works on every command; the command-line reference lists them all. Commands that act on a game take its game ID, from distiller games.
Set DISTILLER_HOME to a folder to give the tool its own library and settings, away from your real ones (handy for experiments and scripts):
export DISTILLER_HOME=/tmp/distiller-testdistiller hw # this Mac: chip, GPU cores, memory, macOS, Rosetta (--json for JSON)
distiller setup # what's installed and what's missing
distiller setup install --all # install everything missing (Rosetta, Wine, winetricks, cabextract, DXMT, DXVK)
distiller components import-gptk ~/Downloads/<Game Porting Toolkit>.dmg # D3DMetal, from Apple's download
distiller storage show # where Wine builds and bottles are keptdistiller community refresh # download the latest catalogue
distiller community search "portal" # find a game and its recipes
distiller install recipe.yaml # install from a recipe file
distiller install recipe.yaml --file installer=~/Downloads/Setup.exe # supply a file the recipe asks for
distiller games # your library, with game IDs
distiller launch <game> # play, and wait for it to exitdistiller install prints every step before it starts and its progress as it goes. When a recipe needs you to download the installer from the publisher's page, it shows the page and asks for the path of the file you downloaded (or take it with --file <id>=<path>); the file is checked before it's used. Games used in place from another drive take --folder <id>=<path> and --link.
Trying something for one launch, without changing the recipe:
distiller launch <game> --diagnose # Wine logs DLL loads, exceptions and errors; Metal HUD on
distiller launch <game> --graphics dxvk # another graphics layer
distiller launch <game> --dll nvapi64=disabled # a DLL override (repeat for more)
distiller launch <game> --args "-dx11" # other program argumentsdistiller components # installed versions; "active" marks active ones
distiller components check # newer releases?
distiller components update # install them (except held components), then clean up
distiller components update wine-staging # just one
distiller components use wine-staging@11.21 # make a version active (holds the component)
distiller components clean --dry-run # what would be removed
distiller components updates auto # update mode: ask, auto or offPer game:
distiller games versions <game> # what it uses, and whether it follows updates
distiller games versions <game> --wine wine-staging@11.21 # stay on a version
distiller games versions <game> --wine follow --graphics follow # follow updates again
distiller games restore <game> # its restore point, if any
distiller games restore <game> --rollback # undo the move to a newer Wine
distiller games restore <game> --works # it works: remove the restore point
distiller games rebuild <game> # reinstall into a new bottle
distiller games rebuild <game> --keep # keep the rebuilt bottle (old one to the Trash)
distiller games rebuild <game> --switch-back # go back to the old bottledistiller launch and distiller recipe run-installer save a restore point and update the bottle first when a game is moving to a newer Wine, and say so.
distiller recipe inspect ~/Games/Example/Game.exe # what the program uses, and suggested settings
distiller recipe create --help # make a recipe from a folder, an installer or an empty bottle
distiller recipe programs <game> # Windows programs in the game's bottle
distiller recipe set-launch <game> <program> # choose the one to launch
distiller recipe edit <game> # path of the game's editable recipe.yaml
distiller recipe reload <game> # apply your edits
distiller recipe run-installer <game> ~/Downloads/Patch.exe # run another installer in the bottle (and add it to the recipe)
distiller recipe validate recipe.yaml # check a recipe file
distiller recipe resolve recipe.yaml # the settings it resolves to on this Mac
distiller recipe check-link <url> # does a download link work without the page?
distiller recipe check-signature Setup.exe # who signed an installerdistiller run <bottle> <program> runs any program (or Wine's own tools, such as winecfg or regedit) in a bottle; distiller bottles lists bottles.
distiller github login # sign in with a one-time code
distiller recipe community-check <game> # prove the recipe works from a clean start
distiller recipe submit <game> --tier gold --confirm # open the pull request (with a report)
distiller community report-link <game> --tier silver # a pre-filled report form for any gamedistiller storage show
distiller storage move --help # move Wine builds or bottles to another drive
distiller logs # how much the logs take
distiller logs clean
distiller logs set --help # how long and how much to keepdistiller assistant on # allow AI assistants to read your games (off by default)
distiller assistant setup claude-code # connection steps for an app (claude-desktop, chatgpt, lm-studio, ollama, other)
distiller assistant offYour AI app runs distiller mcp itself; you don't start it. See Troubleshooting.
distiller --version
distiller app check # a newer Distiller? (from the repository this copy was built from)
distiller app download # download it to ~/Downloads and check it (installing is done in the app)Distiller is open source under the MIT licence · Website · Releases · Report a problem. Game names, icons and screenshots belong to their publishers.
Getting started
Playing
Recipes
Keeping things working
Command line