// OPENBOX DOCS

OpenBoxGL

A local-first game library and launcher for Linux.

OpenBox Game Launcher for Linux

One library for Steam, ROMs, and emulators.

OpenBoxGL brings mixed game collections into one searchable catalog. Keep library data on your machine, enrich it with artwork and metadata, then launch and track play from the same interface. No account, no cloud lock-in, no telemetry.

The OpenBox Web UI: filter rail on the left, cover grid in the center, and the selected game's detail pane on the right.
The Web UI: filter rail, cover grid, and game detail pane in one workspace.

Install OpenBoxGL Read the quick start

What OpenBoxGL is

OpenBoxGL is an open-source Linux game library manager and launcher. It works with the game files, storefront clients, emulators, and folders you already use. No OpenBox account is required, and the library is stored locally under your control.

The application ships as two interfaces over the same local data:

InterfaceEntry pointWhat it is for
Web UIpython3 web_app.py or openboxFull feature set, REST API, Big Box mode
Native UIpython3 openbox.py or openbox-nativeLightweight desktop window

When you start the Web UI, a local server starts on 127.0.0.1 and your browser opens to it. The server never listens on the network, and every request must carry a per-launch token, so the tab you open is the only client.

OpenBoxGL is independent from the Openbox window manager and from LaunchBox and Unbroken Software, LLC. Those names appear only to describe compatibility and comparison boundaries.

How it works

  1. Bring in your libraries. Import Steam, Heroic, Lutris, Gameyfin, ROM folders, arcade sets, executables, and emulator collections. Imports scan local manifests or folders and add only entries that are not already present, so re-running an import never duplicates.
  2. Organize and enrich them. Search, filter, tag, rate, group, edit metadata, download media, and build playlists. Metadata syncing and media downloads are optional and can be limited per import so large libraries stay responsive.
  3. Launch and track play. Use profiles and tokenized commands, then keep session history, saves, queue state, and backups together. Every launch records a session with duration and exit status, unless you disable session history in Settings.

What it does at a glance

Each area has its own guide. The cards below say what you will find there.

Why OpenBoxGL

OpenBoxGL exists because LaunchBox is a mature, feature-rich Windows library manager with no Linux build, and the Linux options that exist are usually storefront-specific (Steam, Heroic, Lutris) or emulator-specific (RetroArch, EmulationStation). None of them put a mixed collection — Steam games, GOG titles, ROMs, arcade sets, and standalone executables — into one searchable, art-rich, trackable catalog with a controller-friendly fullscreen mode.

Goal on LinuxHow OpenBoxGL meets it
One catalog for everythingSteam, Heroic, Lutris, Gameyfin, ROM folders, arcade DATs, ScummVM, RPCS3, Vita3K, and loose executables import into one library.
Rich metadata and artworkLaunchBox Games Database daily sync, IGDB search, Steam/GOG media, EmuMovies, and Bezel Project, with bulk media jobs and duplicate cleanup.
Real launch profilesTokenized commands ({path}, {rom_name}, {app_id}, …), per-game overrides, archive extraction, and dependency checks — no shell interpolation.
Controller-friendly fullscreenBig Box with Stage, Hybrid, and CoverFlow layouts, gamepad mapping, screensaver/attract mode, and gamescope guest support.
Protect your savesSave discovery across Steam Cloud, RetroArch, PCSX2, PPSSPP, RPCS3, Dolphin, and Cemu; versioned backups with restore guards; Ludusavi/Hoard hooks.
Track play honestlyPer-session history with duration and exit code, progress automation, and mounted-folder statistics sync across machines.
Automate locallyPlay queue, tags, notifications, and HMAC-signed webhooks — all local, no account.
No subscriptionEvery LaunchBox-Premium-equivalent workflow (custom fields, ESRB filters, list view, media packs, cloud statistics sync) ships free.

The full capability matrix, including what is intentionally not replicated on Linux, lives in the parity matrix.

Interfaces and data

The full-featured Web UI provides library management, REST API access, and Big Box mode. The lightweight native Tk UI is also available. Both use the same local library data and launch configuration, and writes are process-safe, so both interfaces can run against the same library.json.

The default data directory is ~/.local/share/openbox-game-launcher. Set OPENBOX_DATA_DIR before starting OpenBoxGL when the library should live elsewhere. The variable must be in the process environment at launch: the data directory is chosen at startup, before any .env file is read.

Inside the data directory, the library itself is library.json with a last-known-good .bak copy beside it. Writes are atomic, owner-only, and validated against a schema, so a crash or a bad edit cannot silently corrupt the library.

See Interfaces and data for the full layout of both interfaces and every file OpenBoxGL keeps in the data directory.

Integrations

OpenBoxGL fits around existing Linux tools. The documentation covers storefront imports, emulator profiles, RetroAchievements, IGDB, EmuMovies, Bezel Project, Gameyfin, OBS, MAME, Ludusavi, Hoard, mounted-folder sync, plugins, and signed webhooks.

Optional credentials can be supplied through the Settings dialog or through environment variables in a local .env file. See Accounts and media and Configuration.

Your data

OpenBoxGL writes library state atomically and keeps recovery files beside the primary state. Credentials and session tokens are local configuration. API examples use placeholders such as TOKEN, GAME_ID, and /path/to/game.

  • The Web UI token is generated per launch, written to server.token in the data directory, and deleted when the server stops. Prefer the X-OpenBox-Token header over a token query parameter in your own requests; query strings can end up in browser history and logs.
  • The diagnostic log (openbox.log) rotates automatically and redacts tokens, passwords, and API keys. It can still contain game names and local file paths, so review it before sharing it.
  • Library backups are archives stored in the backups/ folder. Make one before major changes; see Library backups and Data and recovery.

Start here

New to OpenBoxGL? Follow Installation, then Getting started for a local-folder import and first launch. If the app is already installed, start with Library overview.

FAQ

Does OpenBoxGL include games or ROMs?

No. OpenBoxGL does not distribute games, ROMs, BIOS files, firmware, or DRM circumvention tools. You supply the files; OpenBoxGL catalogs, launches, and tracks them.

Does it require an online account?

No OpenBox account is required. Optional integrations may have their own accounts, credentials, API terms, and rate limits. RetroAchievements and EmuMovies use your existing accounts, and metadata syncing talks to the public LaunchBox Games Database with your consent.

What operating systems are supported?

OpenBoxGL targets Linux desktops, laptops, Steam Deck systems, and handheld PCs. Source installs require Python 3.10 or newer; the AppImage bundles its own Python runtime. The current requirements and package paths are listed in Installation.

Is my data sent anywhere?

No. Nothing leaves your machine unless you explicitly trigger an integration (a metadata sync, a media download, a webhook delivery). There is no telemetry, no crash reporting, and no OpenBox account. The server binds to loopback only.

Can I run it alongside Steam, Heroic, and Lutris?

Yes. OpenBoxGL reads their manifests and launches through them (steam -applaunch, heroic://, lutris:rungameid), so Steam Input, overlays, and client features keep working. It does not replace them.