CogentialandClaude Opus 5.5 94865cb34f Add any GitHub repo, Obtainium-style
Apps can now be added by repo (headset on-screen keyboard, pasted link, suggestions or the web page). The service
picks the ARM64 Linux download, unpacks zips/tarballs/AppImages/single programs, and either adds the app to the
Steam library with a generated run.sh and GitHub art, or runs the project's own install.sh. Adds update all,
per-app pre-release setting, remove (with uninstaller), and an edit panel on the web page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHDaz86aayqMULHsjByEmT
2026-10-07 12:25:59 -04:00
2026-10-07 12:25:59 -04:00
2026-10-07 12:25:59 -04:00
2026-10-07 12:25:59 -04:00
2026-10-07 12:25:59 -04:00

Port Manager for the Steam Frame

Installs and updates Steam Frame apps and ports straight from their GitHub releases, like Obtainium: add any repo, and Port Manager keeps it up to date. Works from the headset or a browser.

  • Add any GitHub repo by typing owner/name (or pasting a link) on the headset's on-screen keyboard, from the browser page, or by picking a suggestion made for the Frame. The built-in ports (Ship of Harkinian, 2 Ship 2 Harkinian) are there from the start.
  • Picks the right download: ARM64 Linux builds (aarch64/arm64, "steamframe"); checksums, Windows, macOS, Android and x86 files are passed over. You can choose another one when adding. Zips, tarballs (gz/xz/bz2/zst), AppImages and single programs all work.
  • Two ways to install, picked from the download unless you choose:
    • Library app: unpacked into ~/devkit-game/<name>, given a run.sh (its own, or one that starts the ARM64 program it finds), added to the Steam library with art (the repo's GitHub card and the owner's avatar).
    • Its installer: when the download has install.sh (or contrib/install.sh, setup.sh), it's unpacked into ~/.local/share/port-manager/apps/<id> and that script runs, for tools such as SteamVR overlays. Removing the app runs its uninstaller when it has one.
  • Install, update, update all, or pick any version. Pre-releases are skipped unless you turn them on for an app (they're on for apps that only have pre-releases).
  • Keeps your stuff: saves live outside the install folder, ROMs placed next to run.sh are carried over, and the previous install is kept for a one-step rollback.
  • Won't touch an app that's running. Only add apps you trust: their programs and installers run as your user.

Use it

  • In the headset: open Port Manager in the library. D-pad to choose, A open an app (install/update, versions, previous version, pre-releases, remove), Y add an app, Select update all, Start check for updates, B back/close.
  • From a phone or PC: http://<frame-ip>:8643 (add apps, edit name/install style/program, remove).

Updates are checked every 6 hours and on demand.

Files

  • catalog.json: the built-in ports.
  • suggestions.json: apps offered on the Add screen.
  • ~/.config/port-manager/catalog.json on the Frame: the apps you added and changes to built-in ones ({"id": "soh", "hidden": true} hides one; adding its repo again brings it back).
  • ~/.config/port-manager/installed.json: installed versions.

Private repos

GitHub only shows releases of private repos to signed-in users. Either make the port repos public (they contain no ROMs), or save a token in the web page's Settings: a fine-grained token limited to those repos with read-only Contents access is enough. It's stored in ~/.config/port-manager/config.json (mode 600) and never sent back to the page.

Install

From a computer that can SSH into the Frame:

app/build-arm64.sh       # cross-compiles the headset app into dist/app
./deploy.sh [host]       # host defaults to frame.local

Service only, on the Frame: copy this folder over and run sh install.sh. Uninstall: systemctl --user disable --now frame-port-manager.service and remove Port Manager from the library.

Notes

  • The service listens on port 8643 on your network. Set password in ~/.config/port-manager/config.json to require one in the browser (the headset app connects locally and doesn't need it).
  • Standard-library Python only. The headset app is C + SDL2 with the public-domain font8x8.
  • Testing on another architecture: PORT_MANAGER_EXEC_WRAPPER=qemu-aarch64-static (with QEMU_LD_PREFIX) runs ARM64 AppImages for unpacking; PORT_MANAGER_GAMES changes the install folder.
S
Description
GitHub pull mirror of Cogential/frametanium. GitHub repository ID: 1406190079.
https://github.com/Cogential/frametanium Readme
356 KiB
0 Stars 1 Watchers 0 Forks
2026-10-11 21:00:31 +02:00
Languages
Python 47.5%
C 34.2%
HTML 13.3%
Shell 5%