A native game launcher built with Ryoku in mind, but not limited to it. One Go daemon owns the library, the store engines and the launch pipeline; its face is a React window that talks to the daemon over a loopback websocket. No Electron, no bundled browser runtime: the window is a system WebKitGTK page.
Be aware that hikari is being developed as a hobby project for my own fun and usage right now, any issues report on github. PRs much appreciated. i will put more effort in it once my exams are over.
- Follows Ryoku's palette, so the launcher stays in sync with the desktop.
- Drives the same engines Heroic uses — legendary (Epic), gogdl (GOG), nile (Amazon) — with isolated credentials, so Heroic and Hikari can coexist.
- Imports games Heroic already installed, read-only: Heroic's config tree is never written.
- Reads Steam libraries (native, Flatpak, Snap), read-only; Steam games launch only through Steam.
- Launches Windows games through umu/Proton or Wine, with a per-game prefix and the launch extras: DXVK/VKD3D/NVAPI, EAC/BattlEye runtimes, the EOS overlay, MangoHud, GameMode, gamescope and custom wrappers.
- Installs, updates, repairs and uninstalls through the stores' own engines.
- Cleans up OptiScaler (upscaling/frame generation) with GPU detection, verified downloads, backup of replaced DLLs and INI profiles.
- Adds your own games (local executables) with cover search and a native file picker.
- Mods games through the Amethyst Mod Manager's own backend: sign in to
Nexus in your browser (Amethyst's own login, shared with it), browse and
search its mods, see a profile's modlist, and install from the Nexus site
in priority order, pick a profile and deploy it, restore the game to
vanilla, install mod archives (FOMOD installers included), browsed files
or
nxm://downloads. Amethyst owns the mod state and Hikari never keeps a second copy of it. - Stores the library and pins locally; a UI store view shows what you own but have not installed.
- Keeps diagnostics the user can reach: a rotating daemon log, per-game last
launch output,
hikari logs,hikari report, and a Diagnostics panel in Settings.
- Linux; the window needs GTK3 and WebKitGTK 4.1 (
gtk3,webkit2gtk-4.1on Arch). - Go 1.27 to build from source; Go 1.27 plus Node 20 and npm to build the
window (
frontend/scripts/build-host.sh). - Store engines on
PATH:legendary,gogdl,nile(optional:cometfor GOG achievements). umu-launcherand/or Wine/Proton builds for Windows titles.- For the Mods page:
python3and an Amethyst Mod Manager install (hikari mods setupfetches the backend's Python packages into Hikari's own data directory; Amethyst itself is not bundled). 7z/7zzfor release archives (Proton, OptiScaler).
Download hikari-vX.Y.Z-x86_64.AppImage from
Releases, make it executable and
run it:
chmod +x hikari-vX.Y.Z-x86_64.AppImage
./hikari-vX.Y.Z-x86_64.AppImageThe AppImage carries the daemon, the CLI and the window, and it must stay in a
writable folder so it can update itself. A package built from
packaging/PKGBUILD installs the same three from source.
Or install the tarball into your home:
mkdir -p hikari && tar -xzf hikari-vX.Y.Z-x86_64.tar.gz -C hikari
./hikari/install.shOr build from a checkout:
scripts/install-user.shThis builds hikarid, hikari and the app launcher into ~/.local/bin,
deploys the UI, installs the icon and adds Hikari to your app launcher.
Launch it from the menu (or run hikari-app): it starts the daemon if needed
and opens the window; launching it again focuses nothing new, it reuses the
running instance.
A packaged install lives in packaging/ (PKGBUILD, desktop entry, systemd
user unit).
hikari status
hikari list --installed
hikari refresh
hikari launch epic <id> --dry-run # the exact command it would run
hikari launch epic <id>
hikari install epic <id> --path ~/Games/Hikari --follow
hikari update epic <id> --follow
hikari options epic <id> # engine launch options
hikari wines # discovered Wine/Proton builds
hikari wine install GE-Proton11-11 --follow
hikari settings epic <id> --set '{"show_mangohud": true}'
hikari auth login epic # prints the login URL, takes the code
hikari logs --lines 80 # daemon log (works with it stopped)
hikari logs --game epic <id> # last launch output
hikari report # paste-ready diagnostics bundleEvery command accepts --json. hikari --help lists the rest
(favorite, add-local, remove-local, repair, saves, stop, ...).
Hikari checks GitHub for newer releases. When one exists, an Update available: vX.Y.Z button appears in the sidebar above the library card. It downloads the release tarball, verifies its sha256, replaces the binaries and the UI, restarts the daemon and reopens the window; if the new daemon fails to start, the previous install is restored.
An AppImage updates the same way: it downloads the new AppImage next to the current one, verifies the checksum, swaps the file and reopens the window.
hikari update-check # current vs. latest release
hikari update-apply # the same update from the terminalReleases are built with scripts/release.sh 0.1.1 for the tarball and
scripts/build-appimage.sh 0.1.1 for the AppImage; both assets and their
.sha256 files go on the GitHub release. The default repository is
dodo986/hikari; set
HIKARI_UPDATE_REPO=owner/repo for a fork. Installs that live in a
read-only prefix (/usr) refuse in-place updates and point at the package
manager.
| Path | Contents |
|---|---|
~/.config/hikari/settings.toml |
global settings (engines, defaults, artwork key) |
~/.local/share/hikari/ |
library state, local games, engine configs, downloaded tools, hikarid.log |
~/.cache/hikari/ |
artwork cache |
$XDG_RUNTIME_DIR/hikari.sock |
JSON-RPC endpoint (owner-only) |
The daemon is the only writer; the CLI and UI are clients.
go build ./...
GOPROXY=off go test ./... # offline; the module is vendored
go vet ./...
scripts/test-ui.sh # offscreen QML hit-tests for the popout
scripts/dev.sh # demo daemon + UI, nothing real touchedGPL-3.0-or-later. See LICENSE; NOTICE credits the projects whose
behaviour Hikari mirrors (Heroic Games Launcher, Ryoku, OptiScaler).
LLM(s) were used for optimization, bug fixes, code cleanup, improvement, distribution etc. the project itself is not vibecoded, it has my own code, improvments and effort in it, + i've reviewed every ai line and quality-checked it.

