// OPENBOX DOCS
Import sources
Configure Steam, Heroic, Lutris, Gameyfin, ROM, and arcade imports.
OpenBoxGL imports installed libraries and local files from the sources you already run on Linux. Every importer adds only entries that are not already present, so re-running an import never duplicates. Missing manifests, binaries, or malformed output are reported and skipped according to the source importer.
Steam
- Manifests:
steamapps/appmanifest_*.acfin every Steam library folder (~/.local/share/Steam,~/.steam/steam, the Flatpak~/.var/app/com.valvesoftware.Steam/.local/share/Steam, plus any library listed insteamapps/libraryfolders.vdf). - Records: name, platform
PC, sourceSteam,steam_app_id, install dir, and a launch command that preferssteam -applaunch {app_id}, falls back toflatpak run com.valvesoftware.Steam -applaunch {app_id}, thenxdg-open steam://rungameid/{app_id}. - Prerequisite: one of
steam,flatpak, orxdg-openonPATH, else"Steam, Flatpak, or xdg-open is required to launch imported Steam games." POST /api/import/steamimports installed games; the storefront catalog also reads owned app ids fromuserdata/*/config/localconfig.vdf.
Heroic
- Manifests:
legendaryConfig/legendary/installed.json(Epic),gog_store/installed.json(GOG),nile_config/installed.json(Amazon) under~/.config/heroicor the Flatpak~/.var/app/com.heroicgameslauncher.hgl/config/heroic, plus the standalone~/.config/legendary/installed.json. - Records: source
Epic/GOG/Amazon,heroic_app_id, launchxdg-open heroic://launch/<runner>/{heroic_app_id}. - DLC records (
is_dlc) are skipped. - Prerequisite:
xdg-open, else"xdg-open is required to launch imported Heroic games." - The storefront catalog reads library caches (
store_cache/*.json,GamesConfig/legendary.json) to list owned-but-uninstalled titles.
Lutris
- Source:
lutris --list-games --installed --json(orflatpak run net.lutris.Lutris --list-games --installed --json), 30-second timeout. - Records: non-installed entries skipped; numeric
idrequired. Origin tagging from the service/source fields: Xbox/Game Pass ->Xbox, EA app/Origin ->EA, Ubisoft/uPlay ->Ubisoft, elseLutris. Platform defaults to the record platform, orWindowsfor wine/winesteam runners. Cover art is discovered from Lutris coverart folders when present. - Prerequisite:
lutrisorflatpak, else"Lutris or Flatpak is required to import Lutris games."Malformed JSON raises"Lutris returned an invalid game list."
Gameyfin
- Source: a self-hosted Gameyfin server configured in Settings (
gameyfin_url, optionalgameyfin_username/gameyfin_password,gameyfin_install_dir,gameyfin_provider). - Behavior: catalog import lists owned games with installed status; install downloads the game from the server into the install directory (staging, rollback, symlink rejection, 4 GiB per file cap) and marks the entry installed; uninstall removes only files under the install directory.
- The install directory is empty by default; the Settings field shows a
~/Games/Gameyfinplaceholder. Provider resolution falls back to the first provider the server offers, or the bundled Direct Download provider. - Connection and request failures surface as
400with the server's message.
ROM folders and executables
- Import Folder scans a folder recursively for supported extensions (see API content and imports for the full list) and adds each file, grouping multi-disc sets into an
.m3uand ranking duplicate ROMs (preferring USA/World releases over beta/proto/demo/hack tags, and larger CHD/CUE/M3U over archives). - Watch folders rescanned automatically every 10 seconds while the server runs.
- A
chosen_emulatorsmap can install emulators from Flathub during the wizard flow.
Arcade sets (MAME / FinalBurn Neo)
- Import:
POST /api/import/arcadewith a ROM folder and optionally a DAT/XML file. Without a DAT, MAME's ownmame -listxmloutput is used (mamemust be installed, 300 s timeout, 256 MiB cap). - Classification from the DAT (
cloneofand per-set ROMs compared to ZIP contents):parent,merged(clone runs from the parent archive),split(own archive missing parent ROMs),non-merged(complete own archive). - Launch command defaults to
mame -rompath <folder> {rom_name}orfbneo {path}; an explicitcommandoverrides. - The set type counts are returned so you can verify classification.
Loose arcade and console helpers
POST /api/import/loose-arcade:.zip/.7z/.singe/.romfiles, defaulting tohypseus/singecommands.POST /api/import/xbox360: folders withdefault.xex,.xex,.xbe; title from the parent folder fordefault.xex.POST /api/import/scummvm: games fromscummvm.inisections.POST /api/import/rpcs3: titles fromdev_hdd0/game/*/PARAM.SFO(PS3).POST /api/import/vita3k: titles fromux0/app/*/sce_sys/param.sfo(Vita), resolving title ids to readable names.
Import exclusions
Entries added via /api/import/exclusions block specific storefront titles from future imports and rescans, keyed by source + external id (Heroic entries can carry a three-part heroic key for store-specific exclusions).
Failure model
- Missing launchers, malformed manifests, and empty results never create partial entries: the importer raises a clear error (surfaced as
400) or skips the unusable record. foundcounts everything the source reported;addedcounts what the library did not already have. Storefront entries without local files are imported as owned-but-uninstalled (store_installed: false).
Related
- API content and imports for every import route
- Accounts and media for metadata providers
- Local services for Gameyfin, OBS, and save tools