Under the hood
The APIs / backends,
explained
Every GameHub-based app talks to a backend API for its catalog, its components (DXVK / VKD3D / Box64 / drivers), firmware, container presets and — for online features — Steam library & search. The big difference between these projects is which backend they trust. Here are the three in play.
What an "API" does here: it's the server that tells the app what components exist, where to download them, which firmware/container to use, and (for the original) handles your account & Steam library. Swap the backend and you change who you trust and what works offline — without changing the game-running engine itself.
GameHub API
by XiaoJi · the official backend
The original Chinese servers the stock app was built around. Serves the catalog, components, firmware and the Steam library — but also handles account login and carries the upstream telemetry.
- Catalog, components, firmware, Steam proxy
- Requires a XiaoJi account / login
- Region-gated & telemetry-carrying
- Closed source; can change or go down
EmuReady API
by Producdevity · GameHub Lite API
A fully static JSON API (a TypeScript build that generates ~16 endpoint files) that drops the account requirement and the Chinese servers for a clean component catalog. This is what GameHub Lite — the base BannerHub Lite is built on — talks to.
- Component manifests: Box64/FEX, drivers, DXVK, VKD3D, games, libraries, Steam
- Simulator endpoints: component/container lists, default component, firmware (imagefs),
executeScriptgeneric & Qualcomm presets - No login, no telemetry — static files
BannerHub API
by The412Banner · self-hosted
A static JSON API plus a Cloudflare Worker that fully replaces GameHub's Chinese servers. Every component downloads directly from GitHub Releases — no login, no Chinese servers, no third-party image CDNs. Powers all three BannerHub builds.
- Components straight from GitHub Releases — always up regardless of GameHub server status
- Worker proxies the few dynamic calls (Steam library, search) with real token injection + MD5 signature regeneration
- A companion worker auto-refreshes the GameHub token every 4 h (via Mail.tm OTP) so you never log in
- One backend serves both 5.3.5 (BannerHub + Lite) and 6.0.x (via a
/v6/path prefix)
Which build uses which backend
| Build | Default backend | Switchable? |
|---|---|---|
| Stock GameHub | GameHub API (XiaoJi) | — |
| GameHub Lite (base of BannerHub Lite) | EmuReady API (Producdevity) | — |
| BannerHub Lite | BannerHub API (since v1.0.1) | — |
| BannerHub | BannerHub API | ✓ 3-way selector: GameHub / EmuReady / BannerHub |
| BannerHub v6 | BannerHub API (/v6/ prefix) | — |
BannerHub (full) is the most flexible — it ships a Compatibility API Source selector so you can point it at the original GameHub API, the EmuReady API, or the BannerHub API.
How the BannerHub API is wired
App
└─ Cloudflare Worker
├─ GitHub Pages — static routes
│ (components, Wine config, firmware…)
└─ GameHub backend — proxied dynamic calls
(Steam library, search) with real
token + regenerated MD5 signature
Static endpoints are also browsable on GitHub Pages; the app points at the Worker. Source: bannerhub-api + token-refresh worker.
The honest part
The BannerHub API removes the Chinese servers for components and the login wall — but the handful of dynamic features (Steam library, search) are still proxied through to GameHub's own backend by the Worker, just with the token handled for you.
So you trust The412Banner + Cloudflare for the catalog instead of XiaoJi directly. That trade-off (and what still reaches the network) is laid out plainly on the privacy page.
Want the source?
Both community APIs are open. Read exactly what they serve.