Open source · Windows Steam games on Apple Silicon

Silo

A native macOS launcher for your Windows Steam library — run games through Silo's own Wine, built from CrossOver's open sources, on Metal, with GPTK/D3DMetal or DXMT chosen per game and a real Steam client alongside so Steamworks and DRM just work.

Silo library window — a grid of nine installed games (Devil May Cry 5, Fatal Fury: City of the Wolves, Marvel's Spider-Man Remastered, Mortal Kombat 1, Resident Evil Requiem, Soulcalibur VI, Tekken 8, plus Batman Arkham Knight and God of War as non-Steam games), each with cover art, install size, a per-game graphics-backend badge (Automatic, GPTK, or DXMT) plus an MF badge on the games that run in the Media Foundation bottle, and a Play button
Automatic GPTK ⇄ DXMT Metal backend, chosen per game
One bottle Steam + all its games co-resident, so Steamworks works
Its own icon every game in the Dock, Mission Control and Stage Manager
Self-contained its own Wine, built from CrossOver's sources — no Homebrew

Built for the Mac

Your Windows Steam library, in a native launcher

Your real Steam library

Silo discovers the games installed in its Steam bottle and launches each one on its backend — co-resident with a logged-in Steam client, so Steamworks and DRM titles run. No emulator, no fakery.

Automatic Metal backend

Silo picks per game: GPTK / D3DMetal (Apple's) maps DirectX 10/11/12 to Metal; DXMT translates DirectX 10/11 directly — for 32-bit titles and when GPTK can't run a game. DirectX 9/8 and OpenGL use Wine's own renderer. Override per game anytime. No DXVK, no Homebrew.

Non-Steam games too

Add any Windows .exe — an installer or a portable build — and Silo provisions a dedicated, isolated Wine bottle for it, with the same Automatic graphics backend as Steam games and its own launch options. Run a Program… starts any installer or tool inside a game's bottle, and every bottle can move to an external drive anytime.

Its own Wine

Silo downloads a Wine built in this repo's CI from CrossOver's open (LGPL) sources, with CrossOver's GStreamer and the libav decoders that play in-game movies — SHA-256 verified. DXMT is built against it. Own CrossOver? Import its Wine from Settings instead.

Media Foundation bottle

Games whose cutscenes need Windows' Media Foundation run in a second Steam bottle with your own MF DLLs, switched per game, the Steam client following along. Save folders are shared between the two bottles, so progress never splits.

A real Mac window

Each game gets its own name and the icon from its executable in the Dock, Mission Control and Stage Manager — through a small host Silo writes itself, no CodeWeavers code. One tile per game, closing when the game does, leftover Wine processes cleaned up.

Shortcuts

Right-click any game → Create Shortcut for a double-clickable launcher with the game's icon, on the Desktop or in ~/Applications/Silo/, where macOS lists it with your other games. Bring your own icon with a PNG in Covers/.

Native and careful

SwiftUI in English and Italian, updating itself from GitHub Releases. It installs Rosetta when missing, waits for Steam to sign in before a game starts, surfaces a silent graphics fallback instead of a black window, and keeps the last five logs of every game.

How a launch works

One Steam bottle, backend chosen per game

Every Steam game launches co-resident with one logged-in client in a single shared bottle — so Steamworks and DRM work — with the graphics backend Silo picked (GPTK or DXMT) and its environment injected at launch. Non-Steam .exes each get their own isolated bottle instead.

Discover

Parse the shared bottle's appmanifest_*.acf for installed games, skipping Steam's redistributables.

Choose backend

Pick GPTK or DXMT for the game (32-bit → DXMT, else GPTK), or honor your per-game override; a silent GPTK failure switches an Automatic game to DXMT next time.

Link graphics

Overlay the chosen backend (GPTK/D3DMetal or DXMT) into the runtime's own lib/wine, forced builtin so nothing can shadow it.

Launch

Wait for Steam to sign in, then spawn the game detached — co-resident with its Steam client for Steam titles, or in its own bottle for non-Steam .exes — inside a per-game .app that gives it its name and icon.

What runs, and how

Modern DirectX on Metal, the rest on Wine

DirectX 12 GPTK · D3DMetal → Metal
DirectX 11 / 10 + DXGI GPTK · D3DMetal — or DXMT → Metal
DirectX 9 / 8 / DirectDraw Wine's wined3d → OpenGL
OpenGL Wine → macOS OpenGL
Vulkan (native) not supported

Silo chooses automatically: GPTK / D3DMetal by default, DXMT for 32-bit titles and as the fallback for DirectX 10/11 games GPTK's device creation can't run. Wine's own stack covers DirectX 9 and OpenGL. Override the backend per game whenever you want.

Get Silo

Install the current release

Silo 0.7.1 runs on macOS 15 or newer on Apple Silicon, outside the App Sandbox so it can drive Wine; it installs Rosetta itself if needed. You bring Apple's Game Porting Toolkit .dmg, and one Set up click does the rest. The app is ad-hoc signed, so the first launch needs the Gatekeeper step shown in the README.