Skip to content

RAOfflineProxy integration: service + launch-time RetroArch proxy routing#94

Draft
misantronic wants to merge 1 commit into
knulli-cfw:knulli-mainfrom
misantronic:raofflineproxy-integration
Draft

RAOfflineProxy integration: service + launch-time RetroArch proxy routing#94
misantronic wants to merge 1 commit into
knulli-cfw:knulli-mainfrom
misantronic:raofflineproxy-integration

Conversation

@misantronic

@misantronic misantronic commented Jul 14, 2026

Copy link
Copy Markdown

Draft for early feedback: system integration for RAOfflineProxy, an offline proxy for RetroAchievements (caches achievement data for offline play, queues casual unlocks, flushes on reconnect). Follows up on our earlier discussion about integrating it into Knulli.

What this adds

  • package/system/raofflineproxy: installs a service file to /usr/share/knulli/services/, giving an on/off toggle in ES → System Settings → Services (enable = autostart)
  • configgen (libretroConfig.py): at game launch, if the proxy is listening on 127.0.0.1 and not disabled via retroachievements.proxy, set cheevos_custom_host to it, keep achievements enabled while offline, and force hardcore off (the proxy is casual-only). Otherwise clear the override — stock behavior

No persistent config patching: routing is decided per launch. With the service disabled (default state does not change existing setups: the service only does something once the app is installed), everything behaves exactly as today.

Scope: RetroArch/libretro only

The proxy routing hooks into libretroConfig.py, so it applies to libretro cores only. Standalone emulators with their own RetroAchievements clients (PPSSPP, duckstation, ...) are not covered and behave as stock.

Companion PR + testing

Verified end to end on an RG40XX-H (h700): boot autostart, offline launches with cached achievements, casual unlock queue + flush, mid-game network loss, toggle on/off.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant