Files
saphid--frame-control/ui/framey-compatibility.json
T

13576 lines
422 KiB
JSON

{
"schemaVersion": 1,
"checkedAtUtc": "2026-10-26T06:10:58.537029+00:00",
"source": "https://plugins.deckbrew.xyz/plugins",
"hostCommit": "779f9c5",
"method": "Exact SHA-256 verified archives. All frontends attempted in opaque-iframe Chromium for 1.2 s with backend calls and network denied; ready means initializer only. Backend calls were denied in the baseline browser audit. Scoped live backend follow-ups are recorded separately in docs/framey-compatibility.md.",
"plugins": [
{
"id": 1,
"name": "XR Gaming",
"version": "1.6.2",
"sha256": "b73c6b697b4f588b789d1d77be27e46512d4aa133df43128bbeafc48b1905892",
"tags": [
"ar",
"rayneo",
"rokid",
"root",
"tcl",
"viture",
"vr",
"xr",
"xreal"
],
"folder": "decky-XRGaming",
"archiveBytes": 5552163,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-XRGaming/main.py",
"decky-XRGaming/PyXRLinuxDriverIPC/__init__.py",
"decky-XRGaming/PyXRLinuxDriverIPC/xrdriveripc.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"DialogButtonPrimary",
"DialogButtonSecondary",
"DropdownItem",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SliderField",
"Spinner",
"TextField",
"ToggleField",
"definePlugin",
"gamepadDialogClasses",
"showModal",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"systemctl"
],
"sourceURLs": [
"https://github.com/Electronicks/JoyShockMapper",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/wheaney/XRLinuxDriver",
"https://github.com/wheaney/breezy-desktop",
"https://github.com/wheaney/decky-XRGaming",
"https://github.com/wheaney/decky-XRGaming.git"
],
"status": "na",
"reason": "Not supported on Frame: Requires supported external XR glasses and the Breezy/XRLinuxDriver stack; it does not target Steam Frame displays.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 1,
"name": "XR Gaming",
"ready": true,
"error": null,
"logs": [],
"methods": [
"retrieve_config",
"is_breezy_install_pending",
"retrieve_driver_state",
"retrieve_dont_show_again_keys"
]
},
"archiveValidation": {
"id": 1,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "Requires supported external XR glasses and the Breezy/XRLinuxDriver stack; it does not target Steam Frame displays.",
"uiSurfaces": [],
"fakeFrame": {
"id": 1,
"sha256": "b73c6b697b4f588b789d1d77be27e46512d4aa133df43128bbeafc48b1905892",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 7,
"name": "CSS Loader",
"version": "2.1.3",
"sha256": "99beaf1374af82408e6d056e0b0147e5fca544e1035fa7ab88419231697bc231",
"tags": [
"style"
],
"folder": "SDH-CssLoader",
"archiveBytes": 186133,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"SDH-CssLoader/main.py",
"SDH-CssLoader/css_browserhook.py",
"SDH-CssLoader/css_inject.py",
"SDH-CssLoader/css_loader.py",
"SDH-CssLoader/css_remoteinstall.py",
"SDH-CssLoader/css_server.py",
"SDH-CssLoader/css_sfp_compat.py",
"SDH-CssLoader/css_theme.py",
"SDH-CssLoader/css_themepatch.py",
"SDH-CssLoader/css_themepatchcomponent.py",
"SDH-CssLoader/css_utils.py",
"SDH-CssLoader/css_win_tray.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ColorPickerModal",
"ConfirmModal",
"DialogButton",
"DialogCheckbox",
"Dropdown",
"DropdownItem",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ScrollPanelGroup",
"SidebarNavigation",
"SliderField",
"Tabs",
"TextField",
"Toggle",
"ToggleField",
"classMap",
"definePlugin",
"findModuleChild",
"gamepadDialogClasses",
"gamepadSliderClasses",
"getGamepadNavigationTrees",
"replacePatch",
"showModal",
"staticClasses"
],
"globals": [
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/suchmememanyskill/SDH-CssLoader",
"https://github.com/suchmememanyskill/SDH-CssLoader.git"
],
"status": "partial",
"reason": "Panel initialization succeeds; CSS themes patch Steam UI and cannot theme the isolated VR shell.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 7,
"name": "CSS Loader",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
},
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
},
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
},
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
}
],
"methods": [
"get_themes",
"store_read",
"dummy_function",
"get_last_load_errors"
]
},
"archiveValidation": {
"id": 7,
"accepted": true,
"folder": "SDH-CssLoader"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 7,
"sha256": "99beaf1374af82408e6d056e0b0147e5fca544e1035fa7ab88419231697bc231",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 10,
"name": "vibrantDeck",
"version": "2.0.1",
"sha256": "272f6f3cd66c5d5c9b50ff46463ad509c8afc014633febd22046ff1aee52ee0f",
"tags": [
"saturation",
"vibrant"
],
"folder": "vibrantDeck",
"archiveBytes": 21813,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"vibrantDeck/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"Router",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/libvibrant/vibrantDeck",
"https://github.com/libvibrant/vibrantDeck.git"
],
"status": "na",
"reason": "Not supported on Frame: Changes X11 gamescope color properties, not the Frame SteamVR compositor.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 10,
"name": "vibrantDeck",
"ready": true,
"error": null,
"logs": [],
"methods": [
"set_vibrancy"
]
},
"archiveValidation": {
"id": 10,
"accepted": true,
"folder": "vibrantDeck"
},
"backend": "Python",
"hardware": "Changes X11 gamescope color properties, not the Frame SteamVR compositor.",
"uiSurfaces": [],
"fakeFrame": {
"id": 10,
"sha256": "272f6f3cd66c5d5c9b50ff46463ad509c8afc014633febd22046ff1aee52ee0f",
"archiveValidation": "accepted",
"result": "blocked",
"reason": "ValueError: Not supported on Frame: Changes X11 gamescope color properties, not the Frame SteamVR compositor."
}
},
{
"id": 11,
"name": "Fantastic",
"version": "0.5.1",
"sha256": "a70f291d2ba681fb6757c0c7e139d3fadd9a350cf3f755a9a1f668cae18b8b8a",
"tags": [
"fan-control",
"root",
"utility"
],
"folder": "Fantastic",
"archiveBytes": 1063187,
"api": "legacy",
"flags": [
"root",
"_debug",
"global-dfl"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Fantastic/main.py"
],
"native": [
{
"file": "Fantastic/bin/backend",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"Field",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/NGnius/Fantastic",
"https://github.com/NGnius/Fantastic.git",
"https://github.com/NGnius/usdpl-rs",
"https://github.com/SteamDeckHomebrew/decky-plugin-template"
],
"status": "na",
"reason": "Not supported on Frame: Targets Steam Deck fan hardware; no Frame fan-control mapping is provided.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 11,
"name": "Fantastic",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "CompileError: WebAssembly.instantiateStreaming(): Compiling or instantiating WebAssembly module violates the following Content Security policy directive because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: \"script-src 'self' 'unsafe-inline' blob:\"."
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'get_enable')"
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'get_interpolate')"
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'get_curve_x')"
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'get_temperature')"
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'get_fan_rpm')"
}
],
"methods": []
},
"archiveValidation": {
"id": 11,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: Fantastic/bin/backend"
},
"backend": "Python + native payload",
"hardware": "Targets Steam Deck fan hardware; no Frame fan-control mapping is provided.",
"nativePort": "Fan backend/driver is Deck-specific; an ARM64 rebuild would not provide compatible Frame hardware.",
"uiSurfaces": [
"QAM/global tabs"
],
"fakeFrame": {
"id": 11,
"sha256": "a70f291d2ba681fb6757c0c7e139d3fadd9a350cf3f755a9a1f668cae18b8b8a",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Fantastic/bin/backend",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 12,
"name": "MusicControl",
"version": "1.1.6",
"sha256": "246b89fd653c60a735b1cc401d1b0937d5cb969eea9024561661ff741f081d62",
"tags": [
"media",
"mpris",
"music"
],
"folder": "MusicControl",
"archiveBytes": 15751,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"MusicControl/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"Focusable",
"Menu",
"MenuItem",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"SliderField",
"SteamSpinner",
"definePlugin",
"showContextMenu",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/mirobouma/MusicControl",
"https://github.com/mirobouma/MusicControl.git"
],
"status": "partial",
"reason": "Legacy media controls initialize; player discovery and playback are unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 12,
"name": "MusicControl",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
},
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
}
],
"methods": [
"sp_list_media_players"
]
},
"archiveValidation": {
"id": 12,
"accepted": true,
"folder": "MusicControl"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes"
],
"fakeFrame": {
"id": 12,
"sha256": "246b89fd653c60a735b1cc401d1b0937d5cb969eea9024561661ff741f081d62",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 13,
"name": "Pause Games",
"version": "1.0.3",
"sha256": "4aefdfb0ef25dea9c6d9fd037731c8b99ee8a1be966c2f7d5b0602112ef29f62",
"tags": [
"pause",
"play",
"quick-resume",
"resume",
"sigcont",
"sigstop",
"sleep",
"stop",
"suspend"
],
"folder": "SDH-PauseGames",
"archiveBytes": 699197,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"SDH-PauseGames/main.py"
],
"native": [],
"steamClient": [
"Apps",
"Apps.RegisterForGameActionTaskChange",
"GameSessions.RegisterForAppLifetimeNotifications",
"System.RegisterForOnResumeFromSuspend",
"System.RegisterForOnSuspendRequest",
"System.UI.RegisterForFocusChangeEvents",
"System.UI.RegisterForSystemKeyEvents"
],
"dfl": [
"Button",
"Field",
"Focusable",
"Marquee",
"PanelSection",
"PanelSectionRow",
"Router",
"Toggle",
"ToggleField",
"beforePatch",
"sleep"
],
"globals": [
"Router",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/CryoByte33/steam-deck-utilities",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/checkpoint-restore/criu",
"https://github.com/popsUlfr/SDH-PauseGames",
"https://github.com/wynn1212/SDH-PauseGames",
"https://github.com/wynn1212/SDH-PauseGames.git"
],
"status": "partial",
"reason": "Settings and running-game list initialize in local Chromium with an explicit synthetic game; live Frame empty-list reads and lifetime registration/cleanup passed. Process pause/resume, automatic pausing and suspend integration remain unverified/unsupported; backend writes were denied.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 13,
"name": "Pause Games",
"ready": true,
"error": null,
"logs": [],
"methods": [
"load_settings"
]
},
"archiveValidation": {
"id": 13,
"accepted": true,
"folder": "SDH-PauseGames"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 13,
"sha256": "4aefdfb0ef25dea9c6d9fd037731c8b99ee8a1be966c2f7d5b0602112ef29f62",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 14,
"name": "ProtonDB Badges",
"version": "1.3.4",
"sha256": "90a3453ac02709cad64096e7539fd8141fa56f99ae3441fc24a4990dc9684358",
"tags": [
"protondb"
],
"folder": "protondb-decky",
"archiveBytes": 1008322,
"api": 2,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"protondb-decky/main.py",
"protondb-decky/settings.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"DropdownItem",
"Field",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ScrollPanel",
"ScrollPanelGroup",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"appDetailsHeaderClasses",
"createReactTreePatcher",
"definePlugin",
"findInReactTree",
"findModuleExport",
"showModal",
"staticClasses",
"useParams"
],
"globals": [
"SteamUIStore",
"appStore",
"routerHook",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/bschelst/protondb-decky",
"https://github.com/bschelst/protondb-decky.git",
"https://github.com/sponsors/bschelst"
],
"status": "partial",
"reason": "Settings render locally and read-only get_setting RPC returned the default through real Decky 3.3.0 on ARM64 Frame. Steam game-page badges have no patch target; live writes and VR controls unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 14,
"name": "ProtonDB Badges",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_setting"
]
},
"archiveValidation": {
"id": 14,
"accepted": true,
"folder": "protondb-decky"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 14,
"sha256": "90a3453ac02709cad64096e7539fd8141fa56f99ae3441fc24a4990dc9684358",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"realFrame": {
"id": 14,
"version": "1.3.4",
"sha256": "90a3453ac02709cad64096e7539fd8141fa56f99ae3441fc24a4990dc9684358",
"method": "get_setting",
"result": {
"result": "default"
},
"errors": [
"Transient CEF reconnect during Decky frontend injection; succeeded on retry."
]
}
},
{
"id": 16,
"name": "Audio Loader",
"version": "1.6.1",
"sha256": "fd5a090c2e2cd4da6723d7bd08937ab31b9f8d4663510431713da531343e303f",
"tags": [
"media",
"music",
"style"
],
"folder": "SDH-AudioLoader",
"archiveBytes": 127807,
"api": "legacy",
"flags": [
"_root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"SDH-AudioLoader/main.py",
"SDH-AudioLoader/audio_remoteinstall.py",
"SDH-AudioLoader/audio_utils.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications",
"d.ts"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Dropdown",
"DropdownItem",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"Tabs",
"TextField",
"ToggleField",
"afterPatch",
"beforePatch",
"definePlugin",
"findModuleChild",
"gamepadDialogClasses",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/EMERALD0874/SDH-AudioLoader",
"https://github.com/EMERALD0874/SDH-AudioLoader.git",
"https://github.com/SteamDeckHomebrew/decky-loader"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service. Steam UI sound lookup is present as explicitly unsupported; the frontend still requires Steam m_GamepadUIAudioStore.m_AudioPlaybackManager, which is unavailable in the isolated panel.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 16,
"name": "Audio Loader",
"ready": false,
"error": "Cannot read properties of undefined (reading 'm_AudioPlaybackManager')",
"logs": [
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
}
],
"methods": [
"store_read"
]
},
"archiveValidation": {
"id": 16,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 16,
"sha256": "fd5a090c2e2cd4da6723d7bd08937ab31b9f8d4663510431713da531343e303f",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service. Frontend audit failed: Cannot read properties of null (reading 'm_GamepadUIAudioStore')."
}
},
{
"id": 18,
"name": "Bluetooth",
"version": "3.1.1",
"sha256": "f07f7b74f31da15b5e3a8234a3f00faa01365b56b8f496aca7bb79120be7b8a5",
"tags": [
"bluetooth",
"utility"
],
"folder": "Bluetooth",
"archiveBytes": 1387251,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Bluetooth/main.py",
"Bluetooth/py_modules/jeepney/wrappers.py",
"Bluetooth/py_modules/jeepney/low_level.py",
"Bluetooth/py_modules/jeepney/fds.py",
"Bluetooth/py_modules/jeepney/bus_messages.py",
"Bluetooth/py_modules/jeepney/bus.py",
"Bluetooth/py_modules/jeepney/bindgen.py",
"Bluetooth/py_modules/jeepney/auth.py",
"Bluetooth/py_modules/jeepney/__init__.py",
"Bluetooth/py_modules/jeepney/tests/test_wrappers.py",
"Bluetooth/py_modules/jeepney/tests/test_low_level.py",
"Bluetooth/py_modules/jeepney/tests/test_fds.py",
"Bluetooth/py_modules/jeepney/tests/test_bus_messages.py",
"Bluetooth/py_modules/jeepney/tests/test_bus.py",
"Bluetooth/py_modules/jeepney/tests/test_bindgen.py",
"Bluetooth/py_modules/jeepney/tests/test_auth.py",
"Bluetooth/py_modules/jeepney/tests/__init__.py",
"Bluetooth/py_modules/jeepney/io/trio.py",
"Bluetooth/py_modules/jeepney/io/threading.py",
"Bluetooth/py_modules/jeepney/io/common.py",
"Bluetooth/py_modules/jeepney/io/blocking.py",
"Bluetooth/py_modules/jeepney/io/asyncio.py",
"Bluetooth/py_modules/jeepney/io/__init__.py",
"Bluetooth/py_modules/jeepney/io/tests/utils.py",
"Bluetooth/py_modules/jeepney/io/tests/test_trio.py",
"Bluetooth/py_modules/jeepney/io/tests/test_threading.py",
"Bluetooth/py_modules/jeepney/io/tests/test_blocking.py",
"Bluetooth/py_modules/jeepney/io/tests/test_asyncio.py",
"Bluetooth/py_modules/jeepney/io/tests/conftest.py",
"Bluetooth/py_modules/jeepney/io/tests/__init__.py"
],
"native": [],
"steamClient": [],
"dfl": [
"DialogButton",
"Field",
"Focusable",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [],
"hardwareSignals": [
"/sys/class/power_supply"
],
"sourceURLs": [
"https://github.com/Outpox/Bluetooth",
"https://github.com/Outpox/Bluetooth.git",
"https://github.com/pytest-dev/pytest-asyncio"
],
"status": "partial",
"reason": "Controls render with fixture replies; actual Bluetooth discovery, labels and connections remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 18,
"name": "Bluetooth",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[Bluetooth] !! get_bluetooth_status \u2192 Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[Bluetooth] !! get_paired_devices_with_info \u2192 Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Error: All retries failed. Last error: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_bluetooth_status",
"get_paired_devices_with_info"
]
},
"archiveValidation": {
"id": 18,
"accepted": true,
"folder": "Bluetooth"
},
"backend": "Python",
"hardware": "/sys/class/power_supply",
"uiSurfaces": [],
"fakeFrame": {
"id": 18,
"sha256": "f07f7b74f31da15b5e3a8234a3f00faa01365b56b8f496aca7bb79120be7b8a5",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 19,
"name": "Notebook",
"version": "0.1.5",
"sha256": "c35b09de4bba4b4157fbe84cb7b0d20fc3924f78fa3c48ae17686b4314c1cc0c",
"tags": [
"draw",
"drawings",
"notebook",
"notes",
"scribble",
"write"
],
"folder": "SDH-Notebook",
"archiveBytes": 134532,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"SDH-Notebook/main.py"
],
"native": [],
"steamClient": [
"System.UI.RegisterForFocusChangeEvents"
],
"dfl": [
"DialogButton",
"Dropdown",
"Marquee",
"PanelSection",
"PanelSectionRow",
"Router",
"definePlugin",
"staticClasses"
],
"globals": [
"Router",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/popsUlfr/SDH-Notebook",
"https://github.com/popsUlfr/SDH-Notebook.git"
],
"status": "works",
"reason": "Default notebook drawing, save and reopen verified in Chromium with real Decky 3.3.0 ARM64, including backend restart. Running-game context is now supplied; per-game selection was attempted with a synthetic game and backend calls denied. Real per-game selection, background artwork and worn-VR input remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 19,
"name": "Notebook",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "No stroke found!"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"listPages",
"loadLastSelectedPage",
"loadPage"
]
},
"archiveValidation": {
"id": 19,
"accepted": true,
"folder": "SDH-Notebook"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 19,
"sha256": "c35b09de4bba4b4157fbe84cb7b0d20fc3924f78fa3c48ae17686b4314c1cc0c",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"realFrame": {
"evidence": "docs/evidence/framey-events-backend-2026-10-26.json",
"checks": {
"pointerStrokeSaved": true,
"sameStrokeLoadedAfterBackendRestart": true,
"defaultAppId": 0,
"existingNotesTouched": false
},
"method": "local Chromium + real Frame SSH; private actual Decky 3.3.0 ARM64 service"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 21,
"name": "PowerTools",
"version": "2.0.3",
"sha256": "47614f53b8c538c4caa15f89a01e4ab106fa328e89f78545bacb3166d104d964",
"tags": [
"power-management",
"root",
"utility"
],
"folder": "PowerTools",
"archiveBytes": 4327155,
"api": "legacy",
"flags": [
"root",
"global-dfl"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"PowerTools/main.py",
"PowerTools/translations/build.py"
],
"native": [
{
"file": "PowerTools/bin/libryzenadj.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "PowerTools/bin/ryzenadj",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "PowerTools/bin/backend",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Apps.RegisterForGameActionEnd",
"Apps.RegisterForGameActionStart",
"GameSessions.RegisterForAppLifetimeNotifications",
"User.GetLoginUsers",
"User.RegisterForCurrentUserChanges"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Dropdown",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"QuickAccessTab",
"Router",
"SliderField",
"Spinner",
"TextField",
"ToggleField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"appStore",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/NGnius/PowerTools",
"https://github.com/SteamDeckHomebrew/decky-loader"
],
"status": "na",
"reason": "Not supported on Frame: Targets AMD Ryzen power controls; Frame uses an ARM64 SoC.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 21,
"name": "PowerTools",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:"
},
{
"kind": "rejection",
"message": "CompileError: WebAssembly.instantiate(): Compiling or instantiating WebAssembly module violates the following Content Security policy directive because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: \"script-src 'self' 'unsafe-inline' blob:\"."
}
],
"methods": []
},
"archiveValidation": {
"id": 21,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: PowerTools/bin/libryzenadj.so"
},
"backend": "Python + native payload",
"hardware": "Targets AMD Ryzen power controls; Frame uses an ARM64 SoC.",
"nativePort": "RyzenAdj and AMD power backend cannot control an ARM64 Frame SoC.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam stores"
],
"fakeFrame": {
"id": 21,
"sha256": "47614f53b8c538c4caa15f89a01e4ab106fa328e89f78545bacb3166d104d964",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: PowerTools/bin/libryzenadj.so",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 22,
"name": "Memory Deck",
"version": "0.1.8",
"sha256": "69f4707c2a0580f64df260fbd3de205e068a825b620769038c7bdaec516c104e",
"tags": [
"cheats",
"memory",
"scanmem"
],
"folder": "memory-deck",
"archiveBytes": 241603,
"api": "legacy",
"flags": [
"debug",
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"memory-deck/main.py",
"memory-deck/scanmem.py"
],
"native": [
{
"file": "memory-deck/bin/libscanmem.so.1.0.0",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"DropdownItem",
"Focusable",
"PanelSection",
"PanelSectionRow",
"Router",
"SteamSpinner",
"definePlugin",
"gamepadDialogClasses",
"joinClassNames",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [
"gamescope"
],
"sourceURLs": [
"https://github.com/CameronRedmore/memory-deck",
"https://github.com/CameronRedmore/memory-deck.git",
"https://github.com/HeyItsWaters/memory-deck",
"https://github.com/SteamDeckHomebrew/decky-loader"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 22,
"name": "Memory Deck",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_processes",
"get_attached_process"
]
},
"archiveValidation": {
"id": 22,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0"
},
"backend": "Python + native payload",
"hardware": "gamescope",
"nativePort": "libscanmem must be rebuilt for aarch64 and validated against target process architecture; memory writes were not tested.",
"uiSurfaces": [
"local/Steam routes",
"Steam stores"
],
"fakeFrame": {
"id": 22,
"sha256": "69f4707c2a0580f64df260fbd3de205e068a825b620769038c7bdaec516c104e",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: memory-deck/bin/libscanmem.so.1.0.0."
}
},
{
"id": 23,
"name": "Animation Changer",
"version": "1.3.2",
"sha256": "f2c62b90ca60d8a80b6d0f75d8027552b1509c7a05842c6f4a24a9072846d133",
"tags": [
"boot-animation",
"utility"
],
"folder": "SDH-AnimationChanger",
"archiveBytes": 52224,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"SDH-AnimationChanger/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"Dropdown",
"DropdownItem",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"Spinner",
"Tabs",
"TextField",
"ToggleField",
"definePlugin",
"findModule",
"findSP",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/TheLogicMaster/SDH-AnimationChanger",
"https://github.com/TheLogicMaster/SDH-AnimationChanger.git",
"https://github.com/suchmememanyskill/SDH-CssLoader"
],
"status": "partial",
"reason": "Initializer succeeds; forced backend failure prevents loading animations. Boot-video changes untested.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 23,
"name": "Animation Changer",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'map')"
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'map')"
}
],
"methods": [
"getState"
]
},
"archiveValidation": {
"id": 23,
"accepted": true,
"folder": "SDH-AnimationChanger"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 23,
"sha256": "f2c62b90ca60d8a80b6d0f75d8027552b1509c7a05842c6f4a24a9072846d133",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 24,
"name": "RadiYo!",
"version": "1.3",
"sha256": "647111578aa7a5ecd16af8d7fe6c068a6d7ea8737c6dce5ac2d52e84a549ec43",
"tags": [
"media",
"music",
"radio"
],
"folder": "radiyo-steam-deck",
"archiveBytes": 33686,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"radiyo-steam-deck/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ConfirmModal",
"DialogButton",
"Dropdown",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"QuickAccessTab",
"Router",
"SliderField",
"Spinner",
"TextField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/isiah-lloyd/RadiYo",
"https://github.com/isiah-lloyd/radiyo-steam-deck"
],
"status": "partial",
"reason": "Initializer succeeds; radio discovery and playback remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 24,
"name": "RadiYo!",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "error while fetching http://api.dar.fm/topsongs.php?callback=json&page_size=10&q=Music&partner_token=7090975725"
}
],
"methods": [
"fetch"
]
},
"archiveValidation": {
"id": 24,
"accepted": true,
"folder": "radiyo-steam-deck"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 24,
"sha256": "647111578aa7a5ecd16af8d7fe6c068a6d7ea8737c6dce5ac2d52e84a549ec43",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 26,
"name": "HLTB for Deck",
"version": "2.0.12",
"sha256": "bd54a23b0b8ec0798aa590e5be236522a593529d7680e77fb888e2971bf3d558",
"tags": [
"backlog",
"how long to beat",
"utility"
],
"folder": "hltb-for-deck",
"archiveBytes": 538045,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButtonPrimary",
"DropdownItem",
"MenuItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SliderField",
"SteamSpinner",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"appDetailsHeaderClasses",
"createReactTreePatcher",
"definePlugin",
"fakeRenderComponent",
"findInReactTree",
"findInTree",
"findModuleChild",
"removeHookStubs",
"staticClasses"
],
"globals": [
"routerHook"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/morwy/hltb-for-deck"
],
"status": "partial",
"reason": "Settings render without the prior IndexedDB SecurityError; Steam library badges have no patch target, and live lookup is unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 26,
"name": "HLTB for Deck",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "HLTB - LibraryContextMenu component not found"
}
],
"methods": []
},
"archiveValidation": {
"id": 26,
"accepted": true,
"folder": "hltb-for-deck"
},
"backend": "no Python/native backend found",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 26,
"sha256": "bd54a23b0b8ec0798aa590e5be236522a593529d7680e77fb888e2971bf3d558",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 27,
"name": "AutoSuspend",
"version": "2.2.0",
"sha256": "20ceb9aa5327226326531d947e4a7a5318ba78b73f503266996a81877cffa536",
"tags": [
"battery",
"power-management",
"suspend",
"utility"
],
"folder": "decky-autosuspend",
"archiveBytes": 30982,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-autosuspend/main.py"
],
"native": [],
"steamClient": [
"Downloads.RegisterForDownloadItems",
"Input.RegisterForControllerInputMessages",
"Settings.RegisterForSettingsChanges",
"System",
"System.RegisterForOnResumeFromSuspend",
"System.RegisterForOnSuspendRequest",
"System.ShutdownPC",
"URL.ExecuteSteamURL",
"User.GetLoginUsers",
"User.RegisterForShutdownDone"
],
"dfl": [
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DropdownItem",
"Field",
"Focusable",
"Navigation",
"SidebarNavigation",
"SliderField",
"TextField",
"ToggleField",
"definePlugin",
"findModuleChild",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/EMERALD0874/SDH-AudioLoader",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/jurassicplayer/decky-autosuspend",
"https://github.com/jurassicplayer/decky-autosuspend.git"
],
"status": "broken",
"reason": "Frontend audit failed: Cannot read properties of null (reading '6').",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 27,
"name": "AutoSuspend",
"ready": false,
"error": "Cannot read properties of null (reading '6')",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 27,
"accepted": true,
"folder": "decky-autosuspend"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 27,
"sha256": "20ceb9aa5327226326531d947e4a7a5318ba78b73f503266996a81877cffa536",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 28,
"name": "Emuchievements",
"version": "2.0.5",
"sha256": "98dcb443e81b9f9011cfe77c69eb659869c8e2df2df8b0a443df66cbfc2f5a89",
"tags": [
"EmuDeck",
"retroachievements"
],
"folder": "Emuchievements",
"archiveBytes": 1271502,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Emuchievements/main.py"
],
"native": [
{
"file": "Emuchievements/bin/hash",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Apps.RegisterForAppDetails",
"GameSessions.RegisterForAppLifetimeNotifications",
"User.RegisterForLoginStateChange"
],
"dfl": [
"ButtonItem",
"Dropdown",
"Field",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBarItem",
"ProgressBarWithInfo",
"Router",
"SidebarNavigation",
"TextField",
"ToggleField",
"afterPatch",
"beforePatch",
"callOriginal",
"definePlugin",
"findInTree",
"findModuleChild",
"replacePatch",
"sleep",
"staticClasses"
],
"globals": [
"Router",
"appDetailsStore",
"appStore",
"collectionStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/EmuDeck/Emuchievements",
"https://github.com/EmuDeck/Emuchievements.git"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 28,
"name": "Emuchievements",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "ReferenceError: collectionStore is not defined"
}
],
"methods": []
},
"archiveValidation": {
"id": 28,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "The bin/hash helper needs an ARM64 build and cross-platform hashing tests; no ARM64 artifact is published.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 28,
"sha256": "98dcb443e81b9f9011cfe77c69eb659869c8e2df2df8b0a443df66cbfc2f5a89",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: Emuchievements/bin/hash."
}
},
{
"id": 30,
"name": "TunnelDeck",
"version": "1.0.4",
"sha256": "2698b31e53109b992e16f2e888a371a028a2c2719745261d4379d18bed9ac5c8",
"tags": [
"root",
"vpn"
],
"folder": "TunnelDeck",
"archiveBytes": 13863,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"TunnelDeck/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Field",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"systemctl"
],
"sourceURLs": [
"https://github.com/bkohler616/TunnelDeck",
"https://github.com/bkohler616/TunnelDeck.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 30,
"name": "TunnelDeck",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "TypeError: connections.filter is not a function"
}
],
"methods": [
"active_connection",
"is_openvpn_pacman_installed",
"is_openvpn_enabled",
"show",
"reset_cached_data",
"get_priority_interface",
"is_internet_available",
"get_prioritized_network_info"
]
},
"archiveValidation": {
"id": 30,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "systemctl",
"uiSurfaces": [],
"fakeFrame": {
"id": 30,
"sha256": "2698b31e53109b992e16f2e888a371a028a2c2719745261d4379d18bed9ac5c8",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 32,
"name": "AutoFlatpaks",
"version": "1.6.8",
"sha256": "344fce82cfb4800caccb4d6c0ec46e1ad6c9594a622d5baa0bb31286baf2d1a5",
"tags": [
"flatpak",
"package-management",
"root",
"update",
"utility"
],
"folder": "decky-autoflatpaks",
"archiveBytes": 37818,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-autoflatpaks/main.py"
],
"native": [],
"steamClient": [
"InstallFolder.GetInstallFolders"
],
"dfl": [
"ConfirmModal",
"DialogButton",
"Dropdown",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"Router",
"ScrollPanel",
"SteamSpinner",
"Tabs",
"TextField",
"Toggle",
"ToggleField",
"definePlugin",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak",
"x86_64"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/jurassicplayer/decky-autoflatpaks",
"https://github.com/jurassicplayer/decky-autoflatpaks.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 32,
"name": "AutoFlatpaks",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Uncaught TypeError: Cannot read properties of undefined (reading 'batteryState')"
}
],
"methods": [
"settings_getSetting"
]
},
"archiveValidation": {
"id": 32,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "flatpak; x86_64",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 32,
"sha256": "344fce82cfb4800caccb4d6c0ec46e1ad6c9594a622d5baa0bb31286baf2d1a5",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 35,
"name": "MoonDeck",
"version": "1.13.0",
"sha256": "e43ad27e0ecb0c46076791d453e9ec27ae906752a10bc6269d628cc530ea4e19",
"tags": [
"gamestream",
"moondeck",
"moonlight",
"streaming"
],
"folder": "moondeck",
"archiveBytes": 10433357,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"moondeck/main.py",
"moondeck/python/cli.py",
"moondeck/python/lib/buddyclient.py",
"moondeck/python/lib/utils.py",
"moondeck/python/lib/logger.py",
"moondeck/python/lib/settingsmanager.py",
"moondeck/python/lib/runner/envparser.py",
"moondeck/python/lib/runner/settingsparser.py",
"moondeck/python/lib/runner/moondeckapprunner.py",
"moondeck/python/lib/runner/moonlightonlyrunner.py",
"moondeck/python/lib/runner/wolsplashscreen.py",
"moondeck/python/lib/gamestreaminfo.py",
"moondeck/python/lib/moonlightproxy.py",
"moondeck/python/lib/buddyrequests.py",
"moondeck/python/lib/plugin/settings.py",
"moondeck/python/lib/runnerresult.py",
"moondeck/python/lib/cli/utils.py",
"moondeck/python/lib/cli/settings.py",
"moondeck/python/lib/cli/cmd/app/launch.py",
"moondeck/python/lib/cli/cmd/app/clear.py",
"moondeck/python/lib/cli/cmd/app/list/non_steam.py",
"moondeck/python/lib/cli/cmd/app/close.py",
"moondeck/python/lib/cli/cmd/app/status.py",
"moondeck/python/lib/cli/cmd/stream/status.py",
"moondeck/python/lib/cli/cmd/stream/end.py",
"moondeck/python/lib/cli/cmd/steam/close/bpm.py",
"moondeck/python/lib/cli/cmd/steam/close/client.py",
"moondeck/python/lib/cli/cmd/steam/launch.py",
"moondeck/python/lib/cli/cmd/steam/status.py",
"moondeck/python/lib/cli/cmd/host/shutdown.py",
"moondeck/python/lib/cli/cmd/host/add.py",
"moondeck/python/lib/cli/cmd/host/restart.py",
"moondeck/python/lib/cli/cmd/host/ping.py",
"moondeck/python/lib/cli/cmd/host/scan.py",
"moondeck/python/lib/cli/cmd/host/wake.py",
"moondeck/python/lib/cli/cmd/host/pair.py",
"moondeck/python/lib/cli/cmd/host/suspend.py",
"moondeck/python/lib/cli/cmd/host/remove.py",
"moondeck/python/lib/cli/cmd/host/hibernate.py",
"moondeck/python/lib/cli/cmd/host/list.py",
"moondeck/python/lib/cli/cmd/host/default/set.py",
"moondeck/python/lib/cli/cmd/host/default/clear.py",
"moondeck/python/lib/constants.py",
"moondeck/python/lib/splashscreen/splashscreen.py",
"moondeck/python/lib/splashscreen/canvas.py",
"moondeck/python/lib/splashscreen/overlay.py",
"moondeck/python/lib/splashscreen/pallete.py",
"moondeck/python/lib/splashscreen/wolscreen.py",
"moondeck/python/lib/splashscreen/mainscreen.py",
"moondeck/python/externals/yarl/_path.py",
"moondeck/python/externals/yarl/_quoting.py",
"moondeck/python/externals/yarl/_query.py",
"moondeck/python/externals/yarl/_quoting_py.py",
"moondeck/python/externals/yarl/_parse.py",
"moondeck/python/externals/yarl/_url.py",
"moondeck/python/externals/yarl/_quoters.py",
"moondeck/python/externals/yarl/__init__.py",
"moondeck/python/externals/aiohttp/log.py",
"moondeck/python/externals/aiohttp/http_websocket.py",
"moondeck/python/externals/aiohttp/web_response.py",
"moondeck/python/externals/aiohttp/web_urldispatcher.py",
"moondeck/python/externals/aiohttp/base_protocol.py",
"moondeck/python/externals/aiohttp/web_middlewares.py",
"moondeck/python/externals/aiohttp/payload.py",
"moondeck/python/externals/aiohttp/tracing.py",
"moondeck/python/externals/aiohttp/client_ws.py",
"moondeck/python/externals/aiohttp/web_request.py",
"moondeck/python/externals/aiohttp/hdrs.py",
"moondeck/python/externals/aiohttp/helpers.py",
"moondeck/python/externals/aiohttp/web_exceptions.py",
"moondeck/python/externals/aiohttp/streams.py",
"moondeck/python/externals/aiohttp/web_log.py",
"moondeck/python/externals/aiohttp/web_server.py",
"moondeck/python/externals/aiohttp/test_utils.py",
"moondeck/python/externals/aiohttp/client_exceptions.py",
"moondeck/python/externals/aiohttp/web_ws.py",
"moondeck/python/externals/aiohttp/http.py",
"moondeck/python/externals/aiohttp/web_fileresponse.py",
"moondeck/python/externals/aiohttp/multipart.py",
"moondeck/python/externals/aiohttp/web_runner.py",
"moondeck/python/externals/aiohttp/http_parser.py",
"moondeck/python/externals/aiohttp/compression_utils.py",
"moondeck/python/externals/aiohttp/http_exceptions.py",
"moondeck/python/externals/aiohttp/worker.py",
"moondeck/python/externals/aiohttp/typedefs.py",
"moondeck/python/externals/aiohttp/formdata.py",
"moondeck/python/externals/aiohttp/tcp_helpers.py",
"moondeck/python/externals/aiohttp/_websocket/writer.py",
"moondeck/python/externals/aiohttp/_websocket/helpers.py",
"moondeck/python/externals/aiohttp/_websocket/reader_c.py",
"moondeck/python/externals/aiohttp/_websocket/models.py",
"moondeck/python/externals/aiohttp/_websocket/reader.py",
"moondeck/python/externals/aiohttp/_websocket/reader_py.py",
"moondeck/python/externals/aiohttp/_websocket/__init__.py",
"moondeck/python/externals/aiohttp/http_writer.py",
"moondeck/python/externals/aiohttp/web_app.py",
"moondeck/python/externals/aiohttp/connector.py",
"moondeck/python/externals/aiohttp/payload_streamer.py",
"moondeck/python/externals/aiohttp/pytest_plugin.py",
"moondeck/python/externals/aiohttp/client.py",
"moondeck/python/externals/aiohttp/web_protocol.py",
"moondeck/python/externals/aiohttp/__init__.py",
"moondeck/python/externals/aiohttp/cookiejar.py",
"moondeck/python/externals/aiohttp/web_routedef.py",
"moondeck/python/externals/aiohttp/resolver.py",
"moondeck/python/externals/aiohttp/client_proto.py",
"moondeck/python/externals/aiohttp/abc.py",
"moondeck/python/externals/aiohttp/web.py",
"moondeck/python/externals/aiohttp/client_reqrep.py",
"moondeck/python/externals/aiosignal/__init__.py",
"moondeck/python/externals/multidict/_abc.py",
"moondeck/python/externals/multidict/_multidict_py.py",
"moondeck/python/externals/multidict/__init__.py",
"moondeck/python/externals/multidict/_compat.py",
"moondeck/python/externals/ifaddr/netifaces.py",
"moondeck/python/externals/ifaddr/_posix.py",
"moondeck/python/externals/ifaddr/test_ifaddr.py",
"moondeck/python/externals/ifaddr/__init__.py",
"moondeck/python/externals/ifaddr/_shared.py",
"moondeck/python/externals/ifaddr/_win32.py",
"moondeck/python/externals/propcache/_helpers.py",
"moondeck/python/externals/propcache/_helpers_py.py",
"moondeck/python/externals/propcache/__init__.py",
"moondeck/python/externals/propcache/api.py",
"moondeck/python/externals/frozenlist/__init__.py",
"moondeck/python/externals/attrs/filters.py",
"moondeck/python/externals/attrs/converters.py",
"moondeck/python/externals/attrs/validators.py",
"moondeck/python/externals/attrs/exceptions.py",
"moondeck/python/externals/attrs/__init__.py",
"moondeck/python/externals/attrs/setters.py",
"moondeck/python/externals/idna/idnadata.py",
"moondeck/python/externals/idna/compat.py",
"moondeck/python/externals/idna/uts46data.py",
"moondeck/python/externals/idna/intranges.py",
"moondeck/python/externals/idna/codec.py",
"moondeck/python/externals/idna/package_data.py",
"moondeck/python/externals/idna/core.py",
"moondeck/python/externals/idna/__init__.py",
"moondeck/python/externals/aiohappyeyeballs/utils.py",
"moondeck/python/externals/aiohappyeyeballs/types.py",
"moondeck/python/externals/aiohappyeyeballs/_staggered.py",
"moondeck/python/externals/aiohappyeyeballs/impl.py",
"moondeck/python/externals/aiohappyeyeballs/__init__.py",
"moondeck/python/externals/zeroconf/_services/browser.py",
"moondeck/python/externals/zeroconf/_services/info.py",
"moondeck/python/externals/zeroconf/_services/registry.py",
"moondeck/python/externals/zeroconf/_services/types.py",
"moondeck/python/externals/zeroconf/_services/__init__.py",
"moondeck/python/externals/zeroconf/_listener.py",
"moondeck/python/externals/zeroconf/_logger.py",
"moondeck/python/externals/zeroconf/const.py",
"moondeck/python/externals/zeroconf/_cache.py",
"moondeck/python/externals/zeroconf/_record_update.py",
"moondeck/python/externals/zeroconf/_dns.py",
"moondeck/python/externals/zeroconf/_utils/asyncio.py",
"moondeck/python/externals/zeroconf/_utils/time.py",
"moondeck/python/externals/zeroconf/_utils/net.py",
"moondeck/python/externals/zeroconf/_utils/ipaddress.py",
"moondeck/python/externals/zeroconf/_utils/name.py",
"moondeck/python/externals/zeroconf/_utils/__init__.py",
"moondeck/python/externals/zeroconf/_updates.py",
"moondeck/python/externals/zeroconf/asyncio.py",
"moondeck/python/externals/zeroconf/_history.py",
"moondeck/python/externals/zeroconf/_engine.py",
"moondeck/python/externals/zeroconf/_protocol/incoming.py",
"moondeck/python/externals/zeroconf/_protocol/outgoing.py",
"moondeck/python/externals/zeroconf/_protocol/__init__.py",
"moondeck/python/externals/zeroconf/_transport.py",
"moondeck/python/externals/zeroconf/__init__.py",
"moondeck/python/externals/zeroconf/_core.py",
"moondeck/python/externals/zeroconf/_exceptions.py",
"moondeck/python/externals/zeroconf/_handlers/multicast_outgoing_queue.py",
"moondeck/python/externals/zeroconf/_handlers/record_manager.py",
"moondeck/python/externals/zeroconf/_handlers/answers.py",
"moondeck/python/externals/zeroconf/_handlers/__init__.py",
"moondeck/python/externals/zeroconf/_handlers/query_handler.py",
"moondeck/python/externals/wakeonlan/__init__.py",
"moondeck/python/externals/pyglet/resource.py",
"moondeck/python/externals/pyglet/display/xlib.py",
"moondeck/python/externals/pyglet/display/cocoa.py",
"moondeck/python/externals/pyglet/display/win32.py",
"moondeck/python/externals/pyglet/display/xlib_vidmoderestore.py",
"moondeck/python/externals/pyglet/display/__init__.py",
"moondeck/python/externals/pyglet/display/base.py",
"moondeck/python/externals/pyglet/display/headless.py",
"moondeck/python/externals/pyglet/math.py",
"moondeck/python/externals/pyglet/info.py",
"moondeck/python/externals/pyglet/image/codecs/gdiplus.py",
"moondeck/python/externals/pyglet/image/codecs/dds.py",
"moondeck/python/externals/pyglet/image/codecs/gif.py",
"moondeck/python/externals/pyglet/image/codecs/bmp.py",
"moondeck/python/externals/pyglet/image/codecs/png.py",
"moondeck/python/externals/pyglet/image/codecs/s3tc.py",
"moondeck/python/externals/pyglet/image/codecs/quartz.py",
"moondeck/python/externals/pyglet/image/codecs/wincodec_lib.py",
"moondeck/python/externals/pyglet/image/codecs/gdkpixbuf2.py",
"moondeck/python/externals/pyglet/image/codecs/__init__.py",
"moondeck/python/externals/pyglet/image/codecs/wic.py",
"moondeck/python/externals/pyglet/image/codecs/pil.py",
"moondeck/python/externals/pyglet/image/animation.py",
"moondeck/python/externals/pyglet/image/buffer.py",
"moondeck/python/externals/pyglet/image/atlas.py",
"moondeck/python/externals/pyglet/image/__init__.py",
"moondeck/python/externals/pyglet/app/xlib.py",
"moondeck/python/externals/pyglet/app/cocoa.py",
"moondeck/python/externals/pyglet/app/win32.py",
"moondeck/python/externals/pyglet/app/__init__.py",
"moondeck/python/externals/pyglet/app/base.py",
"moondeck/python/externals/pyglet/model/codecs/gltf.py",
"moondeck/python/externals/pyglet/model/codecs/obj.py",
"moondeck/python/externals/pyglet/model/codecs/__init__.py",
"moondeck/python/externals/pyglet/model/codecs/base.py",
"moondeck/python/externals/pyglet/model/__init__.py",
"moondeck/python/externals/pyglet/window/win32/__init__.py",
"moondeck/python/externals/pyglet/window/mouse.py",
"moondeck/python/externals/pyglet/window/xlib/__init__.py",
"moondeck/python/externals/pyglet/window/cocoa/pyglet_textview.py",
"moondeck/python/externals/pyglet/window/cocoa/pyglet_window.py",
"moondeck/python/externals/pyglet/window/cocoa/pyglet_delegate.py",
"moondeck/python/externals/pyglet/window/cocoa/pyglet_view.py",
"moondeck/python/externals/pyglet/window/cocoa/systemcursor.py",
"moondeck/python/externals/pyglet/window/cocoa/__init__.py",
"moondeck/python/externals/pyglet/window/headless/__init__.py",
"moondeck/python/externals/pyglet/window/key.py",
"moondeck/python/externals/pyglet/window/__init__.py",
"moondeck/python/externals/pyglet/window/event.py",
"moondeck/python/externals/pyglet/input/win32/xinput.py",
"moondeck/python/externals/pyglet/input/win32/wintab.py",
"moondeck/python/externals/pyglet/input/win32/__init__.py",
"moondeck/python/externals/pyglet/input/win32/directinput.py",
"moondeck/python/externals/pyglet/input/macos/__init__.py",
"moondeck/python/externals/pyglet/input/macos/darwin_hid.py",
"moondeck/python/externals/pyglet/input/controller.py",
"moondeck/python/externals/pyglet/input/linux/evdev_constants.py",
"moondeck/python/externals/pyglet/input/linux/evdev.py",
"moondeck/python/externals/pyglet/input/linux/x11_xinput_tablet.py",
"moondeck/python/externals/pyglet/input/linux/x11_xinput.py",
"moondeck/python/externals/pyglet/input/linux/__init__.py",
"moondeck/python/externals/pyglet/input/__init__.py",
"moondeck/python/externals/pyglet/input/controller_db.py",
"moondeck/python/externals/pyglet/input/base.py",
"moondeck/python/externals/pyglet/shapes.py",
"moondeck/python/externals/pyglet/experimental/particles.py",
"moondeck/python/externals/pyglet/experimental/hidraw.py",
"moondeck/python/externals/pyglet/experimental/geoshader_sprite.py",
"moondeck/python/externals/pyglet/experimental/multitexture_sprite.py",
"moondeck/python/externals/pyglet/experimental/net.py",
"moondeck/python/externals/pyglet/experimental/jobs.py",
"moondeck/python/externals/pyglet/gui/frame.py",
"moondeck/python/externals/pyglet/gui/ninepatch.py",
"moondeck/python/externals/pyglet/gui/widgets.py",
"moondeck/python/externals/pyglet/gui/__init__.py",
"moondeck/python/externals/pyglet/lib.py",
"moondeck/python/externals/pyglet/graphics/shader.py",
"moondeck/python/externals/pyglet/graphics/vertexbuffer.py",
"moondeck/python/externals/pyglet/graphics/instance.py",
"moondeck/python/externals/pyglet/graphics/vertexarray.py",
"moondeck/python/externals/pyglet/graphics/vertexdomain.py",
"moondeck/python/externals/pyglet/graphics/__init__.py",
"moondeck/python/externals/pyglet/graphics/allocation.py",
"moondeck/python/externals/pyglet/util.py",
"moondeck/python/externals/pyglet/media/devices/win32.py",
"moondeck/python/externals/pyglet/media/devices/__init__.py",
"moondeck/python/externals/pyglet/media/devices/base.py",
"moondeck/python/externals/pyglet/media/buffered_logger.py",
"moondeck/python/externals/pyglet/media/codecs/gstreamer.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libavformat.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libswresample.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/compat.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libavutil.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/__init__.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libavcodec.py",
"moondeck/python/externals/pyglet/media/codecs/ffmpeg_lib/libswscale.py",
"moondeck/python/externals/pyglet/media/codecs/pyogg.py",
"moondeck/python/externals/pyglet/media/codecs/wmf.py",
"moondeck/python/externals/pyglet/media/codecs/coreaudio.py",
"moondeck/python/externals/pyglet/media/codecs/wave.py",
"moondeck/python/externals/pyglet/media/codecs/__init__.py",
"moondeck/python/externals/pyglet/media/codecs/base.py",
"moondeck/python/externals/pyglet/media/exceptions.py",
"moondeck/python/externals/pyglet/media/drivers/xaudio2/adaptation.py",
"moondeck/python/externals/pyglet/media/drivers/xaudio2/interface.py",
"moondeck/python/externals/pyglet/media/drivers/xaudio2/__init__.py",
"moondeck/python/externals/pyglet/media/drivers/xaudio2/lib_xaudio2.py",
"moondeck/python/externals/pyglet/media/drivers/silent/adaptation.py",
"moondeck/python/externals/pyglet/media/drivers/silent/__init__.py",
"moondeck/python/externals/pyglet/media/drivers/pulse/adaptation.py",
"moondeck/python/externals/pyglet/media/drivers/pulse/lib_pulseaudio.py",
"moondeck/python/externals/pyglet/media/drivers/pulse/interface.py",
"moondeck/python/externals/pyglet/media/drivers/pulse/__init__.py",
"moondeck/python/externals/pyglet/media/drivers/openal/adaptation.py",
"moondeck/python/externals/pyglet/media/drivers/openal/lib_openal.py",
"moondeck/python/externals/pyglet/media/drivers/openal/interface.py",
"moondeck/python/externals/pyglet/media/drivers/openal/__init__.py",
"moondeck/python/externals/pyglet/media/drivers/openal/lib_alc.py",
"moondeck/python/externals/pyglet/media/drivers/directsound/adaptation.py",
"moondeck/python/externals/pyglet/media/drivers/directsound/exceptions.py",
"moondeck/python/externals/pyglet/media/drivers/directsound/interface.py",
"moondeck/python/externals/pyglet/media/drivers/directsound/__init__.py",
"moondeck/python/externals/pyglet/media/drivers/directsound/lib_dsound.py",
"moondeck/python/externals/pyglet/media/drivers/listener.py",
"moondeck/python/externals/pyglet/media/drivers/__init__.py",
"moondeck/python/externals/pyglet/media/drivers/base.py",
"moondeck/python/externals/pyglet/media/player_worker_thread.py",
"moondeck/python/externals/pyglet/media/__init__.py",
"moondeck/python/externals/pyglet/media/synthesis.py",
"moondeck/python/externals/pyglet/media/instrumentation.py",
"moondeck/python/externals/pyglet/media/player.py",
"moondeck/python/externals/pyglet/gl/lib_wgl.py",
"moondeck/python/externals/pyglet/gl/glxext_arb.py",
"moondeck/python/externals/pyglet/gl/xlib.py",
"moondeck/python/externals/pyglet/gl/gl_info.py",
"moondeck/python/externals/pyglet/gl/cocoa.py",
"moondeck/python/externals/pyglet/gl/wglext_arb.py",
"moondeck/python/externals/pyglet/gl/wglext_nv.py",
"moondeck/python/externals/pyglet/gl/wgl_info.py",
"moondeck/python/externals/pyglet/gl/win32.py",
"moondeck/python/externals/pyglet/gl/gl.py",
"moondeck/python/externals/pyglet/gl/glx_info.py",
"moondeck/python/externals/pyglet/gl/lib.py",
"moondeck/python/externals/pyglet/gl/glxext_mesa.py",
"moondeck/python/externals/pyglet/gl/lib_glx.py",
"moondeck/python/externals/pyglet/gl/agl.py",
"moondeck/python/externals/pyglet/gl/gl_compat.py",
"moondeck/python/externals/pyglet/gl/lib_agl.py",
"moondeck/python/externals/pyglet/gl/wgl.py",
"moondeck/python/externals/pyglet/gl/__init__.py",
"moondeck/python/externals/pyglet/gl/base.py",
"moondeck/python/externals/pyglet/gl/glx.py",
"moondeck/python/externals/pyglet/gl/headless.py",
"moondeck/python/externals/pyglet/gl/glxext_nv.py",
"moondeck/python/externals/pyglet/__init__.py",
"moondeck/python/externals/pyglet/libs/win32/types.py",
"moondeck/python/externals/pyglet/libs/win32/winkey.py",
"moondeck/python/externals/pyglet/libs/win32/dinput.py",
"moondeck/python/externals/pyglet/libs/win32/constants.py",
"moondeck/python/externals/pyglet/libs/win32/libwintab.py",
"moondeck/python/externals/pyglet/libs/win32/__init__.py",
"moondeck/python/externals/pyglet/libs/win32/context_managers.py",
"moondeck/python/externals/pyglet/libs/win32/com.py",
"moondeck/python/externals/pyglet/libs/ioctl.py",
"moondeck/python/externals/pyglet/libs/wayland/gbm.py",
"moondeck/python/externals/pyglet/libs/wayland/xkbcommon.py",
"moondeck/python/externals/pyglet/libs/wayland/__init__.py",
"moondeck/python/externals/pyglet/libs/darwin/coreaudio.py",
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/cocoatypes.py",
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/runtime.py",
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/cocoalibs.py",
"moondeck/python/externals/pyglet/libs/darwin/cocoapy/__init__.py",
"moondeck/python/externals/pyglet/libs/darwin/quartzkey.py",
"moondeck/python/externals/pyglet/libs/darwin/__init__.py",
"moondeck/python/externals/pyglet/libs/egl/lib.py",
"moondeck/python/externals/pyglet/libs/egl/egl.py",
"moondeck/python/externals/pyglet/libs/egl/__init__.py",
"moondeck/python/externals/pyglet/libs/egl/eglext.py",
"moondeck/python/externals/pyglet/libs/__init__.py",
"moondeck/python/externals/pyglet/libs/x11/xlib.py",
"moondeck/python/externals/pyglet/libs/x11/xinerama.py",
"moondeck/python/externals/pyglet/libs/x11/cursorfont.py",
"moondeck/python/externals/pyglet/libs/x11/xrender.py",
"moondeck/python/externals/pyglet/libs/x11/xinput.py",
"moondeck/python/externals/pyglet/libs/x11/xf86vmode.py",
"moondeck/python/externals/pyglet/libs/x11/xrandr.py",
"moondeck/python/externals/pyglet/libs/x11/xsync.py",
"moondeck/python/externals/pyglet/libs/x11/__init__.py",
"moondeck/python/externals/pyglet/event.py",
"moondeck/python/externals/pyglet/sprite.py",
"moondeck/python/externals/pyglet/clock.py",
"moondeck/python/externals/pyglet/extlibs/earcut.py",
"moondeck/python/externals/pyglet/extlibs/png.py",
"moondeck/python/externals/pyglet/extlibs/__init__.py",
"moondeck/python/externals/pyglet/customtypes.py",
"moondeck/python/externals/pyglet/text/runlist.py",
"moondeck/python/externals/pyglet/text/document.py",
"moondeck/python/externals/pyglet/text/caret.py",
"moondeck/python/externals/pyglet/text/layout/incremental.py",
"moondeck/python/externals/pyglet/text/layout/scrolling.py",
"moondeck/python/externals/pyglet/text/layout/__init__.py",
"moondeck/python/externals/pyglet/text/layout/base.py",
"moondeck/python/externals/pyglet/text/__init__.py",
"moondeck/python/externals/pyglet/text/formats/structured.py",
"moondeck/python/externals/pyglet/text/formats/plaintext.py",
"moondeck/python/externals/pyglet/text/formats/html.py",
"moondeck/python/externals/pyglet/text/formats/attributed.py",
"moondeck/python/externals/pyglet/text/formats/__init__.py",
"moondeck/python/externals/pyglet/font/fontconfig.py",
"moondeck/python/externals/pyglet/font/freetype_lib.py",
"moondeck/python/externals/pyglet/font/quartz.py",
"moondeck/python/externals/pyglet/font/win32.py",
"moondeck/python/externals/pyglet/font/freetype.py",
"moondeck/python/externals/pyglet/font/ttf.py",
"moondeck/python/externals/pyglet/font/__init__.py",
"moondeck/python/externals/pyglet/font/base.py",
"moondeck/python/externals/pyglet/font/harfbuzz/harfbuzz_lib.py",
"moondeck/python/externals/pyglet/font/harfbuzz/__init__.py",
"moondeck/python/externals/pyglet/font/user.py",
"moondeck/python/externals/pyglet/font/dwrite/d2d1_lib.py",
"moondeck/python/externals/pyglet/font/dwrite/dwrite_lib.py",
"moondeck/python/externals/pyglet/font/dwrite/d2d1_types_lib.py",
"moondeck/python/externals/pyglet/font/dwrite/__init__.py",
"moondeck/python/externals/attr/_make.py",
"moondeck/python/externals/attr/_next_gen.py",
"moondeck/python/externals/attr/_funcs.py",
"moondeck/python/externals/attr/_version_info.py",
"moondeck/python/externals/attr/filters.py",
"moondeck/python/externals/attr/converters.py",
"moondeck/python/externals/attr/_cmp.py",
"moondeck/python/externals/attr/validators.py",
"moondeck/python/externals/attr/exceptions.py",
"moondeck/python/externals/attr/_config.py",
"moondeck/python/externals/attr/__init__.py",
"moondeck/python/externals/attr/setters.py",
"moondeck/python/externals/attr/_compat.py",
"moondeck/python/moondeckrun.py"
],
"native": [
{
"file": "moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/aiohttp/_http_parser.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/aiohttp/_websocket/reader_c.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/aiohttp/_websocket/mask.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/aiohttp/_http_writer.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/multidict/_multidict.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/propcache/_helpers_c.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/frozenlist/_frozenlist.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_services/info.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_services/__init__.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_services/browser.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_services/registry.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_record_update.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_cache.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_utils/ipaddress.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_utils/time.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_protocol/outgoing.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_protocol/incoming.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_dns.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_listener.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_updates.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_history.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_handlers/multicast_outgoing_queue.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_handlers/answers.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_handlers/query_handler.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "moondeck/python/externals/zeroconf/_handlers/record_manager.cpython-313-x86_64-linux-gnu.so",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Apps.AddShortcut",
"Apps.CancelGameAction",
"Apps.GetResolutionOverrideForApp",
"Apps.RegisterForAppDetails",
"Apps.RegisterForGameActionEnd",
"Apps.RegisterForGameActionStart",
"Apps.RegisterForGameActionTaskChange",
"Apps.RemoveShortcut",
"Apps.RunGame",
"Apps.SetAppLaunchOptions",
"Apps.SetAppResolutionOverride",
"Apps.SetShortcutName",
"Apps.SetThirdPartyControllerConfiguration",
"Apps.TerminateApp",
"Apps.ToggleOverrideResolutionForInternalDisplay",
"GameSessions.RegisterForAppLifetimeNotifications",
"System.Audio.GetDevices",
"System.DisplayManager.RegisterForStateChanges",
"User.RegisterForLoginStateChange",
"User.StartRestart"
],
"dfl": [
"Button",
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogButtonPrimary",
"DialogButtonSecondary",
"DialogControlsSection",
"DialogControlsSectionHeader",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"Menu",
"MenuItem",
"ModalRoot",
"NavEntryPositionPreferences",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SidebarNavigation",
"Spinner",
"TextField",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"appDetailsHeaderClasses",
"basicAppDetailsSectionStylerClasses",
"createReactTreePatcher",
"findInReactTree",
"findModuleExport",
"findSP",
"joinClassNames",
"playSectionClasses",
"showContextMenu",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"appStore",
"collectionStore",
"routerHook",
"toaster"
],
"hardwareSignals": [
"/dev/input",
"/sys/socket.h",
"amd64",
"flatpak",
"x86_64"
],
"sourceURLs": [
"https://github.com/FrogTheFrog/moondeck",
"https://github.com/FrogTheFrog/moondeck-buddy",
"https://github.com/KhronosGroup/glTF-Tutorials",
"https://github.com/SteamDeckHomebrew/cli",
"https://github.com/aio-libs/aiohttp",
"https://github.com/joshuaskelly/earcut-python",
"https://github.com/kennethreitz/requests",
"https://github.com/libsdl-org/SDL-1.2",
"https://github.com/phracker/MacOSX-SDKs",
"https://github.com/pyglet/pyglet",
"https://github.com/python-attrs/attrs",
"https://github.com/python-zeroconf/python-zeroconf",
"https://github.com/python/cpython",
"https://github.com/python/mypy",
"https://github.com/torvalds/linux"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so. Frontend initializes; native CPython wheels and executables in the published archive are x86_64.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 35,
"name": "MoonDeck",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 35,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so"
},
"backend": "Python + native payload",
"hardware": "/dev/input; /sys/socket.h; amd64; flatpak; x86_64",
"nativePort": "Rebuild vendored CPython 3.13 extension wheels for the headset Python ABI and ARM64; buddy/helper dependencies also need ports.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 35,
"sha256": "e43ad27e0ecb0c46076791d453e9ec27ae906752a10bc6269d628cc530ea4e19",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: moondeck/python/externals/yarl/_quoting_c.cpython-313-x86_64-linux-gnu.so. Frontend initializes; native CPython wheels and executables in the published archive are x86_64."
}
},
{
"id": 36,
"name": "SteamGridDB",
"version": "1.8.1",
"sha256": "e84f5b1f111af8862b06218479491fbf61036e1bfd9f16f93f9901e9b9ebc5e0",
"tags": [
"artwork",
"sgdb"
],
"folder": "decky-steamgriddb",
"archiveBytes": 3438092,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-steamgriddb/main.py",
"decky-steamgriddb/py_modules/vdf/__init__.py"
],
"native": [],
"steamClient": [
"Apps.ClearCustomArtworkForApp",
"Apps.RegisterForAppDetails",
"Apps.SetCustomArtworkForApp",
"Apps.SetShortcutName",
"User.StartRestart"
],
"dfl": [
"ConfirmModal",
"ControlsList",
"DialogBody",
"DialogBodyText",
"DialogButton",
"DialogButtonPrimary",
"DialogCheckbox",
"DialogControlsSection",
"DialogControlsSectionHeader",
"DialogFooter",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"IconsModule",
"Marquee",
"Menu",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBar",
"ReorderableList",
"SliderField",
"Spinner",
"Tabs",
"TextField",
"ToggleField",
"afterPatch",
"appDetailsHeaderClasses",
"callOriginal",
"createModuleMapping",
"definePlugin",
"fakeRenderComponent",
"findClassModule",
"findInReactTree",
"findInTree",
"findModule",
"findModuleByExport",
"findModuleExport",
"findSP",
"joinClassNames",
"quickAccessMenuClasses",
"replacePatch",
"showContextMenu",
"showModal",
"useParams",
"wrapReactType"
],
"globals": [
"appDetailsStore",
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamGridDB/decky-steamgriddb"
],
"status": "broken",
"reason": "Local module mapping is available; frontend still requires the Steam LibraryContextMenu implementation, which has no target in the isolated Framey panel.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 36,
"name": "SteamGridDB",
"ready": false,
"error": "Cannot convert undefined or null to object",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 36,
"accepted": true,
"folder": "decky-steamgriddb"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 36,
"sha256": "e84f5b1f111af8862b06218479491fbf61036e1bfd9f16f93f9901e9b9ebc5e0",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 37,
"name": "Discord Status",
"version": "1.5.0",
"sha256": "00a45dd919abb6e050685e1e408ce8023b9c4a09d6e91ba528d50aed2a63bf45",
"tags": [
"discord"
],
"folder": "DiscordStatus",
"archiveBytes": 465208,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DiscordStatus/main.py"
],
"native": [],
"steamClient": [
"Apps.RegisterForAppDetails",
"Apps.RunGame",
"GameSessions.RegisterForAppLifetimeNotifications",
"User.RegisterForPrepareForSystemSuspendProgress",
"User.RegisterForResumeSuspendedGamesProgress"
],
"dfl": [
"ButtonItem",
"DropdownItem",
"Field",
"PanelSection",
"PanelSectionRow",
"Router",
"Spinner",
"sleep",
"staticClasses"
],
"globals": [
"Router",
"appStore",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/andrewburgess/steamdeck-discord-status",
"https://github.com/andrewburgess/steamdeck-discord-status.git"
],
"status": "partial",
"reason": "Disconnected panel renders; running-activity construction accepts a synthetic game in local Chromium. Exact official is_connected returned false in real Decky 3.3.0 ARM64. Empty live running-list reads and lifetime registration/cleanup passed. Real game transitions, Discord shortcut detection/connection/activity, local custom artwork and worn VR remain unverified/unsupported.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 37,
"name": "Discord Status",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "TypeError: DFL.Router.RunningApps is not iterable"
},
{
"kind": "rejection",
"message": "ReferenceError: appStore is not defined"
}
],
"methods": []
},
"archiveValidation": {
"id": 37,
"accepted": true,
"folder": "DiscordStatus"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 37,
"sha256": "00a45dd919abb6e050685e1e408ce8023b9c4a09d6e91ba528d50aed2a63bf45",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"libraryFollowUp": {
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
"frontendReady": true
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 38,
"name": "Volume Mixer",
"version": "1.2.1-1",
"sha256": "11b259ad234d0e97cfef4e6a2af3f1edfb0908d5482765af56b86b0a4601c5f3",
"tags": [
"media",
"volume"
],
"folder": "VolumeMixer-decky",
"archiveBytes": 208635,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"VolumeMixer-decky/main.py",
"VolumeMixer-decky/dbussy/dbussy.py",
"VolumeMixer-decky/dbussy/setup.py",
"VolumeMixer-decky/dbussy/ravel.py",
"VolumeMixer-decky/pulsectl/lookup.py",
"VolumeMixer-decky/pulsectl/__init__.py",
"VolumeMixer-decky/pulsectl/_pulsectl.py",
"VolumeMixer-decky/pulsectl/pulsectl.py",
"VolumeMixer-decky/lib/x/sax/expatreader.py",
"VolumeMixer-decky/lib/x/sax/handler.py",
"VolumeMixer-decky/lib/x/sax/_exceptions.py",
"VolumeMixer-decky/lib/x/sax/saxutils.py",
"VolumeMixer-decky/lib/x/sax/__init__.py",
"VolumeMixer-decky/lib/x/sax/xmlreader.py",
"VolumeMixer-decky/lib/x/dom/domreg.py",
"VolumeMixer-decky/lib/x/dom/expatbuilder.py",
"VolumeMixer-decky/lib/x/dom/__init__.py",
"VolumeMixer-decky/lib/x/dom/minicompat.py",
"VolumeMixer-decky/lib/x/dom/xmlbuilder.py",
"VolumeMixer-decky/lib/x/dom/NodeFilter.py",
"VolumeMixer-decky/lib/x/dom/minidom.py",
"VolumeMixer-decky/lib/x/dom/pulldom.py",
"VolumeMixer-decky/lib/x/parsers/expat.py",
"VolumeMixer-decky/lib/x/parsers/__init__.py",
"VolumeMixer-decky/lib/x/__init__.py",
"VolumeMixer-decky/lib/x/etree/ElementPath.py",
"VolumeMixer-decky/lib/x/etree/ElementInclude.py",
"VolumeMixer-decky/lib/x/etree/ElementTree.py",
"VolumeMixer-decky/lib/x/etree/__init__.py",
"VolumeMixer-decky/lib/x/etree/cElementTree.py"
],
"native": [],
"steamClient": [],
"dfl": [
"DialogButton",
"Focusable",
"PanelSection",
"PanelSectionRow",
"SliderField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"sudo"
],
"sourceURLs": [
"https://github.com/bluez/bluez",
"https://github.com/isiah-lloyd/VolumeMixer-decky",
"https://github.com/ldo/dbussy",
"https://github.com/mk-fg/python-pulse-control"
],
"status": "works",
"reason": "Per-app stream discovery and slider/keyboard volume changes pass in local Chromium through real Decky 3.3.0 ARM64 on the Frame audio session, with independent Pulse readback of a silent test stream. Bluetooth playback, audible output and worn-VR controls unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"isolated Linux backend",
"real Frame SSH"
],
"browser": {
"id": 38,
"name": "Volume Mixer",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[VolumeMixer] Error while calling get_sink_inputs"
}
],
"methods": [
"get_sink_inputs"
]
},
"archiveValidation": {
"id": 38,
"accepted": true,
"folder": "VolumeMixer-decky"
},
"backend": "Python",
"hardware": "PulseAudio/PipeWire, libpulse/libdbus and D-Bus; optional Bluetooth playback",
"uiSurfaces": [],
"fakeFrame": {
"id": 38,
"sha256": "11b259ad234d0e97cfef4e6a2af3f1edfb0908d5482765af56b86b0a4601c5f3",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"localBackend": {
"runtime": "Decky 3.3.0 amd64",
"evidence": "docs/evidence/framey-audio-backends-2026-10-26.json",
"audio": "private silent virtual targets",
"realFrame": false
}
},
{
"id": 40,
"name": "Controller Tools",
"version": "2.0.2",
"sha256": "9450e54cbf28082d4513838d0dcd42bf04ffc08ae5a6472d0c1f88677782e3ef",
"tags": [
"controller",
"gamepad",
"nintendo",
"playstation",
"switch",
"xbox"
],
"folder": "ControllerTools",
"archiveBytes": 4462155,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"ControllerTools/main.py"
],
"native": [
{
"file": "ControllerTools/bin/backend",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"gamepadDialogClasses",
"joinClassNames",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/alphamercury/ControllerTools",
"https://github.com/alphamercury/ControllerTools.git",
"https://github.com/jfernandez/ControllerTools"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend. Frontend audit failed: Audit blocks WebSocket.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 40,
"name": "Controller Tools",
"ready": false,
"error": "Audit blocks WebSocket",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 40,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "Native backend needs an ARM64 build and controller/HID dependencies; its direct websocket also bypasses the Framey bridge.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 40,
"sha256": "9450e54cbf28082d4513838d0dcd42bf04ffc08ae5a6472d0c1f88677782e3ef",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: ControllerTools/bin/backend. Frontend audit failed: Audit blocks WebSocket."
}
},
{
"id": 43,
"name": "Tailscale Control",
"version": "0.1.3",
"sha256": "06411711b27101d438339000da3d91202d682862710b02ef3ddf2462e642448a",
"tags": [
"tailscale"
],
"folder": "tailscale-control",
"archiveBytes": 14727,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"tailscale-control/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DropdownItem",
"Field",
"Focusable",
"PanelSection",
"PanelSectionRow",
"SuspensefulImage",
"TextField",
"ToggleField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/saumya-banthia/tailscale-control",
"https://github.com/saumya-banthia/tailscale-control.git",
"https://github.com/tailscale-dev/deck-tailscale"
],
"status": "partial",
"reason": "Settings render locally after the SuspensefulImage fallback. Tailscale daemon/state, connection and exit-node changes unverified; bundled localhost QR asset remains unavailable. No network settings were changed.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 43,
"name": "Tailscale Control",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_tailscale_state"
]
},
"archiveValidation": {
"id": 43,
"accepted": true,
"folder": "tailscale-control"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 43,
"sha256": "06411711b27101d438339000da3d91202d682862710b02ef3ddf2462e642448a",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 44,
"name": "DeckMTP",
"version": "1.0.5",
"sha256": "a60cbe438226109a21a3eabf881a73460bfb9d70871b70a1508cfa17e3fed496",
"tags": [
"file-transfer",
"media",
"root",
"utility"
],
"folder": "DeckMTP",
"archiveBytes": 55653,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"DeckMTP/main.py"
],
"native": [
{
"file": "DeckMTP/bin/umtprd",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/dafta/DeckMTP",
"https://github.com/dafta/DeckMTP.git"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: DeckMTP/bin/umtprd.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 44,
"name": "DeckMTP",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "rejection",
"message": "Read-only compatibility audit: backend method blocked"
},
{
"kind": "rejection",
"message": "Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"is_drd_enabled",
"is_running"
]
},
"archiveValidation": {
"id": 44,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: DeckMTP/bin/umtprd"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "umtprd needs ARM64 libusb/MTP dependencies and USB gadget permissions; root user-service blocker remains.",
"uiSurfaces": [],
"fakeFrame": {
"id": 44,
"sha256": "a60cbe438226109a21a3eabf881a73460bfb9d70871b70a1508cfa17e3fed496",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: DeckMTP/bin/umtprd",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 46,
"name": "Steamback",
"version": "1.0.0-1",
"sha256": "ed5f2fbb47cdfc3aa9a4349a139ab20c29976117a3be0de7e8a588bb265ee7f3",
"tags": [
"backup",
"steamback"
],
"folder": "Steamback",
"archiveBytes": 90658,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Steamback/main.py",
"Steamback/py_modules/steamback/test.py",
"Steamback/py_modules/steamback/__init__.py",
"Steamback/py_modules/steamback/util.py",
"Steamback/py_modules/steamback/gui.py",
"Steamback/py_modules/steamback/__main__.py",
"Steamback/py_modules/steamback/test.py",
"Steamback/py_modules/steamback/__init__.py",
"Steamback/py_modules/steamback/util.py",
"Steamback/py_modules/steamback/gui.py",
"Steamback/py_modules/steamback/__main__.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications",
"InstallFolder.GetInstallFolders"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"appStore",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/geeksville/steamback",
"https://github.com/geeksville/steamback.git"
],
"status": "partial",
"reason": "Panel opens using the real Frame current-user/library snapshot. Account setup and empty save-list reads pass through actual Decky 3.3.0 amd64 in isolation. ARM64 backend, supported-save discovery, automatic backups and restore remain unverified; no backup/restore ran.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 46,
"name": "Steamback",
"ready": false,
"error": "Cannot read properties of undefined (reading 'm_CurrentUser')",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 46,
"accepted": false,
"reason": "Unsafe plugin archive member"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 46,
"sha256": "ed5f2fbb47cdfc3aa9a4349a139ab20c29976117a3be0de7e8a588bb265ee7f3",
"archiveValidation": "Unsafe plugin archive member",
"result": "blocked",
"reason": "ValueError: Unsafe plugin archive member. Frontend audit failed: App is not defined."
},
"libraryFollowUp": {
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
"frontendReady": true
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 48,
"name": "Quick Launch",
"version": "1.2.1",
"sha256": "709746bfe2a7e19bda54b4de0b3f4a311053de10fa58aa070d421dbf92317ede",
"tags": [
"utility"
],
"folder": "SDH-QuickLaunch",
"archiveBytes": 23036,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"SDH-QuickLaunch/main.py"
],
"native": [],
"steamClient": [
"Apps.AddShortcut",
"Apps.RunGame",
"Apps.SetCustomArtworkForApp",
"Apps.SetShortcutExe",
"Apps.SetShortcutLaunchOptions",
"Apps.SetShortcutName",
"Apps.SpecifyCompatTool"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Dropdown",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"appStore",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/Fisch03/SDH-QuickLaunch",
"https://github.com/Fisch03/SDH-QuickLaunch.git",
"https://github.com/SteamDeckHomebrew/PluginLoader"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 48,
"name": "Quick Launch",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "undefined"
}
],
"methods": [
"get_config"
]
},
"archiveValidation": {
"id": 48,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "flatpak",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 48,
"sha256": "709746bfe2a7e19bda54b4de0b3f4a311053de10fa58aa070d421dbf92317ede",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 49,
"name": "Decky Cloud Save",
"version": "1.4.2",
"sha256": "b311d967ddf1b0f0046d36929645855891a40173e3a93f6f0cd8b1576b04b411",
"tags": [
"backup",
"cloud",
"rclone"
],
"folder": "decky-cloud-save",
"archiveBytes": 19497581,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-cloud-save/main.py",
"decky-cloud-save/py_modules/rclone_sync_manager.py",
"decky-cloud-save/py_modules/logger_utils.py",
"decky-cloud-save/py_modules/decky_plugin.py",
"decky-cloud-save/py_modules/process_utils.py",
"decky-cloud-save/py_modules/plugin_config.py",
"decky-cloud-save/py_modules/rclone_setup_manager.py"
],
"native": [
{
"file": "decky-cloud-save/bin/rclone",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications",
"Settings",
"Settings.GetCurrentLanguage"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"Menu",
"MenuItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"definePlugin",
"showContextMenu",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/GedasFX/decky-cloud-save",
"https://github.com/GedasFX/decky-cloud-save.git"
],
"status": "broken",
"reason": "Unsafe plugin archive member.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 49,
"name": "Decky Cloud Save",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of null (reading 'callPluginMethod')"
},
{
"kind": "rejection",
"message": "Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_config",
"get_backend_type",
"get_log_level"
]
},
"archiveValidation": {
"id": 49,
"accepted": false,
"reason": "Unsafe plugin archive member"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "rclone needs an ARM64 artifact; this ZIP also fails safe member validation. Cloud writes were not exercised.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 49,
"sha256": "b311d967ddf1b0f0046d36929645855891a40173e3a93f6f0cd8b1576b04b411",
"archiveValidation": "Unsafe plugin archive member",
"result": "blocked",
"reason": "ValueError: Unsafe plugin archive member."
}
},
{
"id": 50,
"name": "Storage Cleaner",
"version": "1.4.0",
"sha256": "1afa1a6f129c5d419de0e0bf0f6db8d8e50385a5659179346e996031ea372591",
"tags": [
"cache",
"cleaner",
"compatdata",
"compatibility",
"data",
"disk",
"other",
"shader",
"storage",
"utility"
],
"folder": "decky-storage-cleaner",
"archiveBytes": 460621,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-storage-cleaner/main.py"
],
"native": [],
"steamClient": [
"Apps.RegisterForAppDetails"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogCheckbox",
"PanelSection",
"PanelSectionRow",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/mcarlucci/decky-storage-cleaner",
"https://github.com/mcarlucci/decky-storage-cleaner.git"
],
"status": "partial",
"reason": "Empty-data panel rendered; cleanup was deliberately not run because it can remove local data.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 50,
"name": "Storage Cleaner",
"ready": true,
"error": null,
"logs": [],
"methods": [
"list_games_with_temp_data",
"get_size"
]
},
"archiveValidation": {
"id": 50,
"accepted": true,
"folder": "decky-storage-cleaner"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 50,
"sha256": "1afa1a6f129c5d419de0e0bf0f6db8d8e50385a5659179346e996031ea372591",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 52,
"name": "Game Theme Music",
"version": "1.7.1-1",
"sha256": "9ce293ab4db212c03c6b96dfbc5e4d92e874d33387463f53223773921f75a80e",
"tags": [
"audio"
],
"folder": "SDH-GameThemeMusic",
"archiveBytes": 5607583,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"SDH-GameThemeMusic/main.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"DropdownItem",
"Field",
"Focusable",
"Menu",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBarWithInfo",
"SliderField",
"SteamSpinner",
"Tabs",
"TextField",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"createReactTreePatcher",
"definePlugin",
"fakeRenderComponent",
"findInReactTree",
"findInTree",
"findModuleChild",
"showContextMenu",
"showModal",
"staticClasses",
"useParams"
],
"globals": [
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/EMERALD0874/SDH-AudioLoader",
"https://github.com/MegalonVII/SDH-GameThemeMusic",
"https://github.com/MegalonVII/SDH-GameThemeMusic.git",
"https://github.com/OMGDuke/protondb-decky",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/yt-dlp/yt-dlp"
],
"status": "broken",
"reason": "Frontend audit failed: Cannot read properties of null (reading 'type').",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 52,
"name": "Game Theme Music",
"ready": false,
"error": "Cannot read properties of null (reading 'type')",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 52,
"accepted": true,
"folder": "SDH-GameThemeMusic"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 52,
"sha256": "9ce293ab4db212c03c6b96dfbc5e4d92e874d33387463f53223773921f75a80e",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 53,
"name": "Shotty",
"version": "0.1.0",
"sha256": "ab7f6618b264a0cb766525e788cef6c3e1478c0fef98a701225e5e8af441e2fe",
"tags": [
"screenshots"
],
"folder": "Shotty",
"archiveBytes": 2408903,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Shotty/main.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForScreenshotNotification"
],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"Router",
"definePlugin",
"staticClasses"
],
"globals": [
"Router",
"appStore",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"gamescope"
],
"sourceURLs": [
"https://github.com/safijari/Shotty"
],
"status": "broken",
"reason": "Library snapshot fixes the frontend allApps crash. Actual published Decky 3.3.0 amd64 backend fails importing click.get_app_dir (ModuleNotFoundError); the archive does not bundle click. Screenshot aggregation/rescue was not run.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 53,
"name": "Shotty",
"ready": false,
"error": "Cannot read properties of undefined (reading 'allApps')",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 53,
"accepted": true,
"folder": "Shotty"
},
"backend": "Python",
"hardware": "gamescope",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 53,
"sha256": "ab7f6618b264a0cb766525e788cef6c3e1478c0fef98a701225e5e8af441e2fe",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"libraryFollowUp": {
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
"frontendReady": true
}
},
{
"id": 56,
"name": "MangoPeel",
"version": "0.0.7",
"sha256": "71dc21ce5f9f4ee0573bd927e9b444d45dc47327888ca78ed063c7bcc57bfac1",
"tags": [
"mangoapp",
"mangohud"
],
"folder": "MangoPeel",
"archiveBytes": 1029027,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"MangoPeel/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DropdownItem",
"Field",
"Focusable",
"Marquee",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"Tabs",
"TextField",
"ToggleField",
"definePlugin",
"findModuleChild",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Gawah/MangoPeel",
"https://github.com/Gawah/MangoPeel.git",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/flightlessmango/MangoHud"
],
"status": "partial",
"reason": "Initializer succeeds; gamescope/MangoHud actions and backend are unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 56,
"name": "MangoPeel",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_steamChannel",
"get_steamIndex"
]
},
"archiveValidation": {
"id": 56,
"accepted": true,
"folder": "MangoPeel"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 56,
"sha256": "71dc21ce5f9f4ee0573bd927e9b444d45dc47327888ca78ed063c7bcc57bfac1",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 58,
"name": "Volume Boost",
"version": "0.0.7",
"sha256": "2cc576a7f60751306d690268e227df626e59d3733680ced753de4c116629a9cc",
"tags": [
"audio",
"boost",
"booster",
"loud",
"sound",
"volume"
],
"folder": "volume-boost",
"archiveBytes": 8447,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"volume-boost/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"SliderField",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"pactl"
],
"sourceURLs": [
"https://github.com/saumya-banthia/volume-boost",
"https://github.com/saumya-banthia/volume-boost.git"
],
"status": "works",
"reason": "Default-sink controls pass in local Chromium through real Decky 3.3.0 ARM64: linked slider/keyboard and numeric writes, separate channels, re-link and reopen, with independent Pulse readback including 125%/150% while muted. Exact original volume/mute restored. Audible output, Bluetooth sinks and worn VR unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"isolated Linux backend",
"real Frame SSH"
],
"browser": {
"id": 58,
"name": "Volume Boost",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Failed to get volume for channel: left"
}
],
"methods": [
"get_volume_state"
]
},
"archiveValidation": {
"id": 58,
"accepted": true,
"folder": "volume-boost"
},
"backend": "Python",
"hardware": "PulseAudio/PipeWire and pactl; hard-coded /run/user/1000",
"uiSurfaces": [],
"fakeFrame": {
"id": 58,
"sha256": "2cc576a7f60751306d690268e227df626e59d3733680ced753de4c116629a9cc",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"localBackend": {
"runtime": "Decky 3.3.0 amd64",
"evidence": "docs/evidence/framey-audio-backends-2026-10-26.json",
"audio": "private silent virtual targets",
"realFrame": false
}
},
{
"id": 59,
"name": "Web Browser",
"version": "1.4.3",
"sha256": "1192864fddc5d72550346b8dff02c21d71f0c40a06ac41c4e67bb6220d267f9d",
"tags": [
"browser",
"internet",
"web"
],
"folder": "DeckWebBrowser",
"archiveBytes": 91859,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"DeckWebBrowser/main.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications",
"Input.ControllerKeyboardSetKeyState",
"Overlay.RegisterForOverlayActivated",
"System",
"System.RegisterForOnResumeFromSuspend"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogBodyText",
"DialogButton",
"DialogButtonSecondary",
"DialogSubHeader",
"DropdownItem",
"Field",
"Focusable",
"GamepadButton",
"Marquee",
"Menu",
"MenuGroup",
"MenuItem",
"ModalPosition",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SimpleModal",
"SteamSpinner",
"Tabs",
"TextField",
"ToggleField",
"afterPatch",
"definePlugin",
"findClassModule",
"findInReactTree",
"findModuleChild",
"gamepadContextMenuClasses",
"gamepadDialogClasses",
"gamepadTabbedPageClasses",
"getFocusNavController",
"getReactRoot",
"quickAccessControlsClasses",
"replacePatch",
"showContextMenu",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/jessebofill/DeckWebBrowser",
"https://github.com/jessebofill/DeckWebBrowser.git"
],
"status": "broken",
"reason": "The exact frontend now initializes with a null Steam React-root lookup. The browser itself still requires Steam GamepadUI CDP injection and a backend WebSocket unavailable in Framey; no working browser tab was verified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"focused local browser"
],
"browser": {
"id": 59,
"name": "Web Browser",
"ready": false,
"error": "deckyFrontendLib.getReactRoot is not a function",
"logs": [
{
"kind": "warn",
"message": "%c Web Browser %c Styling %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; No SP Window"
},
{
"kind": "error",
"message": "%c Web Browser %c background: #7627D3; color: #E5E1EA; background: transparent; Error setting main tab for establishing ws server Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "%c Web Browser %c Settings Manager %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; Failed to load settings"
},
{
"kind": "error",
"message": "%c Web Browser %c Settings Manager %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; Failed to load favorites"
},
{
"kind": "error",
"message": "%c Web Browser %c Settings Manager %c background: #7627D3; color: #E5E1EA; background: #AF70F9; color: black; background: transparent; Failed to load history"
}
],
"methods": [
"set_main_tab",
"load"
]
},
"archiveValidation": {
"id": 59,
"accepted": true,
"folder": "DeckWebBrowser"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 59,
"sha256": "1192864fddc5d72550346b8dff02c21d71f0c40a06ac41c4e67bb6220d267f9d",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"focusedBrowser": {
"hostChange": "DFL.getReactRoot returns null without exposing a Steam tree",
"ready": true,
"error": null,
"methods": [
"set_main_tab",
"load"
],
"backendAndNetwork": "denied",
"scope": "initializer only; no usable browser tab or real backend verified"
}
},
{
"id": 60,
"name": "DeckyFileServer",
"version": "1.2.0",
"sha256": "7dc2ecdcd05aa415d1ac90afaff28ecb17f77809a2bc7a77aee8e92505b976f0",
"tags": [
"root"
],
"folder": "DeckyFileServer",
"archiveBytes": 10166271,
"api": 1,
"flags": [
"_root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DeckyFileServer/main.py"
],
"native": [
{
"file": "DeckyFileServer/bin/backend",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogBody",
"DialogButton",
"DialogFooter",
"DialogHeader",
"DialogSubHeader",
"DropdownItem",
"Field",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"TextField",
"Toggle",
"ToggleField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
"https://github.com/grimkor/DeckyFileServer"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: DeckyFileServer/bin/backend.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 60,
"name": "DeckyFileServer",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_status"
]
},
"archiveValidation": {
"id": 60,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: DeckyFileServer/bin/backend"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "Native file-server backend needs ARM64 dependencies; root requirement also blocks the user service.",
"uiSurfaces": [],
"fakeFrame": {
"id": 60,
"sha256": "7dc2ecdcd05aa415d1ac90afaff28ecb17f77809a2bc7a77aee8e92505b976f0",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: DeckyFileServer/bin/backend",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 61,
"name": "TabMaster",
"version": "2.15.1",
"sha256": "e08333859a32b0c177b8e9a7959c5eeeafe38f946578f7f1d161c721f0e05da5",
"tags": [
"Customization",
"Library",
"Tabs"
],
"folder": "TabMaster",
"archiveBytes": 5712641,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"TabMaster/main.py"
],
"native": [],
"steamClient": [
"Apps.GetStoreTagLocalization",
"GameSessions.RegisterForAppLifetimeNotifications",
"InstallFolder.RegisterForInstallFolderChanges",
"System",
"System.RegisterForOnResumeFromSuspend",
"System.RestartPC",
"User.RegisterForLoginStateChange"
],
"dfl": [
"Button",
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogCheckbox",
"DialogControlsSection",
"DialogHeader",
"Dropdown",
"DropdownItem",
"Field",
"Focusable",
"GamepadButton",
"Marquee",
"Menu",
"MenuGroup",
"MenuItem",
"ModalPosition",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ReorderableList",
"ScrollPanelGroup",
"SidebarNavigation",
"SliderField",
"TextField",
"ToggleField",
"achievementClasses",
"afterPatch",
"findInReactTree",
"findInTree",
"findModuleExport",
"gamepadContextMenuClasses",
"gamepadDialogClasses",
"gamepadSliderClasses",
"gamepadTabbedPageClasses",
"joinClassNames",
"mainMenuAppRunningClasses",
"quickAccessControlsClasses",
"quickAccessMenuClasses",
"replacePatch",
"scrollPanelClasses",
"showContextMenu",
"showModal",
"sleep",
"wrapReactType"
],
"globals": [
"DeckyPluginLoader",
"appStore",
"collectionStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/Tormak9970/TabMaster",
"https://github.com/Tormak9970/TabMaster.git"
],
"status": "partial",
"reason": "Local Chromium rendered the QAM and navigable Overview/Filters documentation with an actual Decky 3.3.0 amd64 backend. Library-tab editing remains unavailable: Steam login/library patches and MobX reactions have no target. ARM64 and worn VR unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 61,
"name": "TabMaster",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "%c TabMaster %c ERROR %c background: #ff6d05; color: black; background: #c70808; color: black; background: transparent; Could not find mobx.reaction"
}
],
"methods": [
"log_message"
]
},
"archiveValidation": {
"id": 61,
"accepted": true,
"folder": "TabMaster"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 61,
"sha256": "e08333859a32b0c177b8e9a7959c5eeeafe38f946578f7f1d161c721f0e05da5",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 62,
"name": "TS3 QuickAccess",
"version": "1.2.0",
"sha256": "04c853f6e0e20373d1262bf9a57a01f4123598797d73c8a52cdcc64cfe44845c",
"tags": [
"teamspeak"
],
"folder": "ts3-qs4sd",
"archiveBytes": 112416,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"ts3-qs4sd/main.py"
],
"native": [
{
"file": "ts3-qs4sd/bin/ts3-qs4sd.so",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"DialogBody",
"DialogButton",
"DialogFooter",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"SliderField",
"TextField",
"definePlugin",
"showModal"
],
"globals": [],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/ILadis/ts3-qs4sd",
"https://github.com/SteamDeckHomebrew/PluginLoader",
"https://github.com/TeamSpeak-Systems/ts3client-pluginsdk",
"https://github.com/cesanta/mongoose"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 62,
"name": "TS3 QuickAccess",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "Error: failed to fetch status"
}
],
"methods": [
"status"
]
},
"archiveValidation": {
"id": 62,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so"
},
"backend": "Python + native payload",
"hardware": "flatpak",
"nativePort": "TeamSpeak client plugin must match an ARM64 TeamSpeak client and SDK ABI, not merely rebuild the .so.",
"uiSurfaces": [],
"fakeFrame": {
"id": 62,
"sha256": "04c853f6e0e20373d1262bf9a57a01f4123598797d73c8a52cdcc64cfe44845c",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: ts3-qs4sd/bin/ts3-qs4sd.so."
}
},
{
"id": 63,
"name": "Free Loader",
"version": "1.6.0",
"sha256": "05208aee6f6ba824391d8ddc81b1168b2599a9711e7528cdaa789f6cc710b42a",
"tags": [
"epic",
"epic games store",
"free",
"game",
"games",
"gog",
"itch.io",
"library",
"loader",
"notifications",
"steam",
"store"
],
"folder": "free-loader",
"archiveBytes": 2349632,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"free-loader/main.py",
"free-loader/py_modules/amazon_feed.py",
"free-loader/py_modules/deal_db.py",
"free-loader/py_modules/request_lib.py",
"free-loader/py_modules/plugin_settings.py",
"free-loader/py_modules/__init__.py",
"free-loader/py_modules/amazon_feed.py",
"free-loader/py_modules/deal_db.py",
"free-loader/py_modules/request_lib.py",
"free-loader/py_modules/plugin_settings.py",
"free-loader/py_modules/__init__.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"QuickAccessTab",
"SliderField",
"SteamSpinner",
"ToggleField",
"showModal"
],
"globals": [
"DeckyPluginLoader",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/eikowagenknecht/lootscraper",
"https://github.com/jwhitlow45/free-loader",
"https://github.com/jwhitlow45/free-loader.git"
],
"status": "broken",
"reason": "Unsafe plugin archive member.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 63,
"name": "Free Loader",
"ready": true,
"error": null,
"logs": [],
"methods": [
"settings_read",
"logger_error",
"read_deals",
"logger_info"
]
},
"archiveValidation": {
"id": 63,
"accepted": false,
"reason": "Unsafe plugin archive member"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts"
],
"fakeFrame": {
"id": 63,
"sha256": "05208aee6f6ba824391d8ddc81b1168b2599a9711e7528cdaa789f6cc710b42a",
"archiveValidation": "Unsafe plugin archive member",
"result": "blocked",
"reason": "ValueError: Unsafe plugin archive member."
}
},
{
"id": 64,
"name": "Syncthing",
"version": "0.2.7",
"sha256": "27e47379c280c92253d5533435f57c33b332b215f866d2ac4493daf18ec0d1c4",
"tags": [
"backup",
"cloud",
"files",
"services",
"synchronization",
"syncthing"
],
"folder": "decky-syncthing",
"archiveBytes": 4283688,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-syncthing/main.py"
],
"native": [
{
"file": "decky-syncthing/bin/decky-syncthing-watchdog",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogControlsSectionHeader",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBarItem",
"QuickAccessTab",
"Router",
"SidebarNavigation",
"Spinner",
"SteamSpinner",
"TextField",
"Toggle",
"definePlugin",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak",
"gamescope"
],
"sourceURLs": [
"https://github.com/theCapypara/steamdeck-decky-syncthing",
"https://github.com/theCapypara/steamdeck-decky-syncthing.git"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 64,
"name": "Syncthing",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Decky Syncthing: failed loading state: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Decky Syncthing: failed loading state: Error: Audit blocks plugin network"
}
],
"methods": []
},
"archiveValidation": {
"id": 64,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog"
},
"backend": "Python + native payload",
"hardware": "flatpak; gamescope",
"nativePort": "The watchdog needs an ARM64 build, plus a supported Syncthing runtime/package and safe path validation.",
"uiSurfaces": [
"local/Steam routes"
],
"fakeFrame": {
"id": 64,
"sha256": "27e47379c280c92253d5533435f57c33b332b215f866d2ac4493daf18ec0d1c4",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-syncthing/bin/decky-syncthing-watchdog."
}
},
{
"id": 65,
"name": "Decky Terminal",
"version": "0.5.3",
"sha256": "7bd8765ca57663a24178b05687acb52c3723518ac9eac1c14419a87904c0a872",
"tags": [
"terminal"
],
"folder": "decky-terminal",
"archiveBytes": 641277,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-terminal/main.py",
"decky-terminal/py_modules/decky_terminal/common.py",
"decky-terminal/py_modules/decky_terminal/terminal.py",
"decky-terminal/py_modules/decky_terminal/nato.py",
"decky-terminal/py_modules/decky_terminal/__init__.py"
],
"native": [],
"steamClient": [],
"dfl": [
"DialogButton",
"Dropdown",
"Field",
"Focusable",
"GamepadButton",
"PanelSection",
"Router",
"SidebarNavigation",
"SteamSpinner",
"TextField",
"ToggleField",
"definePlugin",
"staticClasses",
"useParams"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Alex4386/decky-terminal",
"https://github.com/user-attachments/assets"
],
"status": "partial",
"reason": "Local routes initialize after parameter-route support; no shell commands were run.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 65,
"name": "Decky Terminal",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_terminals"
]
},
"archiveValidation": {
"id": 65,
"accepted": true,
"folder": "decky-terminal"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"Steam stores"
],
"fakeFrame": {
"id": 65,
"sha256": "7bd8765ca57663a24178b05687acb52c3723518ac9eac1c14419a87904c0a872",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 66,
"name": "PlayTime",
"version": "3.2.5",
"sha256": "10fc3beea48991c77cb02867e919b618d4cd6d5e9c6a6d0ccd5266c13214039f",
"tags": [
"playtime",
"time-tracking",
"utility"
],
"folder": "SDH-PlayTime",
"archiveBytes": 4215471,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"SDH-PlayTime/main.py",
"SDH-PlayTime/py_modules/time_tracking.py",
"SDH-PlayTime/py_modules/tests/helpers_test.py",
"SDH-PlayTime/py_modules/tests/main_test.py",
"SDH-PlayTime/py_modules/tests/utils/camel_case_test.py",
"SDH-PlayTime/py_modules/tests/association_manager_test.py",
"SDH-PlayTime/py_modules/tests/helpers.py",
"SDH-PlayTime/py_modules/tests/games.py",
"SDH-PlayTime/py_modules/tests/files_test.py",
"SDH-PlayTime/py_modules/tests/db/dao_test.py",
"SDH-PlayTime/py_modules/tests/db/migration_test.py",
"SDH-PlayTime/py_modules/tests/db/__init__.py",
"SDH-PlayTime/py_modules/tests/user_manager_test.py",
"SDH-PlayTime/py_modules/tests/tracking_manager_test.py",
"SDH-PlayTime/py_modules/tests/time_tracking_test.py",
"SDH-PlayTime/py_modules/tests/games_test.py",
"SDH-PlayTime/py_modules/tests/__init__.py",
"SDH-PlayTime/py_modules/dto/save_game_checksum.py",
"SDH-PlayTime/py_modules/dto/statistics/daily_statistics_for_period.py",
"SDH-PlayTime/py_modules/dto/time/add_time.py",
"SDH-PlayTime/py_modules/dto/time/__init__.py",
"SDH-PlayTime/py_modules/dto/time/apply_manual_time_correction.py",
"SDH-PlayTime/py_modules/dto/__init__.py",
"SDH-PlayTime/py_modules/utils/camel_case.py",
"SDH-PlayTime/py_modules/helpers.py",
"SDH-PlayTime/py_modules/tracking_manager.py",
"SDH-PlayTime/py_modules/games.py",
"SDH-PlayTime/py_modules/user_manager.py",
"SDH-PlayTime/py_modules/files.py",
"SDH-PlayTime/py_modules/db/dao.py",
"SDH-PlayTime/py_modules/db/migration.py",
"SDH-PlayTime/py_modules/db/__init__.py",
"SDH-PlayTime/py_modules/db/sqlite_db.py",
"SDH-PlayTime/py_modules/schemas/request.py",
"SDH-PlayTime/py_modules/schemas/response.py",
"SDH-PlayTime/py_modules/schemas/common.py",
"SDH-PlayTime/py_modules/schemas/__init__.py",
"SDH-PlayTime/py_modules/association_manager.py",
"SDH-PlayTime/py_modules/statistics.py",
"SDH-PlayTime/py_modules/__init__.py"
],
"native": [],
"steamClient": [
"Apps.RegisterForAppDetails",
"Input.RegisterForControllerInputMessages",
"Storage.GetJSON",
"Storage.SetObject",
"System",
"System.RegisterForOnResumeFromSuspend",
"System.RegisterForOnSuspendRequest",
"User",
"User.RegisterForLoginStateChange",
"User.RegisterForPrepareForSystemSuspendProgress",
"User.RegisterForResumeSuspendedGamesProgress"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Dropdown",
"Field",
"Focusable",
"Menu",
"MenuGroup",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ScrollPanelGroup",
"SidebarNavigation",
"Tabs",
"TextField",
"afterPatch",
"definePlugin",
"findClass",
"findSP",
"showContextMenu",
"showModal",
"staticClasses",
"useParams"
],
"globals": [
"SteamUIStore",
"appStore",
"collectionStore",
"routerHook",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/0u73r-h34v3n/PlayTime",
"https://github.com/pnpm/pnpm",
"https://github.com/your-username/PlayTime"
],
"status": "partial",
"reason": "Statistics and routed settings render with a detached real Frame library/user snapshot and actual Decky 3.3.0 amd64 backend in isolation. User selection and empty statistics reads pass. Running snapshots are now exposed, but its private MobX observation is unsupported; automatic recording and ARM64 backend remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 66,
"name": "PlayTime",
"ready": false,
"error": "Cannot read properties of undefined (reading 'm_mapApps')",
"logs": [
{
"kind": "error",
"message": "%c PlayTime %c ERROR background: #16a085; color: black; background: #FF000040; Impossible to get \"RunningApps\" observe. Events will not be attached."
},
{
"kind": "error",
"message": "%c PlayTime %c ERROR background: #16a085; color: black; background: #FF000040; Unable to get settings, saving defaults Error: Not found"
}
],
"methods": [
"fetch_playtime_information",
"statistics_for_last_two_weeks"
]
},
"archiveValidation": {
"id": 66,
"accepted": true,
"folder": "SDH-PlayTime"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 66,
"sha256": "10fc3beea48991c77cb02867e919b618d4cd6d5e9c6a6d0ccd5266c13214039f",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"libraryFollowUp": {
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
"frontendReady": true
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 67,
"name": "Battery Tracker",
"version": "0.2.0",
"sha256": "91c388d3c1b52079314045b79671ad55c767510658b6193f6936ed6cad383b94",
"tags": [
"root",
"template"
],
"folder": "steam-deck-battery-tracker",
"archiveBytes": 7570,
"api": "legacy",
"flags": [
"_root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"steam-deck-battery-tracker/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"definePlugin",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/class/power_supply/BAT1/capacity",
"/sys/class/power_supply/BAT1/current_now",
"/sys/class/power_supply/BAT1/status",
"/sys/class/power_supply/BAT1/voltage_now"
],
"sourceURLs": [
"https://github.com/safijari/steam-deck-battery-tracker",
"https://github.com/safijari/steam-deck-battery-tracker.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 67,
"name": "Battery Tracker",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "TypeError: Cannot read properties of undefined (reading 'map')"
},
{
"kind": "rejection",
"message": "TypeError: Cannot read properties of undefined (reading 'length')"
}
],
"methods": [
"set_app",
"get_recent_data"
]
},
"archiveValidation": {
"id": 67,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "/sys/class/power_supply/BAT1/capacity; /sys/class/power_supply/BAT1/current_now; /sys/class/power_supply/BAT1/status; /sys/class/power_supply/BAT1/voltage_now",
"uiSurfaces": [
"local/Steam routes"
],
"fakeFrame": {
"id": 67,
"sha256": "91c388d3c1b52079314045b79671ad55c767510658b6193f6936ed6cad383b94",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 68,
"name": "Wine Cellar",
"version": "0.2.1",
"sha256": "7e077b933c234414d172b5c6d1c804b026bf39fa4e18e6663495a282637031e8",
"tags": [
"boxtron",
"luxtorpeda",
"proton",
"proton-cachyos",
"proton-ge",
"wine"
],
"folder": "decky-wine-cellar",
"archiveBytes": 1936664,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-wine-cellar/main.py"
],
"native": [
{
"file": "decky-wine-cellar/bin/backend",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Apps.GetAvailableCompatTools",
"Apps.SpecifyCompatTool",
"InstallFolder.GetInstallFolders",
"Settings.GetGlobalCompatTools",
"User.StartRestart"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogControlsSectionHeader",
"Dropdown",
"Field",
"Focusable",
"GamepadButton",
"Menu",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBar",
"Router",
"ScrollPanelGroup",
"SidebarNavigation",
"TextField",
"definePlugin",
"showContextMenu",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/FlashyReese/decky-wine-cellar",
"https://github.com/FlashyReese/decky-wine-cellar.git"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend. Frontend audit failed: Audit blocks WebSocket.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 68,
"name": "Wine Cellar",
"ready": false,
"error": "Audit blocks WebSocket",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 68,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "Native backend needs an ARM64 build; direct websocket and Wine runtime assumptions also need integration.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 68,
"sha256": "7e077b933c234414d172b5c6d1c804b026bf39fa4e18e6663495a282637031e8",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-wine-cellar/bin/backend. Frontend audit failed: Audit blocks WebSocket."
}
},
{
"id": 70,
"name": "MicroSDeck",
"version": "0.11.2",
"sha256": "adec614a26864f6747245bd78b45c7e4b2fa46200b5e7aa5f55f610d2daad870",
"tags": [
"manager",
"microsd",
"sdcard"
],
"folder": "MicroSDeck",
"archiveBytes": 7124958,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"MicroSDeck/main.py"
],
"native": [
{
"file": "MicroSDeck/bin/backend",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ConfirmModal",
"DialogButton",
"DialogCheckbox",
"Field",
"Focusable",
"Menu",
"MenuItem",
"ModalPosition",
"Navigation",
"PanelSection",
"ReorderableList",
"ScrollPanelGroup",
"SideMenu",
"SidebarNavigation",
"SimpleModal",
"TextField",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"createReactTreePatcher",
"definePlugin",
"findInReactTree",
"findModule",
"findModuleChild",
"gamepadDialogClasses",
"quickAccessControlsClasses",
"showContextMenu",
"showModal",
"staticClasses"
],
"globals": [
"collectionStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/CEbbinghaus/MicroSDeck"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 70,
"name": "MicroSDeck",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "%c MicroSDeck %c Error: %c Failed to fetch \"http://localhost:12412/health\" with error Error: Audit blocks plugin network background: #165da0; color: black; background: #d63a57; color: black; background: transparent; color:#6e6e6e; [object Object]"
},
{
"kind": "error",
"message": "Error: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7B%24%24typeof%2C%20type%2C%20key%2C%20ref%2C%20props%7D for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
},
{
"kind": "error",
"message": "Error: Minified React error #31; visit https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7B%24%24typeof%2C%20type%2C%20key%2C%20ref%2C%20props%7D for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
}
],
"methods": []
},
"archiveValidation": {
"id": 70,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "Native backend needs an ARM64 build and block-device/mount permission audit; no storage actions were run.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 70,
"sha256": "adec614a26864f6747245bd78b45c7e4b2fa46200b5e7aa5f55f610d2daad870",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: MicroSDeck/bin/backend."
}
},
{
"id": 72,
"name": "ScreenshotUploader",
"version": "0.0.3",
"sha256": "60152ca9a49b3a7c4fe1ac89a2ccb3bada8c84de2c1869591e6e573165d9dd6d",
"tags": [
"screenshots",
"uploader"
],
"folder": "DeckScreenshotManager",
"archiveBytes": 24595,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"DeckScreenshotManager/main.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForScreenshotNotification",
"Screenshots.UploadLocalScreenshot"
],
"dfl": [
"DropdownItem",
"Field",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"findModuleChild",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/codehz/DeckScreenshotManager",
"https://github.com/codehz/DeckScreenshotManager.git"
],
"status": "partial",
"reason": "Initializer succeeds; screenshot upload requires external credentials/network and was not run.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 72,
"name": "ScreenshotUploader",
"ready": true,
"error": null,
"logs": [],
"methods": [
"getCounter",
"getSetting"
]
},
"archiveValidation": {
"id": 72,
"accepted": true,
"folder": "DeckScreenshotManager"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 72,
"sha256": "60152ca9a49b3a7c4fe1ac89a2ccb3bada8c84de2c1869591e6e573165d9dd6d",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 73,
"name": "EmuDecky",
"version": "1.0.2-1",
"sha256": "ff19cac1cab713e7f56bd5b850d5986cef4f2f9933303432e9c66de19868a3ce",
"tags": [
"EmuDeck"
],
"folder": "EmuDecky",
"archiveBytes": 852322,
"api": "legacy",
"flags": [
"debug",
"_root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"EmuDecky/main.py",
"EmuDecky/py.py"
],
"native": [
{
"file": "EmuDecky/bin/hello",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"Dropdown",
"Menu",
"MenuItem",
"PanelSection",
"PanelSectionRow",
"Router",
"SteamSpinner",
"ToggleField",
"definePlugin",
"showContextMenu",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/EmuDeck/EmuDecky.git",
"https://github.com/SteamDeckHomebrew/decky-plugin-template"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 73,
"name": "EmuDecky",
"ready": true,
"error": null,
"logs": [
{
"kind": "rejection",
"message": "SyntaxError: Unexpected token 'R', \"Read-only \"... is not valid JSON"
}
],
"methods": [
"getSettings"
]
},
"archiveValidation": {
"id": 73,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "Published bin/hello is x86_64 even if unused; upstream must remove it or publish an ARM64 archive, plus remove root dependency.",
"uiSurfaces": [
"local/Steam routes",
"toasts"
],
"fakeFrame": {
"id": 73,
"sha256": "ff19cac1cab713e7f56bd5b850d5986cef4f2f9933303432e9c66de19868a3ce",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: EmuDecky/bin/hello."
}
},
{
"id": 74,
"name": "KDE Connect",
"version": "0.1.0-1",
"sha256": "5f7decb4de48290f8eec15937486c9611aec0d25256515c97f98cf7ba30c79a4",
"tags": [
"control"
],
"folder": "kdeconnect",
"archiveBytes": 5981,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"kdeconnect/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/safijari/Decky-KDE-Connect"
],
"status": "partial",
"reason": "Initializer succeeds; KDE Connect installation/pairing/file transfers unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 74,
"name": "KDE Connect",
"ready": true,
"error": null,
"logs": [],
"methods": [
"is_enabled"
]
},
"archiveValidation": {
"id": 74,
"accepted": true,
"folder": "kdeconnect"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 74,
"sha256": "5f7decb4de48290f8eec15937486c9611aec0d25256515c97f98cf7ba30c79a4",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 75,
"name": "Reshadeck",
"version": "0.2.0",
"sha256": "f7f79c3f5d12d92d14adfdebad62053d6e10982fb7b662b6777cb06945dc4281",
"tags": [
"control"
],
"folder": "reshadeck",
"archiveBytes": 25044,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"reshadeck/main.py"
],
"native": [],
"steamClient": [
"Input.RegisterForControllerStateChanges",
"System.RegisterForOnResumeFromSuspend",
"System.RegisterForOnSuspendRequest"
],
"dfl": [
"ButtonItem",
"Dropdown",
"PanelSection",
"PanelSectionRow",
"definePlugin",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"gamescope"
],
"sourceURLs": [
"https://github.com/Matsilagi/RSRetroArch",
"https://github.com/safijari/reshadeck"
],
"status": "partial",
"reason": "Initializer succeeds; ReShade deployment into Proton games is unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 75,
"name": "Reshadeck",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_shader_list",
"get_screensaver_list",
"get_current_shader",
"get_current_screensaver"
]
},
"archiveValidation": {
"id": 75,
"accepted": true,
"folder": "reshadeck"
},
"backend": "Python",
"hardware": "gamescope",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 75,
"sha256": "f7f79c3f5d12d92d14adfdebad62053d6e10982fb7b662b6777cb06945dc4281",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 76,
"name": "CheatDeck",
"version": "1.1.6",
"sha256": "6dfe1f821b0cfe2a61c95e49efd6cb2587d79ff3d1e101e14fa80c12c7f6d89f",
"tags": [
"cheat",
"trainer"
],
"folder": "CheatDeck",
"archiveBytes": 1402211,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"CheatDeck/main.py"
],
"native": [],
"steamClient": [
"Apps.RegisterForAppDetails",
"Apps.SetAppLaunchOptions"
],
"dfl": [
"DialogBodyText",
"DialogButton",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SidebarNavigation",
"TextField",
"ToggleField",
"afterPatch",
"definePlugin",
"fakeRenderComponent",
"findInReactTree",
"findInTree",
"findModuleByExport",
"showModal",
"staticClasses",
"useParams"
],
"globals": [
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/DeckThemes/SDH-CssLoader",
"https://github.com/SheffeyG/CheatDeck",
"https://github.com/SheffeyG/CheatDeck.git",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/SteamGridDB/decky-steamgriddb",
"https://github.com/jurassicplayer/decky-autosuspend"
],
"status": "broken",
"reason": "Frontend audit failed: Cannot convert undefined or null to object.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 76,
"name": "CheatDeck",
"ready": false,
"error": "Cannot convert undefined or null to object",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 76,
"accepted": true,
"folder": "CheatDeck"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 76,
"sha256": "6dfe1f821b0cfe2a61c95e49efd6cb2587d79ff3d1e101e14fa80c12c7f6d89f",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 77,
"name": "BT Wake Control",
"version": "1.2.0",
"sha256": "baed8ba21589fec8cbeff6c31a83f010664ea3bbeac3d8e71d64e9a9f63fd346",
"tags": [
"bluetooth",
"utility",
"wake"
],
"folder": "decky-bluetooth-wake-control",
"archiveBytes": 14357,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-bluetooth-wake-control/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"IconsModule",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/devices/virtual/dmi/id/board_name",
"/sys/devices/virtual/dmi/id/board_vendor",
"bluetoothctl"
],
"sourceURLs": [],
"status": "partial",
"reason": "Initializer succeeds; backend uses DMI board paths and Bluetooth wake permissions, unverified on ARM64 Frame.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 77,
"name": "BT Wake Control",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_status"
]
},
"archiveValidation": {
"id": 77,
"accepted": true,
"folder": "decky-bluetooth-wake-control"
},
"backend": "Python",
"hardware": "/sys/devices/virtual/dmi/id/board_name; /sys/devices/virtual/dmi/id/board_vendor; bluetoothctl",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 77,
"sha256": "baed8ba21589fec8cbeff6c31a83f010664ea3bbeac3d8e71d64e9a9f63fd346",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 78,
"name": "Brightness Bar",
"version": "1.0.4",
"sha256": "d7aaf6481a24c32c847aa1cd64cf23ba6fe73c5dc166587a2303494a42ae0486",
"tags": [
"brightness",
"display"
],
"folder": "decky-brightness-bar",
"archiveBytes": 20755,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-brightness-bar/main.py"
],
"native": [],
"steamClient": [
"System.Display.RegisterForBrightnessChanges"
],
"dfl": [
"ButtonItem",
"ColorPickerModal",
"PanelSection",
"PanelSectionRow",
"SliderField",
"ToggleField",
"definePlugin",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/rasitayaz/decky-brightness-bar",
"https://github.com/rasitayaz/decky-brightness-bar.git"
],
"status": "na",
"reason": "Not supported on Frame: Targets Steam/QAM brightness shortcuts and a global Steam overlay; neither is attached to the Framey panel.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 78,
"name": "Brightness Bar",
"ready": true,
"error": null,
"logs": [],
"methods": [
"settings_load"
]
},
"archiveValidation": {
"id": 78,
"accepted": true,
"folder": "decky-brightness-bar"
},
"backend": "Python",
"hardware": "Targets Steam/QAM brightness shortcuts and a global Steam overlay; neither is attached to the Framey panel.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 78,
"sha256": "d7aaf6481a24c32c847aa1cd64cf23ba6fe73c5dc166587a2303494a42ae0486",
"archiveValidation": "accepted",
"result": "blocked",
"reason": "ValueError: Not supported on Frame: Targets Steam/QAM brightness shortcuts and a global Steam overlay; neither is attached to the Framey panel."
}
},
{
"id": 79,
"name": "Decky Notifications",
"version": "1.0.1",
"sha256": "3b22dc337209615f91da566ceb968793dc163b2e509de8535fb5d0fc55817312",
"tags": [
"KDE Connect",
"Notifications"
],
"folder": "decky-notifications",
"archiveBytes": 23222,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-notifications/main.py",
"decky-notifications/py_modules/connector/const.py",
"decky-notifications/py_modules/connector/packet/base.py",
"decky-notifications/py_modules/connector/packet/registry.py",
"decky-notifications/py_modules/connector/packet/handler/ping.py",
"decky-notifications/py_modules/connector/packet/handler/notification.py",
"decky-notifications/py_modules/connector/packet/handler/__init__.py",
"decky-notifications/py_modules/connector/packet/handler/identity.py",
"decky-notifications/py_modules/connector/packet/handler/pair.py",
"decky-notifications/py_modules/connector/packet/__init__.py",
"decky-notifications/py_modules/connector/http.py",
"decky-notifications/py_modules/connector/context.py",
"decky-notifications/py_modules/connector/storage.py",
"decky-notifications/py_modules/connector/service.py",
"decky-notifications/py_modules/connector/crypto.py",
"decky-notifications/py_modules/connector/__init__.py",
"decky-notifications/py_modules/connector/packet_old.py",
"decky-notifications/py_modules/connector/__main__.py",
"decky-notifications/py_modules/connector/discovery.py",
"decky-notifications/py_modules/connector/queue.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Menu",
"MenuItem",
"PanelSection",
"PanelSectionRow",
"definePlugin",
"showContextMenu",
"staticClasses"
],
"globals": [
"DeckyPluginLoader",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Firemoon777/decky-notifications",
"https://github.com/Firemoon777/decky-notifications.git"
],
"status": "partial",
"reason": "Initializer succeeds; device/account setup and notification delivery unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 79,
"name": "Decky Notifications",
"ready": true,
"error": null,
"logs": [],
"methods": [
"device_list",
"notification_list",
"get_event"
]
},
"archiveValidation": {
"id": 79,
"accepted": true,
"folder": "decky-notifications"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 79,
"sha256": "3b22dc337209615f91da566ceb968793dc163b2e509de8535fb5d0fc55817312",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 80,
"name": "MagicBlack",
"version": "2.0.2",
"sha256": "7177850f8a818783525430b9f2fc4b63f49b9e665a63df2bd8c0abb660d9baad",
"tags": [
"black",
"off",
"oled",
"overlay",
"screen",
"shortcut"
],
"folder": "MagicBlackDecky",
"archiveBytes": 143757,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"MagicBlackDecky/main.py",
"MagicBlackDecky/py_modules/mp/settings.py"
],
"native": [],
"steamClient": [
"System.Audio.GetDevices",
"System.Audio.SetDeviceVolume"
],
"dfl": [
"DialogButton",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SliderField",
"ToggleField",
"definePlugin",
"findModuleChild",
"findModuleExport",
"gamepadDialogClasses",
"joinClassNames",
"quickAccessMenuClasses",
"showModal",
"staticClasses"
],
"globals": [
"SteamUIStore",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/steam3d/MagicBlackDecky",
"https://github.com/steam3d/MagicBlackDecky.git"
],
"status": "na",
"reason": "Not supported on Frame: Targets a global Steam Deck screen-black overlay; the isolated panel cannot black out the Frame compositor.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 80,
"name": "MagicBlack",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[MagicBlack] Failed to load allow_touch setting Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[MagicBlack] Failed to load mute_mic setting Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[MagicBlack] Failed to load mute_sound setting Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[MagicBlack] Failed to load off_anykey setting Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[MagicBlack] Failed to load off_upon_waking setting Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[MagicBlack] Failed to load overlay_opacity number setting Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"load_setting"
]
},
"archiveValidation": {
"id": 80,
"accepted": true,
"folder": "MagicBlackDecky"
},
"backend": "Python",
"hardware": "Targets a global Steam Deck screen-black overlay; the isolated panel cannot black out the Frame compositor.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 80,
"sha256": "7177850f8a818783525430b9f2fc4b63f49b9e665a63df2bd8c0abb660d9baad",
"archiveValidation": "accepted",
"result": "blocked",
"reason": "ValueError: Not supported on Frame: Targets a global Steam Deck screen-black overlay; the isolated panel cannot black out the Frame compositor."
}
},
{
"id": 81,
"name": "IsThereAnyDeal for Deck",
"version": "1.1.1",
"sha256": "18e133b2e6203f16fd1ee2ed83b5a90bad34491515bef7ec1c82d525f0bfadef",
"tags": [
"GameDeals",
"IsThereAnyDeal"
],
"folder": "isthereanydeal-for-deck",
"archiveBytes": 38911,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"isthereanydeal-for-deck/main.py"
],
"native": [],
"steamClient": [
"User.GetIPCountry"
],
"dfl": [
"DialogButton",
"DropdownItem",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/JtdeGraaf/IsThereAnyDeal-DeckyPlugin",
"https://github.com/JtdeGraaf/IsThereAnyDeal-DeckyPlugin.git"
],
"status": "partial",
"reason": "Country settings render and select the real Frame Steam country through the read-only bridge. Settings writes, deal lookups and Steam page integration remain unverified; plugin backend calls were denied.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 81,
"name": "IsThereAnyDeal for Deck",
"ready": true,
"error": null,
"logs": [],
"methods": [
"settings_load",
"settings_save"
]
},
"archiveValidation": {
"id": 81,
"accepted": true,
"folder": "isthereanydeal-for-deck"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 81,
"sha256": "18e133b2e6203f16fd1ee2ed83b5a90bad34491515bef7ec1c82d525f0bfadef",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 82,
"name": "MagicPods",
"version": "2.0.21",
"sha256": "abe2eef5788cb3ff6e73fcb9783e30a54b127e28c761a9bf99e64ab5fc4be9ab",
"tags": [
"airpods",
"battery",
"beats",
"bluetooth",
"headphones"
],
"folder": "MagicPodsDecky",
"archiveBytes": 885293,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"MagicPodsDecky/main.py",
"MagicPodsDecky/py_modules/mp/extcore.py",
"MagicPodsDecky/py_modules/mp/core.py",
"MagicPodsDecky/py_modules/mp/settings.py",
"MagicPodsDecky/py_modules/mp/player.py"
],
"native": [
{
"file": "MagicPodsDecky/bin/magicpodscore",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Input.RegisterForControllerStateChanges",
"System.Audio.GetDevices",
"System.Audio.RegisterForDeviceVolumeChanged",
"System.Audio.SetDeviceVolume",
"System.Bluetooth",
"System.Bluetooth.RegisterForStateChanges",
"System.Bluetooth.SetEnabled"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Field",
"Focusable",
"Menu",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"Tabs",
"ToggleField",
"afterPatch",
"definePlugin",
"findClassModule",
"findModuleChild",
"findModuleDetailsByExport",
"findSP",
"gamepadDialogClasses",
"gamepadSliderClasses",
"getGamepadNavigationTrees",
"joinClassNames",
"quickAccessMenuClasses",
"showContextMenu",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/steam3d/MagicPodsDecky",
"https://github.com/steam3d/MagicPodsDecky.git"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore. Frontend audit failed: Audit blocks WebSocket.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 82,
"name": "MagicPods",
"ready": false,
"error": "Audit blocks WebSocket",
"logs": [],
"methods": [
"load_setting",
"logger_react"
]
},
"archiveValidation": {
"id": 82,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "magicpodscore requires an upstream ARM64 artifact/source and protocol tests; frontend uses a direct websocket.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 82,
"sha256": "abe2eef5788cb3ff6e73fcb9783e30a54b127e28c761a9bf99e64ab5fc4be9ab",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: MagicPodsDecky/bin/magicpodscore. Frontend audit failed: Audit blocks WebSocket."
}
},
{
"id": 84,
"name": "Junk-Store",
"version": "1.1.13",
"sha256": "f7ad2a0103c85bf308929b2e96ec9aeeb0d76bcc6ae97eb1e4b5f31ffba0cbb1",
"tags": [
"88mph",
"Epic",
"Launcher"
],
"folder": "Junk-Store",
"archiveBytes": 134003,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Junk-Store/main.py",
"Junk-Store/scripts/epic-config.py",
"Junk-Store/scripts/get-json.py",
"Junk-Store/scripts/fetch_rss.py",
"Junk-Store/scripts/shared/GameSet.py",
"Junk-Store/scripts/shared/GamesDb.py",
"Junk-Store/scripts/epic.py"
],
"native": [],
"steamClient": [
"Apps.AddShortcut",
"Apps.GetAvailableCompatTools",
"Apps.RemoveShortcut",
"Apps.RunGame",
"Apps.SetAppLaunchOptions",
"Apps.SetCustomArtworkForApp",
"Apps.SetShortcutExe",
"Apps.SetShortcutLaunchOptions",
"Apps.SetShortcutName",
"Apps.SetShortcutStartDir",
"Apps.SpecifyCompatTool",
"GameSessions.RegisterForAppLifetimeNotifications",
"Input.RegisterForControllerInputMessages",
"Installs.OpenInstallWizard"
],
"dfl": [
"Button",
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogLabel",
"Dropdown",
"Field",
"Focusable",
"GamepadButton",
"Marquee",
"Menu",
"MenuItem",
"ModalPosition",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBar",
"ScrollPanelGroup",
"SidebarNavigation",
"SliderField",
"Spinner",
"SteamSpinner",
"Tabs",
"TextField",
"ToggleField",
"afterPatch",
"definePlugin",
"findClassModule",
"gamepadDialogClasses",
"gamepadTabbedPageClasses",
"joinClassNames",
"quickAccessControlsClasses",
"quickAccessMenuClasses",
"scrollPanelClasses",
"showContextMenu",
"showModal",
"sleep",
"staticClasses",
"useParams"
],
"globals": [
"Router",
"SteamUIStore",
"appDetailsStore",
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"sudo"
],
"sourceURLs": [
"https://github.com/ebenbruyns/junkstore",
"https://github.com/ebenbruyns/junkstore.git"
],
"status": "partial",
"reason": "Official Decky 3.3.0 ARM64 static menu/backend calls pass; local Chromium Games/Epic navigation, About/Dependencies tabs, Back and reopen render with real Frame library metadata. Legendary is absent; dependency install, login, game operations, RSS, optional websocket and worn VR remain unverified. Existing installs need update/reinstall for script permissions.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"isolated Linux backend",
"real Frame SSH"
],
"browser": {
"id": 84,
"name": "Junk-Store",
"ready": true,
"error": null,
"logs": [],
"methods": [
"fetch_rss_feed",
"execute_action"
]
},
"archiveValidation": {
"id": 84,
"accepted": true,
"folder": "Junk-Store"
},
"backend": "Python",
"hardware": "sudo",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 84,
"sha256": "f7ad2a0103c85bf308929b2e96ec9aeeb0d76bcc6ae97eb1e4b5f31ffba0cbb1",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"localBackend": {
"runtime": "Decky 3.3.0 amd64",
"evidence": "docs/evidence/framey-script-entrypoints-2026-10-26.json",
"before": "init and InitActions return inner Type:Error",
"after": "init Type:Success; InitActions Type:ActionSet/MainMenu"
},
"realFrame": {
"runtime": "Decky 3.3.0 ARM64",
"evidence": "docs/evidence/framey-script-entrypoints-2026-10-26.json",
"staticActions": [
"JunkStoreActions/GetContent",
"JunkStoreActions/GetEpicActions",
"MainMenu/GetContent",
"MainMenu/JunkStoreInit",
"init/InitActions"
],
"browser": "main menu; Games/Epic static tab; back; close/reopen",
"installedContext": {
"evidence": "docs/evidence/framey-installed-context-2026-10-26.json",
"field": "local_per_client_data.installed",
"browser": "About/Dependencies, Back, close/reopen; real library projection; static ARM64 backend calls",
"installedUnknown": "preserved as undefined; no fabricated false"
}
}
},
{
"id": 85,
"name": "Decky-Undervolt",
"version": "1.0.8",
"sha256": "2df6f8095acf2c6c71724dbbce8ebd34180880a3411f1a236b5b2143863dbc42",
"tags": [
"battery-saving",
"curve optimizer",
"performance",
"root",
"ryzenadj",
"temperature",
"undervolt"
],
"folder": "Decky-Undervolt",
"archiveBytes": 575970,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Decky-Undervolt/main.py"
],
"native": [
{
"file": "Decky-Undervolt/bin/libryzenadj.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Undervolt/bin/ryzenadj",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications",
"System.RegisterForOnResumeFromSuspend"
],
"dfl": [
"ButtonItem",
"DialogButton",
"DropdownItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"SliderField",
"TextField",
"ToggleField",
"definePlugin"
],
"globals": [
"Router",
"appStore",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [
"ryzenadj",
"sudo"
],
"sourceURLs": [
"https://github.com/FlyGoat/RyzenAdj",
"https://github.com/totallynotbakadestroyer/Decky-Undervolt"
],
"status": "na",
"reason": "Not supported on Frame: RyzenAdj Curve Optimizer requires an AMD CPU; Frame is ARM64.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 85,
"name": "Decky-Undervolt",
"ready": true,
"error": null,
"logs": [],
"methods": [
"init"
]
},
"archiveValidation": {
"id": 85,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: Decky-Undervolt/bin/libryzenadj.so"
},
"backend": "Python + native payload",
"hardware": "RyzenAdj Curve Optimizer requires an AMD CPU; Frame is ARM64.",
"nativePort": "RyzenAdj is AMD-specific and cannot be ported to control the Frame SoC.",
"uiSurfaces": [
"local/Steam routes",
"Steam stores"
],
"fakeFrame": {
"id": 85,
"sha256": "2df6f8095acf2c6c71724dbbce8ebd34180880a3411f1a236b5b2143863dbc42",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Decky-Undervolt/bin/libryzenadj.so",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 87,
"name": "ScreenSaver",
"version": "1.1.2",
"sha256": "5e61f20d53e244c55a0375d6299b16cdb9701c222519c7fecd726f1926091822",
"tags": [
"dbus",
"screensaver"
],
"folder": "DeckyInhibitScreenSaver",
"archiveBytes": 143762,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"DeckyInhibitScreenSaver/main.py",
"DeckyInhibitScreenSaver/dbus_next/glib/message_bus.py",
"DeckyInhibitScreenSaver/dbus_next/glib/proxy_object.py",
"DeckyInhibitScreenSaver/dbus_next/glib/__init__.py",
"DeckyInhibitScreenSaver/dbus_next/_private/unmarshaller.py",
"DeckyInhibitScreenSaver/dbus_next/_private/util.py",
"DeckyInhibitScreenSaver/dbus_next/_private/constants.py",
"DeckyInhibitScreenSaver/dbus_next/_private/marshaller.py",
"DeckyInhibitScreenSaver/dbus_next/_private/address.py",
"DeckyInhibitScreenSaver/dbus_next/_private/__init__.py",
"DeckyInhibitScreenSaver/dbus_next/signature.py",
"DeckyInhibitScreenSaver/dbus_next/auth.py",
"DeckyInhibitScreenSaver/dbus_next/introspection.py",
"DeckyInhibitScreenSaver/dbus_next/aio/message_bus.py",
"DeckyInhibitScreenSaver/dbus_next/aio/proxy_object.py",
"DeckyInhibitScreenSaver/dbus_next/aio/__init__.py",
"DeckyInhibitScreenSaver/dbus_next/constants.py",
"DeckyInhibitScreenSaver/dbus_next/message_bus.py",
"DeckyInhibitScreenSaver/dbus_next/service.py",
"DeckyInhibitScreenSaver/dbus_next/__version__.py",
"DeckyInhibitScreenSaver/dbus_next/message.py",
"DeckyInhibitScreenSaver/dbus_next/validators.py",
"DeckyInhibitScreenSaver/dbus_next/proxy_object.py",
"DeckyInhibitScreenSaver/dbus_next/__init__.py",
"DeckyInhibitScreenSaver/dbus_next/errors.py",
"DeckyInhibitScreenSaver/lib/x/etree/cElementTree.py",
"DeckyInhibitScreenSaver/lib/x/etree/ElementInclude.py",
"DeckyInhibitScreenSaver/lib/x/etree/ElementTree.py",
"DeckyInhibitScreenSaver/lib/x/etree/__init__.py",
"DeckyInhibitScreenSaver/lib/x/etree/ElementPath.py",
"DeckyInhibitScreenSaver/lib/x/parsers/expat.py",
"DeckyInhibitScreenSaver/lib/x/parsers/__init__.py",
"DeckyInhibitScreenSaver/lib/x/sax/xmlreader.py",
"DeckyInhibitScreenSaver/lib/x/sax/handler.py",
"DeckyInhibitScreenSaver/lib/x/sax/_exceptions.py",
"DeckyInhibitScreenSaver/lib/x/sax/expatreader.py",
"DeckyInhibitScreenSaver/lib/x/sax/saxutils.py",
"DeckyInhibitScreenSaver/lib/x/sax/__init__.py",
"DeckyInhibitScreenSaver/lib/x/__init__.py",
"DeckyInhibitScreenSaver/lib/x/dom/expatbuilder.py",
"DeckyInhibitScreenSaver/lib/x/dom/domreg.py",
"DeckyInhibitScreenSaver/lib/x/dom/NodeFilter.py",
"DeckyInhibitScreenSaver/lib/x/dom/minicompat.py",
"DeckyInhibitScreenSaver/lib/x/dom/pulldom.py",
"DeckyInhibitScreenSaver/lib/x/dom/minidom.py",
"DeckyInhibitScreenSaver/lib/x/dom/xmlbuilder.py",
"DeckyInhibitScreenSaver/lib/x/dom/__init__.py"
],
"native": [],
"steamClient": [
"Input.RegisterForControllerInputMessages",
"Input.RegisterForControllerStateChanges",
"Settings.SetSetting",
"System.RegisterForOnSuspendRequest",
"System.UpdateSettings",
"User.RegisterForPrepareForSystemSuspendProgress"
],
"dfl": [
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"findModuleChild",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Guldoman/mpv_inhibit_gnome",
"https://github.com/altdesktop/python-dbus-next",
"https://github.com/xfangfang/DeckyInhibitScreenSaver",
"https://github.com/xfangfang/DeckyInhibitScreenSaver.git"
],
"status": "partial",
"reason": "Initializer succeeds; global screen overlay and idle/suspend integration have no verified VR target.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 87,
"name": "ScreenSaver",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_settings",
"get_event"
]
},
"archiveValidation": {
"id": 87,
"accepted": true,
"folder": "DeckyInhibitScreenSaver"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 87,
"sha256": "5e61f20d53e244c55a0375d6299b16cdb9701c222519c7fecd726f1926091822",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 88,
"name": "steamdeck-input-disabler",
"version": "1.0.2",
"sha256": "321426191c123a354d66d5db57dc2a42eb7f3516bab24a294516b606baf94703",
"tags": [
"bluetooth",
"controller",
"fix",
"root",
"utility"
],
"folder": "steamdeck-input-disabler",
"archiveBytes": 13580,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"steamdeck-input-disabler/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/bus/usb/drivers/usbhid/bind",
"bluetoothctl"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/scawp/Steam-Deck.Auto-Disable-Steam-Controller"
],
"status": "na",
"reason": "Not supported on Frame: Targets the built-in Steam Deck USB gamepad; Frame has different controllers.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 88,
"name": "steamdeck-input-disabler",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 88,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "Targets the built-in Steam Deck USB gamepad; Frame has different controllers.",
"uiSurfaces": [],
"fakeFrame": {
"id": 88,
"sha256": "321426191c123a354d66d5db57dc2a42eb7f3516bab24a294516b606baf94703",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 89,
"name": "DeckySpy",
"version": "0.6.7",
"sha256": "2d431a89826ed5cf3fd37258373eb3b46c841c39795aa8b25f83e59f4eee87c7",
"tags": [
"utility"
],
"folder": "decky-spy",
"archiveBytes": 108997,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-spy/main.py",
"decky-spy/py_modules/click/shell_completion.py",
"decky-spy/py_modules/click/utils.py",
"decky-spy/py_modules/click/formatting.py",
"decky-spy/py_modules/click/_textwrap.py",
"decky-spy/py_modules/click/exceptions.py",
"decky-spy/py_modules/click/__init__.py",
"decky-spy/py_modules/click/core.py",
"decky-spy/py_modules/click/_termui_impl.py",
"decky-spy/py_modules/click/globals.py",
"decky-spy/py_modules/click/types.py",
"decky-spy/py_modules/click/_winconsole.py",
"decky-spy/py_modules/click/_compat.py",
"decky-spy/py_modules/click/termui.py",
"decky-spy/py_modules/click/testing.py",
"decky-spy/py_modules/click/parser.py",
"decky-spy/py_modules/click/decorators.py",
"decky-spy/py_modules/__init__.py"
],
"native": [],
"steamClient": [
"System.RegisterForOnResumeFromSuspend"
],
"dfl": [
"ButtonItem",
"Field",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"Router",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Seraphli/decky-spy",
"https://github.com/Seraphli/decky-spy.git"
],
"status": "partial",
"reason": "Initializer succeeds; account tokens and external service integration were not exercised.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 89,
"name": "DeckySpy",
"ready": true,
"error": null,
"logs": [],
"methods": [
"log",
"get_token",
"log_err",
"check_token"
]
},
"archiveValidation": {
"id": 89,
"accepted": true,
"folder": "decky-spy"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 89,
"sha256": "2d431a89826ed5cf3fd37258373eb3b46c841c39795aa8b25f83e59f4eee87c7",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 90,
"name": "Picture in Picture",
"version": "1.0.0",
"sha256": "e0115148305cd216e50bcfec8851fe3d1c6f3d36ae2f92113c199fc1bb2388e3",
"tags": [
"movies",
"pip",
"tv",
"video",
"web"
],
"folder": "decky-pip",
"archiveBytes": 513088,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DropdownItem",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"TextField",
"ToggleField",
"findModuleChild",
"getGamepadNavigationTrees",
"quickAccessMenuClasses",
"showModal"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/rossimo/decky-pip",
"https://github.com/rossimo/decky-pip.git"
],
"status": "partial",
"reason": "Initializer succeeds; global picture-in-picture injection cannot escape the isolated panel.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 90,
"name": "Picture in Picture",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 90,
"accepted": true,
"folder": "decky-pip"
},
"backend": "no Python/native backend found",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 90,
"sha256": "e0115148305cd216e50bcfec8851fe3d1c6f3d36ae2f92113c199fc1bb2388e3",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 91,
"name": "PlayCount",
"version": "1.7",
"sha256": "d53d0b406d275312e9b6b586815b622c77a6657dfb75256441ba82337c4039b6",
"tags": [
"Currently Playing",
"Player Count",
"Steam Charts",
"SteamDB"
],
"folder": "playcount-decky",
"archiveBytes": 1052294,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [],
"native": [],
"steamClient": [],
"dfl": [
"Button",
"ButtonItem",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogHeader",
"DropdownItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SliderField",
"Tabs",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"createReactTreePatcher",
"definePlugin",
"findInReactTree",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/itsOwen/playcount-decky",
"https://github.com/itsOwen/playcount-decky.git"
],
"status": "partial",
"reason": "Initializer succeeds; Steam game-page play-count patch has no supported VR target.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 91,
"name": "PlayCount",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 91,
"accepted": true,
"folder": "playcount-decky"
},
"backend": "no Python/native backend found",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 91,
"sha256": "d53d0b406d275312e9b6b586815b622c77a6657dfb75256441ba82337c4039b6",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 92,
"name": "Crosshair",
"version": "1.1.0",
"sha256": "19544af369622dac243874de99bc30485d1d8a27241fb05ca299b2d1dd39b2e0",
"tags": [
"aim",
"crosshair",
"HUD",
"overlay"
],
"folder": "Crosshair",
"archiveBytes": 444165,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Crosshair/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/xXJSONDeruloXx/precision-crosshair-hud",
"https://github.com/xXJSONDeruloXx/precision-crosshair-hud.git"
],
"status": "partial",
"reason": "Initializer succeeds; global crosshair injection has no supported compositor target.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 92,
"name": "Crosshair",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_current_offsets"
]
},
"archiveValidation": {
"id": 92,
"accepted": true,
"folder": "Crosshair"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"QAM/global tabs"
],
"fakeFrame": {
"id": 92,
"sha256": "19544af369622dac243874de99bc30485d1d8a27241fb05ca299b2d1dd39b2e0",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 93,
"name": "Deck Settings",
"version": "1.2.6",
"sha256": "23c2a933a6883e2622f0184c33a76ce4a4e88c0a7dcd730f9bab71b8c3702132",
"tags": [
"config",
"deckverified",
"game",
"settings",
"setup",
"verified"
],
"folder": "decky-game-settings",
"archiveBytes": 3307297,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-game-settings/main.py"
],
"native": [],
"steamClient": [
"InstallFolder.GetInstallFolders",
"System.GetSystemInfo"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"Dropdown",
"Field",
"Focusable",
"GamepadButton",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"ScrollPanelGroup",
"SliderField",
"Spinner",
"TextField",
"ToggleField",
"gamepadDialogClasses",
"scrollPanelClasses",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"collectionStore",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/class/dmi/id/sys_vendor",
"/sys/class/dmi/id/sys_vendor,"
],
"sourceURLs": [
"https://github.com/DeckSettings/decky-game-settings",
"https://github.com/DeckSettings/decky-game-settings.git",
"https://github.com/DeckSettings/game-reports-steamos",
"https://github.com/SteamDeckHomebrew/decky-frontend-lib"
],
"status": "partial",
"reason": "Game picker renders with detached real Frame library/install-folder reads; search modal opens in local Chromium. Snapshot refreshes on panel reopen. Remote reports/proxy fetch, settings changes and ARM64 backend remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 93,
"name": "Deck Settings",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[decky-game-settings:AuthorFooter] Error fetching avatar image: Error: Decky proxy fetch is unavailable in Framey"
},
{
"kind": "error",
"message": "[decky-game-settings:GameSelectView] Error fetching installed games: TypeError: Cannot read properties of undefined (reading 'allGamesCollection')"
}
],
"methods": []
},
"archiveValidation": {
"id": 93,
"accepted": true,
"folder": "decky-game-settings"
},
"backend": "Python",
"hardware": "/sys/class/dmi/id/sys_vendor; /sys/class/dmi/id/sys_vendor,",
"uiSurfaces": [
"toasts",
"QAM/global tabs",
"Steam stores"
],
"fakeFrame": {
"id": 93,
"sha256": "23c2a933a6883e2622f0184c33a76ce4a4e88c0a7dcd730f9bab71b8c3702132",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"libraryFollowUp": {
"evidence": "docs/evidence/framey-library-context-2026-10-26.json",
"mode": "real Frame read-only CEF projection; local Chromium snapshot replay; scoped actual amd64 backends",
"frontendReady": true
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 94,
"name": "Decky DoT DNS",
"version": "0.0.2",
"sha256": "0e9ffd3ccc07b12f64541129189fe84184efb9242373d01fbc90395f4d6bfbbc",
"tags": [
"dns",
"networking",
"root"
],
"folder": "decky-dot-dns",
"archiveBytes": 454756,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-dot-dns/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Dropdown",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"systemctl"
],
"sourceURLs": [
"https://github.com/ohaiibuzzle/decky-dot-dns",
"https://github.com/ohaiibuzzle/decky-dot-dns.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 94,
"name": "Decky DoT DNS",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_presets",
"get_dns_settings"
]
},
"archiveValidation": {
"id": 94,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "systemctl",
"uiSurfaces": [],
"fakeFrame": {
"id": 94,
"sha256": "0e9ffd3ccc07b12f64541129189fe84184efb9242373d01fbc90395f4d6bfbbc",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 95,
"name": "Decky-SpoofDPI",
"version": "0.12.0",
"sha256": "e37d613ffab3096517aeafd176ab04d86e9c97ea42d32b9eacd6ba1d2bf873ab",
"tags": [
"deep-packet-inspection",
"networking",
"spoofdpi"
],
"folder": "decky-spoof-dpi",
"archiveBytes": 3426995,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-spoof-dpi/main.py",
"decky-spoof-dpi/py_modules/spoofdpi_control.py",
"decky-spoof-dpi/py_modules/config_file.py",
"decky-spoof-dpi/py_modules/constants.py"
],
"native": [
{
"file": "decky-spoof-dpi/bin/spoofdpi",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"User.StartRestart"
],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
"https://github.com/ohaiibuzzle/decky-spoof-dpi",
"https://github.com/xvzc/SpoofDPI"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 95,
"name": "Decky-SpoofDPI",
"ready": true,
"error": null,
"logs": [],
"methods": [
"getStatus",
"getSettings"
]
},
"archiveValidation": {
"id": 95,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "SpoofDPI is a separate upstream helper; needs an ARM64 artifact/protocol and network-permission validation.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 95,
"sha256": "e37d613ffab3096517aeafd176ab04d86e9c97ea42d32b9eacd6ba1d2bf873ab",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-spoof-dpi/bin/spoofdpi."
}
},
{
"id": 96,
"name": "Simple Timer",
"version": "1.0.0",
"sha256": "973d927e9d9a1feec04679c564af7e389a729b6735d2a988ffc2cb46ce4eb312",
"tags": [
"alarm",
"decktools",
"timer"
],
"folder": "simple-timer",
"archiveBytes": 490890,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"simple-timer/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"Button",
"ButtonItem",
"ConfirmModal",
"Focusable",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/decktools-xyz/simple-timer",
"https://github.com/decktools-xyz/simple-timer.git"
],
"status": "partial",
"reason": "Live start/cancel, countdown events, completion toast, persisted recents/subtle mode verified in Chromium with real ARM64 Decky. Upstream expired-timer restart raises missing timer_task. Audio/suspend unsupported; alerts require an open panel; worn VR unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 96,
"name": "Simple Timer",
"ready": true,
"error": null,
"logs": [],
"methods": [
"load_recents",
"load_remaining_seconds",
"load_subtle_mode"
]
},
"archiveValidation": {
"id": 96,
"accepted": true,
"folder": "simple-timer"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 96,
"sha256": "973d927e9d9a1feec04679c564af7e389a729b6735d2a988ffc2cb46ce4eb312",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"realFrame": {
"evidence": "docs/evidence/framey-events-backend-2026-10-26.json",
"checks": {
"uiStart300Seconds": true,
"uiCancel": true,
"shortTimer5Seconds": true,
"completionToastVisible": true,
"recentTimersAndSubtleModeSurvivedRestart": true,
"subscriptionsAfterPanelClose": 0
},
"method": "local Chromium + real Frame SSH; private actual Decky 3.3.0 ARM64 service"
}
},
{
"id": 97,
"name": "Decky-Framegen",
"version": "0.11.15",
"sha256": "14015d5a652c78b2041fd9668685573840530c306e414aabc0d3cebf95be0642",
"tags": [
"DLSS",
"Framegen",
"FSR",
"upscaling"
],
"folder": "Decky-Framegen",
"archiveBytes": 75140408,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Decky-Framegen/main.py"
],
"native": [
{
"file": "Decky-Framegen/bin/nvngx.dll",
"arch": "Windows"
},
{
"file": "Decky-Framegen/bin/dlssg_to_fsr3_amd_is_better.dll",
"arch": "Windows"
},
{
"file": "Decky-Framegen/bin/nvapi64.dll",
"arch": "Windows"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"PanelSection",
"PanelSectionRow",
"showModal"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Nukem9/dlssg-to-fsr3",
"https://github.com/artur-graniszewski/DLSS-Enabler",
"https://github.com/optiscaler/OptiScaler",
"https://github.com/xXJSONDeruloXx/Decky-Framegen",
"https://github.com/xXJSONDeruloXx/Decky-Framegen.git",
"https://github.com/xXJSONDeruloXx/OptiScaler-Bleeding-Edge"
],
"status": "broken",
"reason": "Plugin archive size or SHA-256 did not match the store.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 97,
"name": "Decky-Framegen",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"check_fgmod_path",
"log_error"
]
},
"archiveValidation": {
"id": 97,
"accepted": false,
"reason": "Plugin archive size or SHA-256 did not match the store"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "Windows DLL payload targets x86 game translation rather than a native ARM backend; archive is 75,140,408 bytes, beyond the 50 MiB installer limit.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 97,
"sha256": "14015d5a652c78b2041fd9668685573840530c306e414aabc0d3cebf95be0642",
"archiveValidation": "Plugin archive size or SHA-256 did not match the store",
"result": "blocked",
"reason": "ValueError: Plugin archive size or SHA-256 did not match the store."
}
},
{
"id": 98,
"name": "Decky-Lookup",
"version": "0.1.0",
"sha256": "49309a02fa028d26c77230cc9f70fec9bcce91d59e887bfe8f9d3e42f8a19139",
"tags": [
"browser",
"Lookup",
"search",
"website"
],
"folder": "Decky-Lookup",
"archiveBytes": 441922,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"Router",
"staticClasses"
],
"globals": [
"Router",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/xXJSONDeruloXx/Decky-Lookup",
"https://github.com/xXJSONDeruloXx/Decky-Lookup.git"
],
"status": "partial",
"reason": "Initializer succeeds; game-page context actions and live lookups remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 98,
"name": "Decky-Lookup",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 98,
"accepted": true,
"folder": "Decky-Lookup"
},
"backend": "no Python/native backend found",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 98,
"sha256": "49309a02fa028d26c77230cc9f70fec9bcce91d59e887bfe8f9d3e42f8a19139",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 99,
"name": "Decky Zerotier",
"version": "0.3.1",
"sha256": "4cacfcf96b11b423af41ec57cea915e26a0dac42fc03432dad1fcded135781a2",
"tags": [
"network",
"zerotier"
],
"folder": "decky-zerotier",
"archiveBytes": 507353,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-zerotier/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogSubHeader",
"Field",
"Focusable",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"showModal"
],
"globals": [
"Router",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/hyacz/deck-zerotier",
"https://github.com/hyacz/deck-zerotier.git",
"https://github.com/hyacz/decky-zerotier",
"https://github.com/zerotier/DesktopUI",
"https://github.com/zerotier/ZeroTierOne"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 99,
"name": "Decky Zerotier",
"ready": true,
"error": null,
"logs": [],
"methods": [
"info",
"list_networks"
]
},
"archiveValidation": {
"id": 99,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 99,
"sha256": "4cacfcf96b11b423af41ec57cea915e26a0dac42fc03432dad1fcded135781a2",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 100,
"name": "Virtual Surround Sound",
"version": "0.0.5",
"sha256": "b6c514d147cc46bad5331ca9da36628eb9c330976e13735687499a4a9f17f6d4",
"tags": [
"5.1",
"7.1",
"atmos",
"audio",
"binaural",
"dolby",
"dts",
"headphones",
"surround"
],
"folder": "decky-virtual-surround-sound",
"archiveBytes": 4309855,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-virtual-surround-sound/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ConfirmModal",
"DialogButton",
"Dropdown",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"ToggleField",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"window.SP_REACT"
],
"hardwareSignals": [
"pactl"
],
"sourceURLs": [
"https://github.com/DeckSettings/decky-virtual-surround-sound",
"https://github.com/DeckSettings/decky-virtual-surround-sound.git",
"https://github.com/SteamDeckHomebrew/decky-frontend-lib"
],
"status": "partial",
"reason": "Initializer succeeds; avatar proxy is unavailable and live audio-routing backend unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 100,
"name": "Virtual Surround Sound",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error fetching avatar image: Error: Decky proxy fetch is unavailable in Framey"
},
{
"kind": "error",
"message": "[decky-virtual-surround-sound:AudioControlsView] Error fetching app details: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_sink_inputs"
]
},
"archiveValidation": {
"id": 100,
"accepted": true,
"folder": "decky-virtual-surround-sound"
},
"backend": "Python",
"hardware": "pactl",
"uiSurfaces": [
"QAM/global tabs"
],
"fakeFrame": {
"id": 100,
"sha256": "b6c514d147cc46bad5331ca9da36628eb9c330976e13735687499a4a9f17f6d4",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 101,
"name": "XIVOmega",
"version": "1.0.2",
"sha256": "d2638cd2943eabd2c449234855acc91e92990826cae8516dbb6a624f99b57c81",
"tags": [
"final-fantasy-xiv",
"root",
"XivAlexander",
"XivMitmLatencyMitigator",
"XivOmega"
],
"folder": "XIVOmega",
"archiveBytes": 5523733,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"XIVOmega/main.py",
"XIVOmega/py_modules/scapy/dadict.py",
"XIVOmega/py_modules/scapy/base_classes.py",
"XIVOmega/py_modules/scapy/route.py",
"XIVOmega/py_modules/scapy/__main__.py",
"XIVOmega/py_modules/scapy/themes.py",
"XIVOmega/py_modules/scapy/scapypipes.py",
"XIVOmega/py_modules/scapy/asn1fields.py",
"XIVOmega/py_modules/scapy/consts.py",
"XIVOmega/py_modules/scapy/error.py",
"XIVOmega/py_modules/scapy/interfaces.py",
"XIVOmega/py_modules/scapy/tools/check_asdis.py",
"XIVOmega/py_modules/scapy/tools/generate_ethertypes.py",
"XIVOmega/py_modules/scapy/tools/generate_manuf.py",
"XIVOmega/py_modules/scapy/tools/scapy_pyannotate.py",
"XIVOmega/py_modules/scapy/tools/automotive/obdscanner.py",
"XIVOmega/py_modules/scapy/tools/automotive/xcpscanner.py",
"XIVOmega/py_modules/scapy/tools/automotive/isotpscanner.py",
"XIVOmega/py_modules/scapy/tools/automotive/__init__.py",
"XIVOmega/py_modules/scapy/tools/UTscapy.py",
"XIVOmega/py_modules/scapy/tools/__init__.py",
"XIVOmega/py_modules/scapy/autorun.py",
"XIVOmega/py_modules/scapy/utils.py",
"XIVOmega/py_modules/scapy/all.py",
"XIVOmega/py_modules/scapy/as_resolvers.py",
"XIVOmega/py_modules/scapy/compat.py",
"XIVOmega/py_modules/scapy/contrib/macsec.py",
"XIVOmega/py_modules/scapy/contrib/eddystone.py",
"XIVOmega/py_modules/scapy/contrib/oam.py",
"XIVOmega/py_modules/scapy/contrib/mpls.py",
"XIVOmega/py_modules/scapy/contrib/ethercat.py",
"XIVOmega/py_modules/scapy/contrib/socks.py",
"XIVOmega/py_modules/scapy/contrib/vtp.py",
"XIVOmega/py_modules/scapy/contrib/opc_da.py",
"XIVOmega/py_modules/scapy/contrib/pnio_dcp.py",
"XIVOmega/py_modules/scapy/contrib/tcpao.py",
"XIVOmega/py_modules/scapy/contrib/diameter.py",
"XIVOmega/py_modules/scapy/contrib/openflow.py",
"XIVOmega/py_modules/scapy/contrib/isis.py",
"XIVOmega/py_modules/scapy/contrib/bier.py",
"XIVOmega/py_modules/scapy/contrib/loraphy2wan.py",
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_utils.py",
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_packet.py",
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_soft_socket.py",
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_scanner.py",
"XIVOmega/py_modules/scapy/contrib/isotp/isotp_native_socket.py",
"XIVOmega/py_modules/scapy/contrib/isotp/__init__.py",
"XIVOmega/py_modules/scapy/contrib/ife.py",
"XIVOmega/py_modules/scapy/contrib/wireguard.py",
"XIVOmega/py_modules/scapy/contrib/homeplugsg.py",
"XIVOmega/py_modules/scapy/contrib/sdnv.py",
"XIVOmega/py_modules/scapy/contrib/nrf_sniffer.py",
"XIVOmega/py_modules/scapy/contrib/rtcp.py",
"XIVOmega/py_modules/scapy/contrib/enipTCP.py",
"XIVOmega/py_modules/scapy/contrib/gtp_v2.py",
"XIVOmega/py_modules/scapy/contrib/avs.py",
"XIVOmega/py_modules/scapy/contrib/pnio_rpc.py",
"XIVOmega/py_modules/scapy/contrib/nsh.py",
"XIVOmega/py_modules/scapy/contrib/chdlc.py",
"XIVOmega/py_modules/scapy/contrib/ltp.py",
"XIVOmega/py_modules/scapy/contrib/rtsp.py",
"XIVOmega/py_modules/scapy/contrib/slowprot.py",
"XIVOmega/py_modules/scapy/contrib/cansocket_python_can.py",
"XIVOmega/py_modules/scapy/contrib/bfd.py",
"XIVOmega/py_modules/scapy/contrib/exposure_notification.py",
"XIVOmega/py_modules/scapy/contrib/ibeacon.py",
"XIVOmega/py_modules/scapy/contrib/cansocket.py",
"XIVOmega/py_modules/scapy/contrib/icmp_extensions.py",
"XIVOmega/py_modules/scapy/contrib/stamp.py",
"XIVOmega/py_modules/scapy/contrib/ldp.py",
"XIVOmega/py_modules/scapy/contrib/mqtt.py",
"XIVOmega/py_modules/scapy/contrib/gxrp.py",
"XIVOmega/py_modules/scapy/contrib/http2.py",
"XIVOmega/py_modules/scapy/contrib/ppi_cace.py",
"XIVOmega/py_modules/scapy/contrib/dtp.py",
"XIVOmega/py_modules/scapy/contrib/altbeacon.py",
"XIVOmega/py_modules/scapy/contrib/mac_control.py",
"XIVOmega/py_modules/scapy/contrib/ikev2.py",
"XIVOmega/py_modules/scapy/contrib/gtp.py",
"XIVOmega/py_modules/scapy/contrib/knx.py",
"XIVOmega/py_modules/scapy/contrib/erspan.py",
"XIVOmega/py_modules/scapy/contrib/lacp.py",
"XIVOmega/py_modules/scapy/contrib/homepluggp.py",
"XIVOmega/py_modules/scapy/contrib/lldp.py",
"XIVOmega/py_modules/scapy/contrib/stun.py",
"XIVOmega/py_modules/scapy/contrib/bp.py",
"XIVOmega/py_modules/scapy/contrib/etherip.py",
"XIVOmega/py_modules/scapy/contrib/send.py",
"XIVOmega/py_modules/scapy/contrib/ppi_geotag.py",
"XIVOmega/py_modules/scapy/contrib/pfcp.py",
"XIVOmega/py_modules/scapy/contrib/automotive/uds_scan.py",
"XIVOmega/py_modules/scapy/contrib/automotive/doip.py",
"XIVOmega/py_modules/scapy/contrib/automotive/uds.py",
"XIVOmega/py_modules/scapy/contrib/automotive/ccp.py",
"XIVOmega/py_modules/scapy/contrib/automotive/someip.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/staged_test_case.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/test_case.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/configuration.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/enumerator.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/graph.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/executor.py",
"XIVOmega/py_modules/scapy/contrib/automotive/scanner/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/uds_ecu_states.py",
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/definitions.py",
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/hsfz.py",
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/enumerator.py",
"XIVOmega/py_modules/scapy/contrib/automotive/bmw/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan_scanner.py",
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlanutils.py",
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan.py",
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan_logging.py",
"XIVOmega/py_modules/scapy/contrib/automotive/gm/gmlan_ecu_states.py",
"XIVOmega/py_modules/scapy/contrib/automotive/gm/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/secoc_pdu.py",
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/secoc.py",
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/pdu.py",
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/secoc_canfd.py",
"XIVOmega/py_modules/scapy/contrib/automotive/autosar/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/ecu.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/iid/iids.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/iid/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/tid/tids.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/tid/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/packet.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/scanner.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/mid/mids.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/mid/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/obd.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/services.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_20_3F.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_60_7F.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_00_1F.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_80_9F.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_40_5F.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/pids_A0_C0.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/pid/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/obd/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/volkswagen/definitions.py",
"XIVOmega/py_modules/scapy/contrib/automotive/volkswagen/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/kwp.py",
"XIVOmega/py_modules/scapy/contrib/automotive/uds_logging.py",
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/utils.py",
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/cto_commands_slave.py",
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/scanner.py",
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/cto_commands_master.py",
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/xcp.py",
"XIVOmega/py_modules/scapy/contrib/automotive/xcp/__init__.py",
"XIVOmega/py_modules/scapy/contrib/automotive/__init__.py",
"XIVOmega/py_modules/scapy/contrib/nfs.py",
"XIVOmega/py_modules/scapy/contrib/igmp.py",
"XIVOmega/py_modules/scapy/contrib/concox.py",
"XIVOmega/py_modules/scapy/contrib/esmc.py",
"XIVOmega/py_modules/scapy/contrib/homeplugav.py",
"XIVOmega/py_modules/scapy/contrib/pnio.py",
"XIVOmega/py_modules/scapy/contrib/hicp.py",
"XIVOmega/py_modules/scapy/contrib/rpl.py",
"XIVOmega/py_modules/scapy/contrib/pim.py",
"XIVOmega/py_modules/scapy/contrib/geneve.py",
"XIVOmega/py_modules/scapy/contrib/vqp.py",
"XIVOmega/py_modules/scapy/contrib/mount.py",
"XIVOmega/py_modules/scapy/contrib/ospf.py",
"XIVOmega/py_modules/scapy/contrib/rtr.py",
"XIVOmega/py_modules/scapy/contrib/scada/pcom.py",
"XIVOmega/py_modules/scapy/contrib/scada/iec104/iec104_fields.py",
"XIVOmega/py_modules/scapy/contrib/scada/iec104/iec104_information_elements.py",
"XIVOmega/py_modules/scapy/contrib/scada/iec104/iec104_information_objects.py",
"XIVOmega/py_modules/scapy/contrib/scada/iec104/__init__.py",
"XIVOmega/py_modules/scapy/contrib/scada/__init__.py",
"XIVOmega/py_modules/scapy/contrib/mqttsn.py",
"XIVOmega/py_modules/scapy/contrib/eigrp.py",
"XIVOmega/py_modules/scapy/contrib/tacacs.py",
"XIVOmega/py_modules/scapy/contrib/modbus.py",
"XIVOmega/py_modules/scapy/contrib/ripng.py",
"XIVOmega/py_modules/scapy/contrib/sebek.py",
"XIVOmega/py_modules/scapy/contrib/rsvp.py",
"XIVOmega/py_modules/scapy/contrib/rtps/pid_types.py",
"XIVOmega/py_modules/scapy/contrib/rtps/rtps.py",
"XIVOmega/py_modules/scapy/contrib/rtps/common_types.py",
"XIVOmega/py_modules/scapy/contrib/rtps/__init__.py",
"XIVOmega/py_modules/scapy/contrib/metawatch.py",
"XIVOmega/py_modules/scapy/contrib/roce.py",
"XIVOmega/py_modules/scapy/contrib/cdp.py",
"XIVOmega/py_modules/scapy/contrib/tzsp.py",
"XIVOmega/py_modules/scapy/contrib/tcpros.py",
"XIVOmega/py_modules/scapy/contrib/cansocket_native.py",
"XIVOmega/py_modules/scapy/contrib/coap.py",
"XIVOmega/py_modules/scapy/contrib/igmpv3.py",
"XIVOmega/py_modules/scapy/contrib/bgp.py",
"XIVOmega/py_modules/scapy/contrib/nlm.py",
"XIVOmega/py_modules/scapy/contrib/openflow3.py",
"XIVOmega/py_modules/scapy/contrib/skinny.py",
"XIVOmega/py_modules/scapy/contrib/carp.py",
"XIVOmega/py_modules/scapy/contrib/postgres.py",
"XIVOmega/py_modules/scapy/contrib/rpl_metrics.py",
"XIVOmega/py_modules/scapy/contrib/__init__.py",
"XIVOmega/py_modules/scapy/contrib/aoe.py",
"XIVOmega/py_modules/scapy/contrib/portmap.py",
"XIVOmega/py_modules/scapy/contrib/oncrpc.py",
"XIVOmega/py_modules/scapy/utils6.py",
"XIVOmega/py_modules/scapy/route6.py",
"XIVOmega/py_modules/scapy/asn1packet.py",
"XIVOmega/py_modules/scapy/supersocket.py",
"XIVOmega/py_modules/scapy/pipetool.py",
"XIVOmega/py_modules/scapy/ansmachine.py",
"XIVOmega/py_modules/scapy/fields.py",
"XIVOmega/py_modules/scapy/plist.py",
"XIVOmega/py_modules/scapy/data.py",
"XIVOmega/py_modules/scapy/packet.py",
"XIVOmega/py_modules/scapy/layers/tls/automaton_srv.py",
"XIVOmega/py_modules/scapy/layers/tls/record_sslv2.py",
"XIVOmega/py_modules/scapy/layers/tls/keyexchange.py",
"XIVOmega/py_modules/scapy/layers/tls/extensions.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/md4.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/cipher_stream.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/suites.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/hkdf.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/h_mac.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/common.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/pkcs1.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/all.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/cipher_block.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/ciphers.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/prf.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/cipher_aead.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/kx_algs.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/compression.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/hash.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/groups.py",
"XIVOmega/py_modules/scapy/layers/tls/crypto/__init__.py",
"XIVOmega/py_modules/scapy/layers/tls/handshake.py",
"XIVOmega/py_modules/scapy/layers/tls/all.py",
"XIVOmega/py_modules/scapy/layers/tls/tools.py",
"XIVOmega/py_modules/scapy/layers/tls/automaton_cli.py",
"XIVOmega/py_modules/scapy/layers/tls/keyexchange_tls13.py",
"XIVOmega/py_modules/scapy/layers/tls/record_tls13.py",
"XIVOmega/py_modules/scapy/layers/tls/handshake_sslv2.py",
"XIVOmega/py_modules/scapy/layers/tls/basefields.py",
"XIVOmega/py_modules/scapy/layers/tls/session.py",
"XIVOmega/py_modules/scapy/layers/tls/automaton.py",
"XIVOmega/py_modules/scapy/layers/tls/cert.py",
"XIVOmega/py_modules/scapy/layers/tls/record.py",
"XIVOmega/py_modules/scapy/layers/tls/__init__.py",
"XIVOmega/py_modules/scapy/layers/dhcp.py",
"XIVOmega/py_modules/scapy/layers/usb.py",
"XIVOmega/py_modules/scapy/layers/can.py",
"XIVOmega/py_modules/scapy/layers/spnego.py",
"XIVOmega/py_modules/scapy/layers/mobileip.py",
"XIVOmega/py_modules/scapy/layers/inet.py",
"XIVOmega/py_modules/scapy/layers/vrrp.py",
"XIVOmega/py_modules/scapy/layers/dot15d4.py",
"XIVOmega/py_modules/scapy/layers/dns.py",
"XIVOmega/py_modules/scapy/layers/llmnr.py",
"XIVOmega/py_modules/scapy/layers/lltd.py",
"XIVOmega/py_modules/scapy/layers/gssapi.py",
"XIVOmega/py_modules/scapy/layers/rip.py",
"XIVOmega/py_modules/scapy/layers/x509.py",
"XIVOmega/py_modules/scapy/layers/ssh.py",
"XIVOmega/py_modules/scapy/layers/radius.py",
"XIVOmega/py_modules/scapy/layers/clns.py",
"XIVOmega/py_modules/scapy/layers/tftp.py",
"XIVOmega/py_modules/scapy/layers/smbclient.py",
"XIVOmega/py_modules/scapy/layers/ntp.py",
"XIVOmega/py_modules/scapy/layers/dhcp6.py",
"XIVOmega/py_modules/scapy/layers/all.py",
"XIVOmega/py_modules/scapy/layers/bluetooth.py",
"XIVOmega/py_modules/scapy/layers/pptp.py",
"XIVOmega/py_modules/scapy/layers/snmp.py",
"XIVOmega/py_modules/scapy/layers/ppp.py",
"XIVOmega/py_modules/scapy/layers/ntlm.py",
"XIVOmega/py_modules/scapy/layers/gprs.py",
"XIVOmega/py_modules/scapy/layers/ipsec.py",
"XIVOmega/py_modules/scapy/layers/sctp.py",
"XIVOmega/py_modules/scapy/layers/dcerpc.py",
"XIVOmega/py_modules/scapy/layers/ldap.py",
"XIVOmega/py_modules/scapy/layers/pflog.py",
"XIVOmega/py_modules/scapy/layers/l2.py",
"XIVOmega/py_modules/scapy/layers/zigbee.py",
"XIVOmega/py_modules/scapy/layers/netbios.py",
"XIVOmega/py_modules/scapy/layers/http.py",
"XIVOmega/py_modules/scapy/layers/isakmp.py",
"XIVOmega/py_modules/scapy/layers/msrpce/msdrsr.py",
"XIVOmega/py_modules/scapy/layers/msrpce/rpcclient.py",
"XIVOmega/py_modules/scapy/layers/msrpce/all.py",
"XIVOmega/py_modules/scapy/layers/msrpce/ept.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_samr.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_dcom.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ept.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_drsr.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_wkst.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_nrpc.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/__init__.py",
"XIVOmega/py_modules/scapy/layers/msrpce/raw/ms_srvs.py",
"XIVOmega/py_modules/scapy/layers/msrpce/msnrpc.py",
"XIVOmega/py_modules/scapy/layers/msrpce/msdcom.py",
"XIVOmega/py_modules/scapy/layers/msrpce/mspac.py",
"XIVOmega/py_modules/scapy/layers/msrpce/rpcserver.py",
"XIVOmega/py_modules/scapy/layers/msrpce/__init__.py",
"XIVOmega/py_modules/scapy/layers/ir.py",
"XIVOmega/py_modules/scapy/layers/dot11.py",
"XIVOmega/py_modules/scapy/layers/bluetooth4LE.py",
"XIVOmega/py_modules/scapy/layers/rtp.py",
"XIVOmega/py_modules/scapy/layers/hsrp.py",
"XIVOmega/py_modules/scapy/layers/kerberos.py",
"XIVOmega/py_modules/scapy/layers/netflow.py",
"XIVOmega/py_modules/scapy/layers/tuntap.py",
"XIVOmega/py_modules/scapy/layers/inet6.py",
"XIVOmega/py_modules/scapy/layers/mgcp.py",
"XIVOmega/py_modules/scapy/layers/eap.py",
"XIVOmega/py_modules/scapy/layers/smbserver.py",
"XIVOmega/py_modules/scapy/layers/smb2.py",
"XIVOmega/py_modules/scapy/layers/vxlan.py",
"XIVOmega/py_modules/scapy/layers/smb.py",
"XIVOmega/py_modules/scapy/layers/ppi.py",
"XIVOmega/py_modules/scapy/layers/sixlowpan.py",
"XIVOmega/py_modules/scapy/layers/skinny.py",
"XIVOmega/py_modules/scapy/layers/l2tp.py",
"XIVOmega/py_modules/scapy/layers/__init__.py",
"XIVOmega/py_modules/scapy/sendrecv.py",
"XIVOmega/py_modules/scapy/modules/voip.py",
"XIVOmega/py_modules/scapy/modules/ticketer.py",
"XIVOmega/py_modules/scapy/modules/p0fv2.py",
"XIVOmega/py_modules/scapy/modules/krack/crypto.py",
"XIVOmega/py_modules/scapy/modules/krack/automaton.py",
"XIVOmega/py_modules/scapy/modules/krack/__init__.py",
"XIVOmega/py_modules/scapy/modules/nmap.py",
"XIVOmega/py_modules/scapy/modules/p0f.py",
"XIVOmega/py_modules/scapy/modules/__init__.py",
"XIVOmega/py_modules/scapy/volatile.py",
"XIVOmega/py_modules/scapy/asn1/ber.py",
"XIVOmega/py_modules/scapy/asn1/asn1.py",
"XIVOmega/py_modules/scapy/asn1/mib.py",
"XIVOmega/py_modules/scapy/asn1/__init__.py",
"XIVOmega/py_modules/scapy/libs/extcap.py",
"XIVOmega/py_modules/scapy/libs/rfc3961.py",
"XIVOmega/py_modules/scapy/libs/manuf.py",
"XIVOmega/py_modules/scapy/libs/test_pyx.py",
"XIVOmega/py_modules/scapy/libs/structures.py",
"XIVOmega/py_modules/scapy/libs/winpcapy.py",
"XIVOmega/py_modules/scapy/libs/ethertypes.py",
"XIVOmega/py_modules/scapy/libs/matplot.py",
"XIVOmega/py_modules/scapy/libs/__init__.py",
"XIVOmega/py_modules/scapy/automaton.py",
"XIVOmega/py_modules/scapy/sessions.py",
"XIVOmega/py_modules/scapy/main.py",
"XIVOmega/py_modules/scapy/arch/libpcap.py",
"XIVOmega/py_modules/scapy/arch/solaris.py",
"XIVOmega/py_modules/scapy/arch/bpf/pfroute.py",
"XIVOmega/py_modules/scapy/arch/bpf/consts.py",
"XIVOmega/py_modules/scapy/arch/bpf/core.py",
"XIVOmega/py_modules/scapy/arch/bpf/supersocket.py",
"XIVOmega/py_modules/scapy/arch/bpf/__init__.py",
"XIVOmega/py_modules/scapy/arch/windows/structures.py",
"XIVOmega/py_modules/scapy/arch/windows/native.py",
"XIVOmega/py_modules/scapy/arch/windows/__init__.py",
"XIVOmega/py_modules/scapy/arch/common.py",
"XIVOmega/py_modules/scapy/arch/unix.py",
"XIVOmega/py_modules/scapy/arch/linux/rtnetlink.py",
"XIVOmega/py_modules/scapy/arch/linux/__init__.py",
"XIVOmega/py_modules/scapy/arch/__init__.py",
"XIVOmega/py_modules/scapy/__init__.py",
"XIVOmega/py_modules/scapy/config.py",
"XIVOmega/py_modules/scapy/pton_ntop.py",
"XIVOmega/py_modules/lib/omegaWorker.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Menu",
"MenuItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"Spinner",
"TextField",
"ToggleField",
"showContextMenu",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/net/ethertypes.h",
"/sys/net/if_pflog.h",
"/sys/net/pfvar.h",
"/sys/socket.h.auto.html",
"/sys/sys/socket.h",
"sudo",
"x86_64"
],
"sourceURLs": [
"https://github.com/AltBeacon/spec",
"https://github.com/BruceSherwood/vpython-jupyter",
"https://github.com/SecureAuthCorp/impacket",
"https://github.com/Soreepeong/XivMitmLatencyMitigator",
"https://github.com/adafruit/Adafruit_BLESniffer_Python",
"https://github.com/bankjaneo/XivMitmDocker",
"https://github.com/boundary/wireshark",
"https://github.com/cyrusimap/cyrus-sasl",
"https://github.com/freebsd/freebsd",
"https://github.com/google/eddystone",
"https://github.com/greatscottgadgets/libbtbb",
"https://github.com/hartkopp/can-isotp",
"https://github.com/krb5/krb5",
"https://github.com/mhorowitz/pykrb5",
"https://github.com/nmap/nmap",
"https://github.com/openbsd/src",
"https://github.com/pyca/cryptography",
"https://github.com/python/cpython",
"https://github.com/qca/open-plc-utils",
"https://github.com/ruuvi/ruuvi-sensor-protocols"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 101,
"name": "XIVOmega",
"ready": true,
"error": null,
"logs": [],
"methods": [
"curr_status"
]
},
"archiveValidation": {
"id": 101,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "/sys/net/ethertypes.h; /sys/net/if_pflog.h; /sys/net/pfvar.h; /sys/socket.h.auto.html; /sys/sys/socket.h; sudo; x86_64",
"uiSurfaces": [
"local/Steam routes"
],
"fakeFrame": {
"id": 101,
"sha256": "d2638cd2943eabd2c449234855acc91e92990826cae8516dbb6a624f99b57c81",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 102,
"name": "DeckSP",
"version": "1.1.3",
"sha256": "d6cbedcd64430e1f94a2b12caf936ba270f1ceafe77c6252808ff39c88640b40",
"tags": [
"audio",
"compressor",
"dsp",
"effects",
"eq",
"equalizer",
"fx",
"reverb",
"sound"
],
"folder": "DeckSP",
"archiveBytes": 4469375,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DeckSP/main.py",
"DeckSP/py_modules/utils.py",
"DeckSP/py_modules/EelParser.py",
"DeckSP/py_modules/ddc.py",
"DeckSP/py_modules/env.py",
"DeckSP/py_modules/jdspproxy.py",
"DeckSP/py_modules/extendedsettings.py"
],
"native": [],
"steamClient": [
"Input.ControllerKeyboardSetKeyState",
"System",
"System.Audio.GetDevices",
"System.Audio.RegisterForDeviceAdded",
"UI.RegisterForUIModeChanged",
"User.RegisterForShutdownStart"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Dropdown",
"DropdownItem",
"EUIMode",
"Field",
"Focusable",
"GamepadButton",
"Marquee",
"Menu",
"MenuGroup",
"MenuItem",
"ModalPosition",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ScrollPanelGroup",
"SimpleModal",
"SliderField",
"TextField",
"ToggleField",
"findModuleExport",
"gamepadContextMenuClasses",
"gamepadDialogClasses",
"quickAccessControlsClasses",
"quickAccessMenuClasses",
"scrollPanelClasses",
"showContextMenu",
"showModal",
"sleep"
],
"globals": [
"SteamUIStore",
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak",
"systemctl"
],
"sourceURLs": [
"https://github.com/Audio4Linux/JDSP4Linux",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/james34602/JamesDSPManager",
"https://github.com/jessebofill/DeckSP",
"https://github.com/jessebofill/DeckSP.git"
],
"status": "broken",
"reason": "Optional UI-audio lookup succeeds, but the published frontend raises \"Cannot access PluginManager before initialization\" when Steam MobX reaction lookup is unavailable. JamesDSP installation/audio routing and ARM64 remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 102,
"name": "DeckSP",
"ready": false,
"error": "Cannot access 'PluginManager' before initialization",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 102,
"accepted": true,
"folder": "DeckSP"
},
"backend": "Python",
"hardware": "flatpak; systemctl",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 102,
"sha256": "d6cbedcd64430e1f94a2b12caf936ba270f1ceafe77c6252808ff39c88640b40",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 103,
"name": "Decky Ludusavi",
"version": "1.2.2",
"sha256": "8a69f45aadce763406b5c27bfef194761006d5e01c5e8841badeb13a27dd0d88",
"tags": [
"backup",
"cloud",
"ludusavi",
"sync"
],
"folder": "decky-ludusavi",
"archiveBytes": 1137863,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-ludusavi/main.py",
"decky-ludusavi/py_modules/ludusavi.py",
"decky-ludusavi/py_modules/config.py"
],
"native": [],
"steamClient": [
"Apps.GetLaunchOptionsForApp",
"GameSessions.RegisterForAppLifetimeNotifications"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Dropdown",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"showModal"
],
"globals": [
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/GedasFX/decky-cloud-save",
"https://github.com/GedasFX/decky-ludusavi",
"https://github.com/GedasFX/decky-ludusavi.git",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/mtkennerly/ludusavi"
],
"status": "partial",
"reason": "Initializer succeeds; Flatpak Ludusavi discovery and backup/restore unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 103,
"name": "Decky Ludusavi",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_config",
"get_ludusavi_version"
]
},
"archiveValidation": {
"id": 103,
"accepted": true,
"folder": "decky-ludusavi"
},
"backend": "Python",
"hardware": "flatpak",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 103,
"sha256": "8a69f45aadce763406b5c27bfef194761006d5e01c5e8841badeb13a27dd0d88",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 104,
"name": "Game Sync",
"version": "1.0.4",
"sha256": "65e021ebb37d2ebfbfbe3dbc8af95aef9556cf484730362c6b26c4ecc3e62ccd",
"tags": [
"backup",
"cloud",
"rclone"
],
"folder": "SDH-GameSync",
"archiveBytes": 2228806,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"SDH-GameSync/main.py",
"SDH-GameSync/py_modules/config.py",
"SDH-GameSync/py_modules/common_defs.py",
"SDH-GameSync/py_modules/utils.py",
"SDH-GameSync/py_modules/sync_target.py",
"SDH-GameSync/py_modules/rclone_manager.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications",
"GameSessions.RegisterForScreenshotNotification",
"Screenshots.DeleteLocalScreenshot"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Field",
"Focusable",
"Menu",
"MenuItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ReorderableList",
"SidebarNavigation",
"TextField",
"ToggleField",
"afterPatch",
"fakeRenderComponent",
"findInReactTree",
"findInTree",
"findModuleByExport",
"showContextMenu",
"showModal",
"sleep",
"useParams"
],
"globals": [
"appStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"amd64"
],
"sourceURLs": [
"https://github.com/AkazaRenn/SDH-GameSync",
"https://github.com/AkazaRenn/SDH-GameSync.git",
"https://github.com/GedasFX/decky-cloud-save"
],
"status": "partial",
"reason": "Backend get_config is intentionally rejected by the audit before initialization completes; actual backend compatibility is unknown.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 104,
"name": "Game Sync",
"ready": false,
"error": "Read-only compatibility audit: backend method blocked",
"logs": [],
"methods": [
"get_config"
]
},
"archiveValidation": {
"id": 104,
"accepted": true,
"folder": "SDH-GameSync"
},
"backend": "Python",
"hardware": "amd64",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 104,
"sha256": "65e021ebb37d2ebfbfbe3dbc8af95aef9556cf484730362c6b26c4ecc3e62ccd",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": false
}
},
{
"id": 105,
"name": "WiFi Locker",
"version": "1.0.2",
"sha256": "4d892785ea5ebdc61e0584eb6c2a594344efd3ce657bbd1f000ba54971a080b6",
"tags": [
"network",
"root",
"wifi"
],
"folder": "decky-wifi-locker",
"archiveBytes": 452083,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-wifi-locker/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Field",
"PanelSection",
"PanelSectionRow",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-frontend-lib",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/felipejfc/decky-wifi-locker",
"https://github.com/felipejfc/decky-wifi-locker.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 105,
"name": "WiFi Locker",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error getting WiFi status: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_wifi_status"
]
},
"archiveValidation": {
"id": 105,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 105,
"sha256": "4d892785ea5ebdc61e0584eb6c2a594344efd3ce657bbd1f000ba54971a080b6",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 106,
"name": "LetMeReShade",
"version": "1.8",
"sha256": "ae9cf06bb59aa5694409503828d341ae635bde5429a77c766b7256156c1ccc4f",
"tags": [
"graphics",
"presets",
"reshade",
"shaders"
],
"folder": "LetMeReShade",
"archiveBytes": 229396,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"LetMeReShade/main.py"
],
"native": [],
"steamClient": [
"Apps.SetAppLaunchOptions"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DropdownItem",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"showModal"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/devices/virtual/dmi/id/board_name",
"/sys/devices/virtual/dmi/id/product_name",
"/sys/devices/virtual/dmi/id/sys_vendor"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/itsOwen/LetMeReShade",
"https://github.com/itsOwen/LetMeReShade.git",
"https://github.com/itsOwen/LetMeReShade_Binaries"
],
"status": "partial",
"reason": "Initializer succeeds; Deck-model assumptions, shader downloads and game modifications unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 106,
"name": "LetMeReShade",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error fetching games: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"check_reshade_path",
"detect_steam_deck_model",
"has_shader_preferences",
"load_autohdr_preference",
"load_installed_configuration",
"list_installed_games",
"find_heroic_games",
"log_error"
]
},
"archiveValidation": {
"id": 106,
"accepted": true,
"folder": "LetMeReShade"
},
"backend": "Python",
"hardware": "/sys/devices/virtual/dmi/id/board_name; /sys/devices/virtual/dmi/id/product_name; /sys/devices/virtual/dmi/id/sys_vendor",
"uiSurfaces": [],
"fakeFrame": {
"id": 106,
"sha256": "ae9cf06bb59aa5694409503828d341ae635bde5429a77c766b7256156c1ccc4f",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 107,
"name": "Decky Sunshine",
"version": "2025.10.27-dddf365",
"sha256": "335285d75df623492a04bb1955f6f802075623de985f426d9baaaf0b100ed437",
"tags": [
"moonlight",
"root",
"server",
"streaming",
"sunshine"
],
"folder": "decky-sunshine",
"archiveBytes": 18330,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"decky-sunshine/main.py",
"decky-sunshine/py_modules/sunshine.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"DialogButtonPrimary",
"Field",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"Spinner",
"TextField",
"definePlugin",
"showModal"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/LizardByte/Sunshine",
"https://github.com/s0t7x/decky-sunshine"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 107,
"name": "Decky Sunshine",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[SUN] Backend method isSunshineRunning failed Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SUN] Backend method areCredentialsValid failed Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SUN] Backend method getSunshineVersionInfo failed Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"isSunshineRunning",
"areCredentialsValid",
"getSunshineVersionInfo"
]
},
"archiveValidation": {
"id": 107,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "flatpak",
"uiSurfaces": [],
"fakeFrame": {
"id": 107,
"sha256": "335285d75df623492a04bb1955f6f802075623de985f426d9baaaf0b100ed437",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 108,
"name": "HueSync",
"version": "3.8.0",
"sha256": "96f8400be987d0a080e399eb108f773108eb662fe4875fcb95009dd265c1fb9c",
"tags": [
"root"
],
"folder": "HueSync",
"archiveBytes": 1083701,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"HueSync/main.py",
"HueSync/py_modules/huesync.py",
"HueSync/py_modules/serial/serialcli.py",
"HueSync/py_modules/serial/serialjava.py",
"HueSync/py_modules/serial/serialwin32.py",
"HueSync/py_modules/serial/__init__.py",
"HueSync/py_modules/serial/rs485.py",
"HueSync/py_modules/serial/threaded/__init__.py",
"HueSync/py_modules/serial/win32.py",
"HueSync/py_modules/serial/urlhandler/protocol_alt.py",
"HueSync/py_modules/serial/urlhandler/__init__.py",
"HueSync/py_modules/serial/urlhandler/protocol_spy.py",
"HueSync/py_modules/serial/urlhandler/protocol_rfc2217.py",
"HueSync/py_modules/serial/urlhandler/protocol_socket.py",
"HueSync/py_modules/serial/urlhandler/protocol_loop.py",
"HueSync/py_modules/serial/urlhandler/protocol_hwgrep.py",
"HueSync/py_modules/serial/urlhandler/protocol_cp2110.py",
"HueSync/py_modules/serial/serialutil.py",
"HueSync/py_modules/serial/rfc2217.py",
"HueSync/py_modules/serial/serialposix.py",
"HueSync/py_modules/serial/__main__.py",
"HueSync/py_modules/serial/tools/list_ports_posix.py",
"HueSync/py_modules/serial/tools/hexlify_codec.py",
"HueSync/py_modules/serial/tools/__init__.py",
"HueSync/py_modules/serial/tools/miniterm.py",
"HueSync/py_modules/serial/tools/list_ports_windows.py",
"HueSync/py_modules/serial/tools/list_ports_osx.py",
"HueSync/py_modules/serial/tools/list_ports.py",
"HueSync/py_modules/serial/tools/list_ports_linux.py",
"HueSync/py_modules/serial/tools/list_ports_common.py",
"HueSync/py_modules/devices/legion_power_led_mixin.py",
"HueSync/py_modules/devices/msi.py",
"HueSync/py_modules/devices/legion_go_tablet.py",
"HueSync/py_modules/devices/ayaneo.py",
"HueSync/py_modules/devices/led_device.py",
"HueSync/py_modules/devices/generic.py",
"HueSync/py_modules/devices/legion_go_s.py",
"HueSync/py_modules/devices/asus.py",
"HueSync/py_modules/devices/sysfs_led_mixin.py",
"HueSync/py_modules/devices/onexplayer_configs.py",
"HueSync/py_modules/devices/gpd.py",
"HueSync/py_modules/devices/onexplayer.py",
"HueSync/py_modules/devices/asus_ally.py",
"HueSync/py_modules/led/legion_led_device_hid.py",
"HueSync/py_modules/led/legion_go_tablet_hid.py",
"HueSync/py_modules/led/ayaneo_led_device_ec.py",
"HueSync/py_modules/led/onex_led_device_hid.py",
"HueSync/py_modules/led/asus_led_device_hid.py",
"HueSync/py_modules/led/onex_led_device_serial.py",
"HueSync/py_modules/led/hhd/oxp_hid_v2.py",
"HueSync/py_modules/led/hhd/hhd_asus_hid.py",
"HueSync/py_modules/led/hhd/hhd_legino_go_s_hid.py",
"HueSync/py_modules/led/hhd/hhd_hid_base.py",
"HueSync/py_modules/led/hhd/oxp_serial.py",
"HueSync/py_modules/led/hhd/oxp_hid_v1.py",
"HueSync/py_modules/led/msi_led_device_hid.py",
"HueSync/py_modules/utils.py",
"HueSync/py_modules/ec.py",
"HueSync/py_modules/logging_handler.py",
"HueSync/py_modules/config.py",
"HueSync/py_modules/power_led_backend.py",
"HueSync/py_modules/wincontrols/hardware.py",
"HueSync/py_modules/wincontrols/config.py",
"HueSync/py_modules/software_effects.py",
"HueSync/py_modules/custom_zone_animator.py",
"HueSync/py_modules/lib_hid/__init__.py",
"HueSync/py_modules/custom_rgb_manager.py",
"HueSync/py_modules/id_info.py"
],
"native": [
{
"file": "HueSync/bin/hello",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "HueSync/py_modules/portio.so",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Settings.GetCurrentLanguage",
"System.GetSystemInfo",
"System.RegisterForBatteryStateChanges",
"System.RegisterForOnResumeFromSuspend",
"System.RegisterForOnSuspendRequest",
"User.RegisterForPrepareForSystemSuspendProgress",
"User.RegisterForResumeSuspendedGamesProgress"
],
"dfl": [
"DialogButton",
"DropdownItem",
"Field",
"Focusable",
"Marquee",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"TextField",
"ToggleField",
"definePlugin",
"findModuleChild",
"gamepadSliderClasses",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"/dev/hidraw9",
"/sys/class/dmi/id/board_name",
"/sys/class/dmi/id/board_vendor",
"/sys/class/leds/",
"/sys/class/leds/ayaneo:rgb:joystick_rings",
"/sys/class/leds/ayn:rgb:joystick_rings",
"/sys/class/leds/multicolor:chassis",
"/sys/class/power_supply",
"/sys/class/tty/{}/device",
"/sys/devices/virtual/dmi/id/product_name",
"/sys/devices/virtual/dmi/id/sys_vendor",
"x86_64"
],
"sourceURLs": [
"https://github.com/Maccraft123/ayaled",
"https://github.com/ShadowBlip/ayaneo-platform",
"https://github.com/ShadowBlip/ayn-platform",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/Valkirie/HandheldCompanion",
"https://github.com/hhd-dev/hhd",
"https://github.com/hhd-dev/hwinfo",
"https://github.com/honjow/HueSync",
"https://github.com/honjow/HueSync.git",
"https://github.com/honjow/huesync",
"https://github.com/libusb/hidapi",
"https://github.com/makerbot/pyserial",
"https://github.com/pelrun/pyWinControls",
"https://github.com/pyserial/pyserial",
"https://github.com/trezor/cython-hidapi"
],
"status": "na",
"reason": "Not supported on Frame: Targets handheld RGB/LED controllers (AYANEO/Ally/MSI), not Frame hardware.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 108,
"name": "HueSync",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "[2026-10-25 23:26:59.143] WARN HueSync: ignoring empty suspend mode value"
},
{
"kind": "error",
"message": "[2026-10-25 23:26:59.145] ERROR Failed to init power LED control: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load msi custom presets: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load ayaneo custom presets: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load rog_ally custom presets: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_settings",
"log_info",
"log_warn",
"get_device_capabilities",
"get_custom_rgb_presets",
"log_error"
]
},
"archiveValidation": {
"id": 108,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: HueSync/bin/hello"
},
"backend": "Python + native payload",
"hardware": "Targets handheld RGB/LED controllers (AYANEO/Ally/MSI), not Frame hardware.",
"nativePort": "portio and handheld LED backends depend on x86 I/O/unsupported hardware; ARM64 compilation alone is insufficient.",
"uiSurfaces": [
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 108,
"sha256": "96f8400be987d0a080e399eb108f773108eb662fe4875fcb95009dd265c1fb9c",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: HueSync/bin/hello",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 109,
"name": "MuraDeck",
"version": "2.1.4",
"sha256": "7957de906e9b6721631fc0cd9a48e9524c1d7bb4371dfb183c391dfdf6d416d4",
"tags": [
"mura",
"mura-correction",
"mura-deck",
"muradeck",
"mura-fix",
"oled",
"samsung"
],
"folder": "MuraDeck",
"archiveBytes": 495598,
"api": 1,
"flags": [
"debug",
"_root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"MuraDeck/main.py"
],
"native": [],
"steamClient": [
"System.Display.RegisterForBrightnessChanges"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"Field",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SideMenu",
"SidebarNavigation",
"SliderField",
"ToggleField",
"quickAccessControlsClasses",
"showModal"
],
"globals": [
"SteamUIStore",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [
"gamescope"
],
"sourceURLs": [
"https://github.com/Moonveil-Kanata/MuraDeck",
"https://github.com/ValveSoftware/gamescope",
"https://github.com/user-attachments/assets"
],
"status": "na",
"reason": "Not supported on Frame: Calibration is specifically for defective Samsung Steam Deck OLED panels, not Frame displays.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 109,
"name": "MuraDeck",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[MuraDeck] Failed to register brightness listener TypeError: Cannot read properties of undefined (reading 'RegisterForBrightnessChanges')"
}
],
"methods": [
"get_has_seen_welcome",
"get_enabled",
"get_display_mode",
"is_external_display",
"get_ext_monitor_watcher",
"get_brightness_enabled",
"check_shader_status",
"get_sharpness",
"get_cas"
]
},
"archiveValidation": {
"id": 109,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "Calibration is specifically for defective Samsung Steam Deck OLED panels, not Frame displays.",
"uiSurfaces": [
"local/Steam routes",
"Steam stores"
],
"fakeFrame": {
"id": 109,
"sha256": "7957de906e9b6721631fc0cd9a48e9524c1d7bb4371dfb183c391dfdf6d416d4",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Not supported on Frame: Calibration is specifically for defective Samsung Steam Deck OLED panels, not Frame displays."
}
},
{
"id": 110,
"name": "Dimmer Deck",
"version": "0.0.4",
"sha256": "cb4d9091e0e28277c9e79625323f0898481cb5590d0a7ab58f4d80696225a4fc",
"tags": [
"brightness",
"utility"
],
"folder": "DimmerDeck",
"archiveBytes": 142050,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DimmerDeck/main.py"
],
"native": [],
"steamClient": [
"Settings.GetCurrentLanguage",
"System.Display.RegisterForBrightnessChanges",
"System.Display.SetBrightness"
],
"dfl": [
"PanelSection",
"PanelSectionRow",
"SliderField",
"ToggleField",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/ValveSoftware/gamescope",
"https://github.com/chenx-dust/DimmerDeck",
"https://github.com/chenx-dust/DimmerDeck.git"
],
"status": "na",
"reason": "Not supported on Frame: Changes gamescope/X11 dimming properties; no mapping to Frame VR display brightness exists.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 110,
"name": "Dimmer Deck",
"ready": true,
"error": null,
"logs": [],
"methods": [
"activate"
]
},
"archiveValidation": {
"id": 110,
"accepted": true,
"folder": "DimmerDeck"
},
"backend": "Python",
"hardware": "Changes gamescope/X11 dimming properties; no mapping to Frame VR display brightness exists.",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 110,
"sha256": "cb4d9091e0e28277c9e79625323f0898481cb5590d0a7ab58f4d80696225a4fc",
"archiveValidation": "accepted",
"result": "blocked",
"reason": "ValueError: Not supported on Frame: Changes gamescope/X11 dimming properties; no mapping to Frame VR display brightness exists."
}
},
{
"id": 111,
"name": "Music Control",
"version": "1.1.7",
"sha256": "3f56a3f56034b277ea74a2c37cc84133b69e382aa6bcb0b43876776aac737ed9",
"tags": [
"media",
"mpris",
"music"
],
"folder": "MusicControl",
"archiveBytes": 27151,
"api": "legacy",
"flags": [],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"MusicControl/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"Focusable",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"SliderField",
"SteamSpinner",
"definePlugin",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/martinpl/music-control"
],
"status": "partial",
"reason": "Panel initializer succeeds with backend/network blocked; actual controls and backend remain unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 111,
"name": "Music Control",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
},
{
"kind": "warn",
"message": "Resolve failed: [object Object] promise [object Promise]"
}
],
"methods": [
"sp_list_media_players"
]
},
"archiveValidation": {
"id": 111,
"accepted": true,
"folder": "MusicControl"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes"
],
"fakeFrame": {
"id": 111,
"sha256": "3f56a3f56034b277ea74a2c37cc84133b69e382aa6bcb0b43876776aac737ed9",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 112,
"name": "Better Keyboard",
"version": "0.3.4",
"sha256": "8e065d37b5c9d7f37203cb2ec9bc6cb54c136b901c998650c7c6ffb30aee8d46",
"tags": [
"keyboard",
"utility"
],
"folder": "BetterKeyboard",
"archiveBytes": 545394,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"BetterKeyboard/main.py",
"BetterKeyboard/py_modules/evdev_mod/eventio_async.py",
"BetterKeyboard/py_modules/evdev_mod/events.py",
"BetterKeyboard/py_modules/evdev_mod/device.py",
"BetterKeyboard/py_modules/evdev_mod/input.py",
"BetterKeyboard/py_modules/evdev_mod/__init__.py",
"BetterKeyboard/py_modules/evdev_mod/eventio.py",
"BetterKeyboard/py_modules/evdev_mod/util.py",
"BetterKeyboard/py_modules/evdev_mod/ecodes.py"
],
"native": [],
"steamClient": [
"Settings.GetCurrentLanguage",
"UI.GetUIMode",
"UI.RegisterForUIModeChanged"
],
"dfl": [
"ButtonItem",
"EUIMode",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"staticClasses"
],
"globals": [
"SteamUIStore",
"window.SP_REACT"
],
"hardwareSignals": [
"/dev/input"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/chenx-dust/BetterKeyboard",
"https://github.com/chenx-dust/BetterKeyboard.git",
"https://github.com/gvalkov/python-evdev"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service. Frontend audit failed: window.SteamClient.UI.GetUIMode is not a function.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 112,
"name": "Better Keyboard",
"ready": false,
"error": "window.SteamClient.UI.GetUIMode is not a function",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 112,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "/dev/input",
"uiSurfaces": [
"Steam stores"
],
"fakeFrame": {
"id": 112,
"sha256": "8e065d37b5c9d7f37203cb2ec9bc6cb54c136b901c998650c7c6ffb30aee8d46",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service. Frontend audit failed: window.SteamClient.UI.GetUIMode is not a function."
}
},
{
"id": 113,
"name": "Decky LSFG-VK",
"version": "0.12.2",
"sha256": "ec59fc8aceb4e1abe2066b3a0707ed6313cabc4421b7c17765397903e2f8fd26",
"tags": [
"framegen",
"installer",
"lossless",
"lsfg",
"scaling",
"vulkan"
],
"folder": "decky-lsfg-vk",
"archiveBytes": 16145293,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-lsfg-vk/main.py",
"decky-lsfg-vk/shared_config.py",
"decky-lsfg-vk/py_modules/lsfg_vk/dll_detection.py",
"decky-lsfg-vk/py_modules/lsfg_vk/configuration.py",
"decky-lsfg-vk/py_modules/lsfg_vk/base_service.py",
"decky-lsfg-vk/py_modules/lsfg_vk/config_schema_generated.py",
"decky-lsfg-vk/py_modules/lsfg_vk/plugin.py",
"decky-lsfg-vk/py_modules/lsfg_vk/types.py",
"decky-lsfg-vk/py_modules/lsfg_vk/constants.py",
"decky-lsfg-vk/py_modules/lsfg_vk/config_schema.py",
"decky-lsfg-vk/py_modules/lsfg_vk/flatpak_service.py",
"decky-lsfg-vk/py_modules/lsfg_vk/configuration_helpers_generated.py",
"decky-lsfg-vk/py_modules/lsfg_vk/installation.py",
"decky-lsfg-vk/py_modules/lsfg_vk/__init__.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogControlsSectionHeader",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"Spinner",
"TextField",
"Toggle",
"ToggleField",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak",
"x86_64"
],
"sourceURLs": [
"https://github.com/PancakeTAS/lsfg-vk",
"https://github.com/xXJSONDeruloXx/decky-lossless-scaling-vk",
"https://github.com/xXJSONDeruloXx/decky-lsfg-vk",
"https://github.com/xXJSONDeruloXx/decky-lsfg-vk.git",
"https://github.com/xXJSONDeruloXx/lsfg-vk"
],
"status": "partial",
"reason": "Initializer succeeds; runtime LSFG/Windows DLL downloads and Vulkan integration are not ARM64-validated.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 113,
"name": "Decky LSFG-VK",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error loading lsfg config: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Error loading profiles: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"check_lsfg_vk_installed",
"check_lossless_scaling_dll",
"get_lsfg_config",
"get_profiles"
]
},
"archiveValidation": {
"id": 113,
"accepted": true,
"folder": "decky-lsfg-vk"
},
"backend": "Python",
"hardware": "flatpak; x86_64",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 113,
"sha256": "ec59fc8aceb4e1abe2066b3a0707ed6313cabc4421b7c17765397903e2f8fd26",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 114,
"name": "Network Sentinel",
"version": "1.0.4",
"sha256": "d3e07f40a0c800e72d15594e03c8c61e9bf3092524a578a0260520e735b971a5",
"tags": [
"gaming",
"monitoring",
"network",
"performance"
],
"folder": "network-sentinel",
"archiveBytes": 463678,
"api": 1,
"flags": [
"debug",
"_root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"network-sentinel/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SliderField",
"ToggleField",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/KrishGaur1354/network-sentinel",
"https://github.com/KrishGaur1354/network-sentinel.git",
"https://github.com/SteamDeckHomebrew/decky-frontend-lib",
"https://github.com/SteamDeckHomebrew/decky-loader"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 114,
"name": "Network Sentinel",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Failed to get network status: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to get live ping: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load connection info: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to get network history: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_network_status",
"get_live_ping",
"get_settings",
"get_connection_info",
"get_network_history"
]
},
"archiveValidation": {
"id": 114,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 114,
"sha256": "d3e07f40a0c800e72d15594e03c8c61e9bf3092524a578a0260520e735b971a5",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 115,
"name": "Decky Clash",
"version": "1.3.0",
"sha256": "2b96cc96ad3780a51fa794c250e821e15b3716851f4c96cb3d0a1e2f38890424",
"tags": [
"network",
"root"
],
"folder": "DeckyClash",
"archiveBytes": 49109460,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DeckyClash/main.py",
"DeckyClash/py_modules/ruamel/yaml/scalarfloat.py",
"DeckyClash/py_modules/ruamel/yaml/scalarint.py",
"DeckyClash/py_modules/ruamel/yaml/tokens.py",
"DeckyClash/py_modules/ruamel/yaml/main.py",
"DeckyClash/py_modules/ruamel/yaml/nodes.py",
"DeckyClash/py_modules/ruamel/yaml/comments.py",
"DeckyClash/py_modules/ruamel/yaml/parser.py",
"DeckyClash/py_modules/ruamel/yaml/dumper.py",
"DeckyClash/py_modules/ruamel/yaml/error.py",
"DeckyClash/py_modules/ruamel/yaml/timestamp.py",
"DeckyClash/py_modules/ruamel/yaml/docinfo.py",
"DeckyClash/py_modules/ruamel/yaml/configobjwalker.py",
"DeckyClash/py_modules/ruamel/yaml/composer.py",
"DeckyClash/py_modules/ruamel/yaml/scanner.py",
"DeckyClash/py_modules/ruamel/yaml/constructor.py",
"DeckyClash/py_modules/ruamel/yaml/compat.py",
"DeckyClash/py_modules/ruamel/yaml/representer.py",
"DeckyClash/py_modules/ruamel/yaml/mergevalue.py",
"DeckyClash/py_modules/ruamel/yaml/cyaml.py",
"DeckyClash/py_modules/ruamel/yaml/reader.py",
"DeckyClash/py_modules/ruamel/yaml/serializer.py",
"DeckyClash/py_modules/ruamel/yaml/anchor.py",
"DeckyClash/py_modules/ruamel/yaml/util.py",
"DeckyClash/py_modules/ruamel/yaml/__init__.py",
"DeckyClash/py_modules/ruamel/yaml/scalarbool.py",
"DeckyClash/py_modules/ruamel/yaml/resolver.py",
"DeckyClash/py_modules/ruamel/yaml/tag.py",
"DeckyClash/py_modules/ruamel/yaml/events.py",
"DeckyClash/py_modules/ruamel/yaml/clibz/setup.py",
"DeckyClash/py_modules/ruamel/yaml/clibz/__init__.py",
"DeckyClash/py_modules/ruamel/yaml/emitter.py",
"DeckyClash/py_modules/ruamel/yaml/loader.py",
"DeckyClash/py_modules/ruamel/yaml/scalarstring.py",
"DeckyClash/py_modules/webdav_backup.py",
"DeckyClash/py_modules/utils.py",
"DeckyClash/py_modules/extract.py",
"DeckyClash/py_modules/external.py",
"DeckyClash/py_modules/dashboard.py",
"DeckyClash/py_modules/metadata.py",
"DeckyClash/py_modules/config.py",
"DeckyClash/py_modules/core.py",
"DeckyClash/py_modules/subscription.py"
],
"native": [],
"steamClient": [
"Settings.GetCurrentLanguage"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogControlsSectionHeader",
"Dropdown",
"DropdownItem",
"Field",
"Focusable",
"GamepadButton",
"Menu",
"MenuItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"SliderField",
"Spinner",
"TextField",
"ToggleField",
"showContextMenu",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/MetaCubeX/metacubexd",
"https://github.com/MetaCubeX/mihomo",
"https://github.com/YukiCoco/ToMoon",
"https://github.com/Zephyruso/zashboard",
"https://github.com/chenx-dust/DeckyClash",
"https://github.com/chenx-dust/DeckyClash.git",
"https://github.com/chenx-dust/meta-rules-dat",
"https://github.com/haishanh/yacd",
"https://github.com/pre-commit/pre-commit"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 115,
"name": "Decky Clash",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_config",
"get_subscription_list",
"get_dashboard_list",
"get_ip",
"get_version"
]
},
"archiveValidation": {
"id": 115,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 115,
"sha256": "2b96cc96ad3780a51fa794c250e821e15b3716851f4c96cb3d0a1e2f38890424",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 116,
"name": "Muon",
"version": "0.2.1",
"sha256": "a7659c79b74110476cc4458cb10530cdcb2539fa11bc8c759038a080eaa81049",
"tags": [
"adhoc",
"multiplayer",
"p2p",
"root",
"wifi"
],
"folder": "Muon",
"archiveBytes": 488491,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Muon/main.py"
],
"native": [],
"steamClient": [
"System",
"System.RegisterForOnResumeFromSuspend",
"System.RegisterForOnSuspendRequest"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Field",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"TextField",
"Toggle",
"findModuleExport",
"showModal",
"staticClasses"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"sudo",
"systemctl"
],
"sourceURLs": [
"https://github.com/Tormak9970/TabMaster",
"https://github.com/wtlnetwork/muon",
"https://github.com/wtlnetwork/muon.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 116,
"name": "Muon",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Failed to fetch IP address Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to initialize settings: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_ip_address",
"load_settings"
]
},
"archiveValidation": {
"id": 116,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "sudo; systemctl",
"uiSurfaces": [
"toasts",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 116,
"sha256": "a7659c79b74110476cc4458cb10530cdcb2539fa11bc8c759038a080eaa81049",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 117,
"name": "DeckyParty File Manager",
"version": "1.0.0",
"sha256": "193fb3aa0446fbc3c6bae0ae15700b5f04acebfa917b8e1791988c6ce832dddf",
"tags": [
"control",
"files",
"fileserver",
"management",
"utility",
"web"
],
"folder": "Decky-CP",
"archiveBytes": 1051080,
"api": "legacy",
"flags": [
"debug"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Decky-CP/main.py",
"Decky-CP/bin/copyparty-sfx.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"ToggleField",
"definePlugin",
"staticClasses"
],
"globals": [
"window.SP_REACT"
],
"hardwareSignals": [
"sudo"
],
"sourceURLs": [
"https://github.com/39sdev/Decky-CP",
"https://github.com/9001/copyparty"
],
"status": "partial",
"reason": "Initializer succeeds; privileged file operations and backend are unverified. No file changes were run.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 117,
"name": "DeckyParty File Manager",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_status"
]
},
"archiveValidation": {
"id": 117,
"accepted": true,
"folder": "Decky-CP"
},
"backend": "Python",
"hardware": "sudo",
"uiSurfaces": [],
"fakeFrame": {
"id": 117,
"sha256": "193fb3aa0446fbc3c6bae0ae15700b5f04acebfa917b8e1791988c6ce832dddf",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 118,
"name": "Speed Test",
"version": "1.0.2",
"sha256": "8b1ee429aece9330b83ea3fc2e7e27d007ac61a737169f20bda3f1a19ab95508",
"tags": [
"network",
"speed",
"utility"
],
"folder": "decky-speed-test",
"archiveBytes": 459951,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"staticClasses"
],
"globals": [],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Dukeman330/decky-speed-test",
"https://github.com/Dukeman330/decky-speed-test.git",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/user-attachments/assets"
],
"status": "partial",
"reason": "Initializer succeeds; automatic bandwidth tests were blocked by the audit network policy.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 118,
"name": "Speed Test",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Download test error: Error: Audit blocks plugin network"
}
],
"methods": []
},
"archiveValidation": {
"id": 118,
"accepted": true,
"folder": "decky-speed-test"
},
"backend": "no Python/native backend found",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 118,
"sha256": "8b1ee429aece9330b83ea3fc2e7e27d007ac61a737169f20bda3f1a19ab95508",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 119,
"name": "Decky Clipboard",
"version": "1.0.1",
"sha256": "d283bd9a5c35b3fac3788391736a6763f3e8c4615831a7c560c9fa6e6c0950ac",
"tags": [
"clipboard",
"utility",
"web"
],
"folder": "decky-clipboard",
"archiveBytes": 512778,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-clipboard/main.py",
"decky-clipboard/py_modules/clipboard.py"
],
"native": [
{
"file": "decky-clipboard/bin/xclip",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogBody",
"DialogButton",
"DialogControlsSection",
"DialogControlsSectionHeader",
"Field",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"SliderField",
"TextField",
"ToggleField",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster"
],
"hardwareSignals": [
"gamescope",
"sudo"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
"https://github.com/Torther/DeckyClipboard",
"https://github.com/astrand/xclip"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 119,
"name": "Decky Clipboard",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Failed to get server status: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to get clipboard: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_server_status",
"get_clipboard_data"
]
},
"archiveValidation": {
"id": 119,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip"
},
"backend": "Python + native payload",
"hardware": "gamescope; sudo",
"nativePort": "xclip needs ARM64 X11 libraries/server; root and gamescope assumptions also block this archive.",
"uiSurfaces": [
"local/Steam routes",
"toasts"
],
"fakeFrame": {
"id": 119,
"sha256": "d283bd9a5c35b3fac3788391736a6763f3e8c4615831a7c560c9fa6e6c0950ac",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-clipboard/bin/xclip."
}
},
{
"id": 120,
"name": "Reroll",
"version": "0.2.1",
"sha256": "fb573890f5f87553893c08d6cb2fd8eaf87d54ce54383365e65e545634c55b3c",
"tags": [
"developer",
"memory",
"tools",
"utility"
],
"folder": "Reroll",
"archiveBytes": 2146047,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Reroll/main.py",
"Reroll/memscan.py"
],
"native": [
{
"file": "Reroll/bin/memscan.so",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Apps.RegisterForGameActionUserRequest",
"GameSessions.RegisterForAppLifetimeNotifications",
"Settings.GetCurrentLanguage"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Field",
"Focusable",
"Marquee",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"SliderField",
"libraryAssetImageClasses",
"mainMenuAppRunningClasses",
"quickAccessMenuClasses",
"showModal"
],
"globals": [
"SteamUIStore"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/CameronRedmore/memory-deck",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/kayon/decky-reroll",
"https://github.com/kayon/decky-reroll.git",
"https://github.com/kayon/memscan"
],
"status": "broken",
"reason": "Frontend now initializes with inert game-action subscriptions, but the archive contains x86_64 memscan.so and requests root. No process-memory access was run.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 120,
"name": "Reroll",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_setting",
"version"
]
},
"archiveValidation": {
"id": 120,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: Reroll/bin/memscan.so"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "memscan.so needs ARM64 process-memory support and ABI testing; root requirement remains. Frontend initializes but no memory access was tested.",
"uiSurfaces": [
"QAM/global tabs",
"Steam stores"
],
"fakeFrame": {
"id": 120,
"sha256": "fb573890f5f87553893c08d6cb2fd8eaf87d54ce54383365e65e545634c55b3c",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Reroll/bin/memscan.so",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: Reroll/bin/memscan.so. Frontend audit failed: window.SteamClient.Apps.RegisterForGameActionUserRequest is not a function."
}
},
{
"id": 121,
"name": "DeckPass",
"version": "1.1.1",
"sha256": "4be32fd39ce406e2276b21537c98afc00a8ed1b82a23ff0e01af552352fa48f8",
"tags": [
"clipboard",
"keepass",
"password",
"password-manager",
"utility"
],
"folder": "DeckPass",
"archiveBytes": 651911,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DeckPass/main.py",
"DeckPass/py_modules/utils.py",
"DeckPass/py_modules/password_manager.py",
"DeckPass/py_modules/keypass_cli.py",
"DeckPass/py_modules/keypass_flatpak.py"
],
"native": [],
"steamClient": [
"Apps.AddShortcut",
"Apps.RunGame",
"Apps.SetCustomArtworkForApp",
"Apps.SetShortcutExe",
"Apps.SetShortcutLaunchOptions",
"Apps.SetShortcutName",
"Input.ControllerKeyboardSendText"
],
"dfl": [
"Button",
"ButtonItem",
"DialogButton",
"Field",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"Router",
"TextField",
"findSP",
"showModal",
"sleep",
"staticClasses"
],
"globals": [
"Router",
"appDetailsStore",
"appStore",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/Fisch03/SDH-QuickLaunch",
"https://github.com/Teppichseite/DeckPass",
"https://github.com/Teppichseite/DeckPass.git",
"https://github.com/aarron-lee/SimpleDeckyTDP"
],
"status": "partial",
"reason": "Initializer succeeds; KeePass Flatpak discovery and secrets integration were not exercised.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 121,
"name": "DeckPass",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"check_setup_state",
"check_keepass_flatpak_install_state"
]
},
"archiveValidation": {
"id": 121,
"accepted": true,
"folder": "DeckPass"
},
"backend": "Python",
"hardware": "flatpak",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 121,
"sha256": "4be32fd39ce406e2276b21537c98afc00a8ed1b82a23ff0e01af552352fa48f8",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 123,
"name": "Steam Status",
"version": "1.2.3",
"sha256": "9053308e04a74f44745b45b9f4f50af3673348d367e7b14bacc5677de707ac4e",
"tags": [
"monitoring",
"status",
"steam"
],
"folder": "steamstatus-decky",
"archiveBytes": 1147408,
"api": 2,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"steamstatus-decky/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Field",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"SliderField",
"ToggleField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/bschelst/steamstatus-decky",
"https://github.com/bschelst/steamstatus-decky.git",
"https://github.com/sponsors/bschelst"
],
"status": "partial",
"reason": "Settings/public status rendered locally; cache errors fixed. Read-only get_settings RPC returned actual Decky 3.3.0 defaults on ARM64 Frame. Persistence, live backend diagnostics and VR controls unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 123,
"name": "Steam Status",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Background monitor: Failed to fetch Steam status: Audit blocks plugin network"
},
{
"kind": "error",
"message": "Failed to fetch Steam status: Audit blocks plugin network"
},
{
"kind": "error",
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SteamStatus] loadSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_settings"
]
},
"archiveValidation": {
"id": 123,
"accepted": true,
"folder": "steamstatus-decky"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 123,
"sha256": "9053308e04a74f44745b45b9f4f50af3673348d367e7b14bacc5677de707ac4e",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"realFrame": {
"id": 123,
"version": "1.2.3",
"sha256": "9053308e04a74f44745b45b9f4f50af3673348d367e7b14bacc5677de707ac4e",
"method": "get_settings",
"result": {
"keys": [
"enable_notification_antiflood",
"enable_notifications",
"gateway_api_key",
"gateway_url",
"refresh_interval_seconds",
"show_history",
"show_regions",
"show_trending_games"
],
"defaultRefreshInterval": 120
},
"errors": []
}
},
{
"id": 124,
"name": "AlarMe",
"version": "1.6.3",
"sha256": "17d4166a9e98979df5fdb07c7eae42317acd54a453d3b82757508f971193c0fe",
"tags": [
"alarm",
"clock",
"pomodoro",
"productivity",
"snooze",
"timer"
],
"folder": "alarme-decky-plugin",
"archiveBytes": 5566522,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"alarme-decky-plugin/main.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"Dropdown",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBarWithInfo",
"SidebarNavigation",
"SliderField",
"TextField",
"ToggleField",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/decktools-xyz/simple-timer",
"https://github.com/lemossilva/alarme-decky-plugin",
"https://github.com/lemossilva/alarme-decky-plugin.git",
"https://github.com/mpcallahan/DeckyHourNotifications"
],
"status": "partial",
"reason": "Silent labeled timer create/ticks/pause/cancel, preset save/cancel-confirm/delete and stopwatch start/lap/pause/reset/reopen pass in local Chromium with the official Decky 3.3.0 ARM64 backend. Audio, alarms/reminders, suspend inhibition, Steam overlays and worn VR remain unverified; notifications require the panel to stay open.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"real Frame SSH"
],
"browser": {
"id": 124,
"name": "AlarMe",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Failed to load timers: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load recent timers: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load sleep inhibitor status: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to fetch missed items Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load timers: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Failed to load recent timers: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_active_timers",
"get_recent_timers",
"get_settings",
"get_presets",
"get_sleep_inhibitor_status",
"get_missed_items",
"stopwatch_get_state",
"get_pomodoro_state",
"get_reminders",
"get_game_status"
]
},
"archiveValidation": {
"id": 124,
"accepted": true,
"folder": "alarme-decky-plugin"
},
"backend": "Python",
"hardware": "Timers/stopwatch use Python. Optional sleep inhibition opens /dev/uinput; sound and auto-suspend are unverified. Steam game overlays have no target in the isolated panel.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 124,
"sha256": "17d4166a9e98979df5fdb07c7eae42317acd54a453d3b82757508f971193c0fe",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
},
"controlsFollowUp": {
"evidence": "docs/evidence/framey-dialog-controls-2026-10-26.json",
"mode": "local opaque-iframe Chromium with receipt-bound official ARM64 backend RPC/events; private silent data only",
"frontendReady": true,
"status": "partial"
}
},
{
"id": 125,
"name": "Decky Localsend",
"version": "0.4.5",
"sha256": "e271ccb55eb23f918b99a69f79aec905df4c9b2ef7b23bbf4ec1c2d1a6f0c6b7",
"tags": [
"Clipboard",
"localsend",
"Screenshot",
"Text",
"transfer"
],
"folder": "decky-localsend",
"archiveBytes": 7120631,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-localsend/main.py",
"decky-localsend/py_modules/file_utils.py",
"decky-localsend/py_modules/config_utils.py",
"decky-localsend/py_modules/http_utils.py",
"decky-localsend/py_modules/__init__.py",
"decky-localsend/py_modules/notify_server.py"
],
"native": [
{
"file": "decky-localsend/bin/localsend-core",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogBody",
"DialogButton",
"DialogButtonPrimary",
"DialogFooter",
"DialogHeader",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SidebarNavigation",
"TextField",
"ToggleField",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/MoYoez/localsend-go",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/moyoez/decky-localsend",
"https://github.com/moyoez/decky-localsend.git"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 125,
"name": "Decky Localsend",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Failed to load receive history: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_receive_history",
"get_backend_status",
"get_backend_config"
]
},
"archiveValidation": {
"id": 125,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core"
},
"backend": "Python + native payload",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"nativePort": "MIT LocalSend-Go 66edc509a28b9f877e7374504892dcbc653a4da4 reproducibly cross-built with Go 1.25.7/CGO_ENABLED=0 for ARM64; SHA-256 e79238f6051ce34f172f765ae918d3d902b819e27377989a55e5b1eba10e46f9. Help/official backend CLI flags and protocol 2.0 info endpoint passed on real Frame in an isolated network namespace. No file transfer or full plugin/CEF integration tested; exact source match to shipped helper unproven. Official ZIP stays x86_64 and blocked.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 125,
"sha256": "e271ccb55eb23f918b99a69f79aec905df4c9b2ef7b23bbf4ec1c2d1a6f0c6b7",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-localsend/bin/localsend-core."
}
},
{
"id": 126,
"name": "Launch Options",
"version": "1.9.2",
"sha256": "381ac8b915402176cf768d1ccc1bc29a6b82ea9255675f0a30c0c81ea5427225",
"tags": [
"launch options",
"quality of life"
],
"folder": "decky-launch-options",
"archiveBytes": 577859,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-launch-options/main.py",
"decky-launch-options/run.py",
"decky-launch-options/shared.py",
"decky-launch-options/tests.py"
],
"native": [
{
"file": "decky-launch-options/bin/hello",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [
"Apps.RegisterForAppDetails",
"Apps.SetAppLaunchOptions"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogBody",
"DialogButton",
"DialogButtonPrimary",
"DialogControlsSection",
"DialogControlsSectionHeader",
"DialogFooter",
"DialogHeader",
"Dropdown",
"Field",
"Focusable",
"MenuItem",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ScrollPanel",
"SidebarNavigation",
"SteamSpinner",
"Tabs",
"TextField",
"Toggle",
"ToggleField",
"afterPatch",
"createReactTreePatcher",
"fakeRenderComponent",
"findInReactTree",
"findInTree",
"findModule",
"findModuleByExport",
"showModal",
"staticClasses",
"useParams"
],
"globals": [
"SteamUIStore",
"routerHook"
],
"hardwareSignals": [
"flatpak",
"gamescope"
],
"sourceURLs": [
"https://github.com/Wurielle/decky-launch-options",
"https://github.com/Wurielle/decky-launch-options-recipes",
"https://github.com/Wurielle/decky-launch-options.git",
"https://github.com/casey/just"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello. Frontend audit failed: Cannot convert undefined or null to object.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 126,
"name": "Launch Options",
"ready": false,
"error": "Cannot convert undefined or null to object",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 126,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello"
},
"backend": "Python + native payload",
"hardware": "flatpak; gamescope",
"nativePort": "Remove the template x86 bin/hello or publish an ARM64 rebuild; missing Steam module mapping also prevents frontend initialization.",
"uiSurfaces": [
"local/Steam routes",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 126,
"sha256": "381ac8b915402176cf768d1ccc1bc29a6b82ea9255675f0a30c0c81ea5427225",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: decky-launch-options/bin/hello. Frontend audit failed: Cannot convert undefined or null to object."
}
},
{
"id": 127,
"name": "Decky Translator",
"version": "0.9.0",
"sha256": "3def99993c412b669933376b6420e44c68cd1fe9d9baf14b77a1f231242bd7e8",
"tags": [
"Translation"
],
"folder": "decky-translator",
"archiveBytes": 2543309,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-translator/main.py",
"decky-translator/py_modules/providers/ocrspace.py",
"decky-translator/py_modules/providers/google_translate.py",
"decky-translator/py_modules/providers/chromescreenai_subprocess.py",
"decky-translator/py_modules/providers/chromescreenai_provider.py",
"decky-translator/py_modules/providers/gemini_vision.py",
"decky-translator/py_modules/providers/python_runtime.py",
"decky-translator/py_modules/providers/screenai_downloader.py",
"decky-translator/py_modules/providers/rapidocr_downloader.py",
"decky-translator/py_modules/providers/base.py",
"decky-translator/py_modules/providers/free_translate.py",
"decky-translator/py_modules/providers/ct2_translate_worker.py",
"decky-translator/py_modules/providers/nllb_downloader.py",
"decky-translator/py_modules/providers/chromescreenai_protos/chrome_screen_ai_pb2.py",
"decky-translator/py_modules/providers/chromescreenai_protos/__init__.py",
"decky-translator/py_modules/providers/google_ocr.py",
"decky-translator/py_modules/providers/rapidocr_provider.py",
"decky-translator/py_modules/providers/__init__.py",
"decky-translator/py_modules/providers/ct2_translate.py",
"decky-translator/py_modules/providers/rapidocr_subprocess.py"
],
"native": [],
"steamClient": [
"User.RegisterForPrepareForSystemSuspendProgress"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Dropdown",
"DropdownItem",
"Field",
"Focusable",
"ModalRoot",
"Navigation",
"PanelSection",
"PanelSectionRow",
"Router",
"SliderField",
"Tabs",
"TextField",
"ToggleField",
"findModuleChild",
"showModal",
"staticClasses"
],
"globals": [
"Router",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"/dev/hidraw",
"/sys/class/hidraw/hidraw{i}",
"/sys/class/hidraw/hidraw{i}/device/uevent",
"x86_64"
],
"sourceURLs": [
"https://github.com/MeKo-Christian/paddleocr-onnx",
"https://github.com/OpenNMT/CTranslate2",
"https://github.com/PaddlePaddle/PaddleOCR",
"https://github.com/RapidAI/RapidOCR",
"https://github.com/SethRobinson/UGT",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/astral-sh/python-build-standalone",
"https://github.com/cat-in-a-box/Decky-Translator",
"https://github.com/cat-in-a-box/decky-translator",
"https://github.com/cat-in-a-box/decky-translator.git"
],
"status": "partial",
"reason": "Initializer succeeds; x86_64 download and hidraw/controller assumptions need an ARM64 audit. OCR/translation not exercised.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 127,
"name": "Decky Translator",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_enabled_state",
"get_provider_status",
"get_all_settings",
"check_web_reachability",
"get_hidraw_button_state"
]
},
"archiveValidation": {
"id": 127,
"accepted": true,
"folder": "decky-translator"
},
"backend": "Python",
"hardware": "/dev/hidraw; /sys/class/hidraw/hidraw{i}; /sys/class/hidraw/hidraw{i}/device/uevent; x86_64",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 127,
"sha256": "3def99993c412b669933376b6420e44c68cd1fe9d9baf14b77a1f231242bd7e8",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 128,
"name": "Quick User Switcher",
"version": "1.0.0",
"sha256": "187871a139862fc21d70286d8c1b2c2f0f7609604f88fc16415da71c4e56cef9",
"tags": [
"root",
"utility"
],
"folder": "decky-multi-user",
"archiveBytes": 457889,
"api": 1,
"flags": [
"_root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-multi-user/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"Focusable",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"afterPatch",
"showModal",
"staticClasses",
"wrapReactType"
],
"globals": [
"Router",
"routerHook"
],
"hardwareSignals": [
"sudo"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/cli",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/nikitaclicks/decky-multi-user",
"https://github.com/nikitaclicks/decky-multi-user.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 128,
"name": "Quick User Switcher",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[MultiUser] Pending launch check failed: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[MultiUser] Error loading users: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"trigger_pending_launch",
"get_users",
"get_current_user",
"get_setting"
]
},
"archiveValidation": {
"id": 128,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "sudo",
"uiSurfaces": [
"local/Steam routes",
"Steam page patches/module lookup"
],
"fakeFrame": {
"id": 128,
"sha256": "187871a139862fc21d70286d8c1b2c2f0f7609604f88fc16415da71c4e56cef9",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 129,
"name": "ShadowDeck",
"version": "1.1.11",
"sha256": "2b97b769a49ac2a45f546090fc96d07e09e146020104d708a0efdad990687f8b",
"tags": [
"network",
"proxy",
"root",
"vpn"
],
"folder": "ShadowDeck",
"archiveBytes": 16908452,
"api": 1,
"flags": [
"debug",
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"ShadowDeck/main.py",
"ShadowDeck/py_modules/shadowdeck/singbox_manager.py",
"ShadowDeck/py_modules/shadowdeck/__init__.py",
"ShadowDeck/py_modules/shadowdeck/config_renderer.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"DropdownItem",
"Focusable",
"PanelSection",
"PanelSectionRow",
"TextField",
"Toggle",
"showModal",
"staticClasses"
],
"globals": [
"toaster"
],
"hardwareSignals": [
"amd64"
],
"sourceURLs": [
"https://github.com/SagerNet/sing-box",
"https://github.com/tikh-iv/ShadowDeck",
"https://github.com/tikh-iv/ShadowDeck.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 129,
"name": "ShadowDeck",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[FRONTEND] loadInitialSettings: Failed to load settings: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_all_settings"
]
},
"archiveValidation": {
"id": 129,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "amd64",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 129,
"sha256": "2b97b769a49ac2a45f546090fc96d07e09e146020104d708a0efdad990687f8b",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 130,
"name": "Games Prefix Manager",
"version": "1.0.1",
"sha256": "ef8c727943188cad04c63fae7e4e620b8080c07f35dec0c144e99c6166307473",
"tags": [
"utilities"
],
"folder": "GamesPrefixManager",
"archiveBytes": 20058,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"GamesPrefixManager/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"DialogButton",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"TextField",
"definePlugin",
"showModal",
"staticClasses"
],
"globals": [],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Saad-Alareqi/GamesPrefixManager"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 130,
"name": "Games Prefix Manager",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 130,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [],
"fakeFrame": {
"id": 130,
"sha256": "ef8c727943188cad04c63fae7e4e620b8080c07f35dec0c144e99c6166307473",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 131,
"name": "Download All",
"version": "1.1.0",
"sha256": "0641231eec139e3231e7b5369d0dbacefd686b52e3f2fffb39384876881408da",
"tags": [
"downloads",
"queue"
],
"folder": "decky-download-all",
"archiveBytes": 458857,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-download-all/main.py"
],
"native": [],
"steamClient": [
"Downloads",
"Downloads.RegisterForDownloadItems"
],
"dfl": [
"ButtonItem",
"PanelSection",
"PanelSectionRow",
"SliderField"
],
"globals": [
"appStore",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
"https://github.com/bentemple/decky-download-all"
],
"status": "broken",
"reason": "Initializer succeeds; Steam download registration is absent, so the primary action is unavailable.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 131,
"name": "Download All",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "TypeError: Cannot read properties of undefined (reading 'RegisterForDownloadItems')"
},
{
"kind": "error",
"message": "Failed to log: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"log_from_ui"
]
},
"archiveValidation": {
"id": 131,
"accepted": true,
"folder": "decky-download-all"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 131,
"sha256": "0641231eec139e3231e7b5369d0dbacefd686b52e3f2fffb39384876881408da",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 132,
"name": "SuggestMe",
"version": "1.5.3",
"sha256": "248294b5d6b9d5a5d635ce35f4b5185ce59d4e4fd59353e24df4b29d74c2ade4",
"tags": [
"game-library",
"recommendations",
"steam",
"suggestion"
],
"folder": "SuggestMe-decky-plugin",
"archiveBytes": 692130,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"SuggestMe-decky-plugin/main.py"
],
"native": [],
"steamClient": [
"GameSessions.RegisterForAppLifetimeNotifications"
],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DropdownItem",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ProgressBar",
"SidebarNavigation",
"SliderField",
"Spinner",
"TextField",
"ToggleField",
"showModal",
"staticClasses"
],
"globals": [
"appStore",
"collectionStore",
"routerHook",
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/Tormak9970/TabMaster",
"https://github.com/lemossilva/suggestme-decky-plugin",
"https://github.com/lemossilva/suggestme-decky-plugin.git"
],
"status": "partial",
"reason": "Initializer succeeds; recommendation backend and Steam library data unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 132,
"name": "SuggestMe",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[SuggestMe] Failed to load config: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load library status: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load play next list: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load excluded games: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load filter presets: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load history: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load non-steam info: Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "[SuggestMe] Failed to load collections: Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"log_message",
"get_config",
"get_library_status",
"get_play_next_list",
"get_excluded_games",
"get_filter_presets",
"get_suggestion_history",
"get_non_steam_games",
"get_collections",
"get_available_genres",
"get_available_tags",
"get_available_community_tags"
]
},
"archiveValidation": {
"id": 132,
"accepted": true,
"folder": "SuggestMe-decky-plugin"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam stores"
],
"fakeFrame": {
"id": 132,
"sha256": "248294b5d6b9d5a5d635ce35f4b5185ce59d4e4fd59353e24df4b29d74c2ade4",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 133,
"name": "Non-Steam Badges",
"version": "0.1.0",
"sha256": "9c12b21fd02da12f4c37f9aab68d75172a11787d09c3478f15b4fc97e01df131",
"tags": [
"badges",
"non-steam",
"nonsteam",
"ui",
"utility"
],
"folder": "decky-nonsteam-badges",
"archiveBytes": 1055486,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-nonsteam-badges/main.py",
"decky-nonsteam-badges/py_modules/vdf/vdict.py",
"decky-nonsteam-badges/py_modules/vdf/__init__.py"
],
"native": [],
"steamClient": [],
"dfl": [
"DialogButton",
"DropdownItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"createReactTreePatcher",
"findInReactTree",
"getGamepadNavigationTrees"
],
"globals": [
"collectionStore",
"routerHook"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/mubaraknumann/unifideck",
"https://github.com/sebet/decky-nonsteam-badges",
"https://github.com/user-attachments/assets"
],
"status": "partial",
"reason": "Initializer succeeds; Non-Steam game badges have no supported Steam page injection target.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 133,
"name": "Non-Steam Badges",
"ready": true,
"error": null,
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 133,
"accepted": true,
"folder": "decky-nonsteam-badges"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 133,
"sha256": "9c12b21fd02da12f4c37f9aab68d75172a11787d09c3478f15b4fc97e01df131",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 134,
"name": "Deck Progress Tracker",
"version": "1.3.6",
"sha256": "784c59e7e2a344eb6803d00e341c7d5f10d42cea7b60cc4332f4c3687db14fb3",
"tags": [
"achievements",
"enhancement",
"library",
"progress-tracking",
"statistics"
],
"folder": "deck-progress-tracker",
"archiveBytes": 502121,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"deck-progress-tracker/main.py",
"deck-progress-tracker/py_modules/steam_data.py",
"deck-progress-tracker/py_modules/database.py",
"deck-progress-tracker/py_modules/hltb_service.py"
],
"native": [],
"steamClient": [
"Apps.GetAllApps",
"Apps.GetMyAchievementsForApp"
],
"dfl": [
"ButtonItem",
"DialogButton",
"Focusable",
"Navigation",
"PanelSection",
"PanelSectionRow",
"afterPatch",
"appDetailsClasses",
"appDetailsHeaderClasses",
"createReactTreePatcher",
"findInReactTree",
"staticClasses"
],
"globals": [
"appStore",
"collectionStore",
"routerHook",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/ScrappyCocco/HowLongToBeat-PythonAPI",
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/maroun2/deck-progress-tracker"
],
"status": "partial",
"reason": "Initializer succeeds; Steam game/library statistics and page patches unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 134,
"name": "Deck Progress Tracker",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_settings",
"get_tag_statistics"
]
},
"archiveValidation": {
"id": 134,
"accepted": true,
"folder": "deck-progress-tracker"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 134,
"sha256": "784c59e7e2a344eb6803d00e341c7d5f10d42cea7b60cc4332f4c3687db14fb3",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 135,
"name": "Deck Shelves",
"version": "2.0.0",
"sha256": "b566280ad38fd3ecd584b5b46a855f301539eb9a86063834c64b7045f7063f91",
"tags": [
"collections",
"customization",
"filters",
"home",
"library",
"shelves",
"tabs"
],
"folder": "Deck-Shelves",
"archiveBytes": 862269,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "1",
"pythonFiles": [
"Deck-Shelves/main.py"
],
"native": [],
"steamClient": [
"Apps.RegisterForAppDetails",
"System.GetOSVersion",
"System.GetSystemInfo"
],
"dfl": [
"showContextMenu"
],
"globals": [
"SteamUIStore",
"appDetailsStore",
"appStore",
"collectionStore",
"routerHook",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/ValveSoftware/SteamOS",
"https://github.com/santojon/Deck-Shelves",
"https://github.com/santojon/Deck-Shelves.git",
"https://github.com/sponsors/santojon"
],
"status": "partial",
"reason": "The exact chunked frontend now initializes and renders Deck Shelves settings in an opaque local Chromium panel. Backend calls were denied; Home-screen shelf injection has no verified Steam UI target in Framey. Settings writes, real backend behavior and worn VR are unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 135,
"name": "Deck Shelves",
"ready": false,
"error": "Failed to resolve module specifier \"./chunks/pluginApi-B8sV7970.js\". Invalid relative url or base scheme isn't hierarchical.",
"logs": [],
"methods": []
},
"archiveValidation": {
"id": 135,
"accepted": true,
"folder": "Deck-Shelves"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"QAM/global tabs",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 135,
"sha256": "b566280ad38fd3ecd584b5b46a855f301539eb9a86063834c64b7045f7063f91",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"chunkedFollowUp": {
"evidence": "docs/evidence/framey-deck-shelves-browser-2026-10-26.md",
"mode": "exact archive in opaque local Chromium; backend and network denied",
"frontendReady": true,
"settingsRendered": true
}
},
{
"id": 136,
"name": "Decky-Clipper",
"version": "1.0.2",
"sha256": "31d4d66032eb778140b96c0b27e53cb5e969395bca6ffc288b1fa283ecfb2401",
"tags": [],
"folder": "Decky-Clipper",
"archiveBytes": 4009837,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"Decky-Clipper/main.py"
],
"native": [
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmidi.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegtsmux.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-plugin-scanner",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstivfparse.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiovisualizers.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstspeed.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstpnm.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfaceoverlay.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaccurip.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrawparse.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideotestsrc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstivtc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcodectimestamper.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstxvimagesink.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsttranscode.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstremovesilence.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsttypefindfunctions.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstasfmux.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstinsertbin.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstplayback.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstwaylandsink.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstjpegformat.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstbayer.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstnice.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstinter.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstbluez.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-ptp-helper",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfbdevsink.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvbsubenc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaiff.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfrei0r.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdecklink.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstva.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideoconvertscale.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegpsdemux.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsttcp.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvb.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegpsmux.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvdspu.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstadpcmenc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiomixmatrix.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdsd.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstshm.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstadder.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcoretracers.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstipcpipeline.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvulkan.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsubparse.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfieldanalysis.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudioconvert.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsubenc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcoloreffects.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstadpcmdec.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsmooth.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideosignal.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvolume.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstuvch264.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideoframe_audiolevel.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrtponvif.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiofxbad.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstximagesink.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcompositor.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideoparsersbad.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstapp.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideorate.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstinterlace.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiotestsrc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstnetsim.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsiren.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmpegtsdemux.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiorate.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-hotdoc-plugins-scanner",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstlegacyrawparse.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstoverlaycomposition.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvideofiltersbad.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgio.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmxf.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcoreelements.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstv4l2codecs.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstpbtypes.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstid3tag.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsdpelem.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgaudieffects.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstvmnc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstautoconvert.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstnvcodec.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrtmp2.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgdp.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstuvcgadget.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstmse.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstpcapparse.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiobuffersplit.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdvbsuboverlay.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrtpmanagerbad.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcamerabin.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstswitchbin.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiomixer.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstbasedebug.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgsty4mdec.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrfbsrc.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfreeverb.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/gst-completion-helper",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstjp2kdecimator.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstrist.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstunixfd.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstkms.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstgeometrictransform.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstencoding.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudiolatency.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstdebugutilsbad.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstfestival.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstcodecalpha.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstaudioresample.so",
"elfMachine": 62,
"arch": "x86_64"
},
{
"file": "Decky-Clipper/bin/gstreamer-1.0/libgstsegmentclip.so",
"elfMachine": 62,
"arch": "x86_64"
}
],
"steamClient": [],
"dfl": [
"ButtonItem",
"ModalRoot",
"Navigation",
"PanelSection",
"Router",
"ToggleField",
"showModal",
"staticClasses"
],
"globals": [
"Router"
],
"hardwareSignals": [
"gamescope"
],
"sourceURLs": [
"https://github.com/Managor/Decky-Clipper",
"https://github.com/Managor/Decky-Clipper.git",
"https://github.com/SDH-Stewardship/decky-recorder-fork"
],
"status": "broken",
"reason": "Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 136,
"name": "Decky-Clipper",
"ready": true,
"error": null,
"logs": [],
"methods": [
"is_recording"
]
},
"archiveValidation": {
"id": 136,
"accepted": false,
"reason": "Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so"
},
"backend": "Python + native payload",
"hardware": "gamescope",
"nativePort": "Rebuild all bundled GStreamer libraries/plugins for ARM64 and verify capture/codec ABI against Frame SteamVR; gamescope capture differs.",
"uiSurfaces": [],
"fakeFrame": {
"id": 136,
"sha256": "31d4d66032eb778140b96c0b27e53cb5e969395bca6ffc288b1fa283ecfb2401",
"archiveValidation": "Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so",
"result": "blocked",
"reason": "ValueError: Plugin contains a non-ARM64 Linux binary: Decky-Clipper/bin/gstreamer-1.0/libgstproxy.so."
}
},
{
"id": 137,
"name": "Decky Proton Launch",
"version": "0.9.0",
"sha256": "e7b98a7ca8817ef08584ed0828eee8702631af33daccc229075a012eca91f731",
"tags": [
"command",
"launch",
"proton"
],
"folder": "decky-proton-launch",
"archiveBytes": 987713,
"api": 1,
"flags": [
"debug"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-proton-launch/main.py",
"decky-proton-launch/py_modules/proton_launch/steam.py",
"decky-proton-launch/py_modules/proton_launch/image.py",
"decky-proton-launch/py_modules/proton_launch/vdf.py",
"decky-proton-launch/py_modules/proton_launch/launch_option.py",
"decky-proton-launch/py_modules/proton_launch/profile.py",
"decky-proton-launch/py_modules/proton_launch/__init__.py",
"decky-proton-launch/py_modules/proton_launch/plugin.py"
],
"native": [],
"steamClient": [
"Apps.RegisterForAppDetails",
"Apps.SetAppLaunchOptions",
"User.StartRestart"
],
"dfl": [
"ConfirmModal",
"DialogButton",
"DropdownItem",
"Focusable",
"GamepadButton",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"showModal",
"staticClasses"
],
"globals": [
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/SteamDeckHomebrew/decky-plugin-template.git",
"https://github.com/moi952/decky-proton-launch",
"https://github.com/moi952/decky-proton-launch.git"
],
"status": "partial",
"reason": "Initializer succeeds; Proton wrapper installation and launch changes were not run.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 137,
"name": "Decky Proton Launch",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_games",
"get_configured_apps_status",
"is_script_installed",
"get_wrapper_app_ids",
"get_running_game",
"get_variables_cache"
]
},
"archiveValidation": {
"id": 137,
"accepted": true,
"folder": "decky-proton-launch"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 137,
"sha256": "e7b98a7ca8817ef08584ed0828eee8702631af33daccc229075a012eca91f731",
"archiveValidation": "accepted",
"result": "installed-removed"
}
},
{
"id": 138,
"name": "Docky",
"version": "1.4.13",
"sha256": "c4f9760724bfdae0581a64252a9504c225f0f9a7fc378b2ade1891e2755aae01",
"tags": [
"automation",
"dock",
"streaming",
"sunshine",
"triggers"
],
"folder": "Docky",
"archiveBytes": 110404,
"api": "legacy",
"flags": [
"root"
],
"modernBridge": false,
"frontend": true,
"frontendApi": "legacy",
"pythonFiles": [
"Docky/main.py",
"Docky/py_modules/padswap.py",
"Docky/py_modules/deckops.py",
"Docky/py_modules/sysenv.py",
"Docky/py_modules/docky.py",
"Docky/py_modules/sunshine.py",
"Docky/py_modules/mdns.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"DropdownItem",
"Field",
"Focusable",
"ModalRoot",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"definePlugin",
"showModal"
],
"globals": [
"toaster",
"window.SP_REACT"
],
"hardwareSignals": [
"/sys/bus/usb/devices/",
"/sys/bus/usb/devices/*",
"/sys/bus/usb/drivers/usb/",
"/sys/bus/usb/drivers/usb/%s",
"/sys/class/drm/*/status",
"/sys/class/drm/card*-*/",
"/sys/class/hwmon/hwmon*",
"/sys/class/hwmon/hwmonN",
"/sys/class/power_supply/*/online",
"/sys/class/thermal",
"/sys/class/thermal/thermal_zone*/temp",
"amdgpu",
"flatpak",
"gamescope",
"hwmon",
"pactl",
"sudo",
"systemctl"
],
"sourceURLs": [
"https://github.com/LizardByte/Sunshine",
"https://github.com/datbird/docky",
"https://github.com/datbird/docky.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 138,
"name": "Docky",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_state"
]
},
"archiveValidation": {
"id": 138,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "/sys/bus/usb/devices/; /sys/bus/usb/devices/*; /sys/bus/usb/drivers/usb/; /sys/bus/usb/drivers/usb/%s; /sys/class/drm/*/status; /sys/class/drm/card*-*/; /sys/class/hwmon/hwmon*; /sys/class/hwmon/hwmonN; /sys/class/power_supply/*/online; /sys/class/thermal; /sys/class/thermal/thermal_zone*/temp; amdgpu; flatpak; gamescope; hwmon; pactl; sudo; systemctl",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 138,
"sha256": "c4f9760724bfdae0581a64252a9504c225f0f9a7fc378b2ade1891e2755aae01",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 139,
"name": "Output Manager",
"version": "1.4.0",
"sha256": "a13202785b57a91462c431bb14c3fbdcbabab00822a197ea592bc375f20a9972",
"tags": [
"audio",
"display",
"outputs",
"utility"
],
"folder": "output-manager",
"archiveBytes": 2499434,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"output-manager/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Navigation",
"PanelSection",
"PanelSectionRow",
"TextField",
"ToggleField",
"staticClasses"
],
"globals": [],
"hardwareSignals": [
"/sys/class/drm",
"/sys/class/drm/card{card_number}/device",
"/sys/kernel/debug/dri",
"pactl"
],
"sourceURLs": [
"https://github.com/joeatethebeans/OutputManager"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 139,
"name": "Output Manager",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_state",
"get_config"
]
},
"archiveValidation": {
"id": 139,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "/sys/class/drm; /sys/class/drm/card{card_number}/device; /sys/kernel/debug/dri; pactl",
"uiSurfaces": [],
"fakeFrame": {
"id": 139,
"sha256": "a13202785b57a91462c431bb14c3fbdcbabab00822a197ea592bc375f20a9972",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 140,
"name": "IPv6 Enabler Plugin",
"version": "0.0.1",
"sha256": "0198bdc752ff001ee704a85b15b4d5ad40cf03bdafd0fce67e3c21f01654e36f",
"tags": [
"ipv6",
"networking",
"root"
],
"folder": "decky-ipv6",
"archiveBytes": 446886,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-ipv6/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"DropdownItem",
"Field",
"PanelSection",
"PanelSectionRow",
"staticClasses"
],
"globals": [
"toaster"
],
"hardwareSignals": [
"/sys/net/ipv6/conf"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-loader",
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/spmzt/decky-ipv6",
"https://github.com/spmzt/decky-ipv6.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 140,
"name": "IPv6 Enabler Plugin",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_status"
]
},
"archiveValidation": {
"id": 140,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "/sys/net/ipv6/conf",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 140,
"sha256": "0198bdc752ff001ee704a85b15b4d5ad40cf03bdafd0fce67e3c21f01654e36f",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: Root plugins are not supported by the Frame user service"
}
},
{
"id": 141,
"name": "DeckyClocker",
"version": "1.0.0",
"sha256": "02a08172c878e9fe92c090df07b271190cc3f7d2b2330d05eedb027122fc7b32",
"tags": [
"utility"
],
"folder": "DeckyClocker",
"archiveBytes": 329508,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"DeckyClocker/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"Field",
"PanelSection",
"PanelSectionRow",
"SliderField"
],
"globals": [
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/Jaccident/DeckyClocker",
"https://github.com/Jaccident/DeckyClocker.git"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 141,
"name": "DeckyClocker",
"ready": true,
"error": null,
"logs": [],
"methods": [
"get_status"
]
},
"archiveValidation": {
"id": 141,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 141,
"sha256": "02a08172c878e9fe92c090df07b271190cc3f7d2b2330d05eedb027122fc7b32",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 142,
"name": "MuteOnSleep",
"version": "1.0.1",
"sha256": "4df068dc0b479a4028c3270bec544dadafe3dea63455ce05926c8dc183350ff9",
"tags": [
"audio",
"utility"
],
"folder": "MuteOnSleep",
"archiveBytes": 441125,
"api": 1,
"flags": [
"_root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"MuteOnSleep/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"PanelSection",
"PanelSectionRow",
"ToggleField"
],
"globals": [],
"hardwareSignals": [
"pactl",
"sudo"
],
"sourceURLs": [
"https://github.com/genc-v/mute-on-sleep"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 142,
"name": "MuteOnSleep",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "[MuteOnSleep] failed to register suspend hook: ReferenceError: SuspendResumeStore is not defined"
}
],
"methods": [
"get_enabled"
]
},
"archiveValidation": {
"id": 142,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "pactl; sudo",
"uiSurfaces": [
"Steam stores"
],
"fakeFrame": {
"id": 142,
"sha256": "4df068dc0b479a4028c3270bec544dadafe3dea63455ce05926c8dc183350ff9",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
},
{
"id": 143,
"name": "Desktop Apps",
"version": "0.1.0",
"sha256": "33fb674993c9b2bd119f0c6118c465e379f166ec1539c8183fcf7580f1d89577",
"tags": [
"applications",
"apps",
"desktop",
"flatpak"
],
"folder": "decky-desktop-apps",
"archiveBytes": 723400,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-desktop-apps/main.py"
],
"native": [],
"steamClient": [
"Apps.AddShortcut",
"Apps.RemoveShortcut",
"Apps.RunGame",
"Apps.SetShortcutExe",
"Apps.SetShortcutLaunchOptions",
"Apps.SetShortcutName",
"Apps.SetShortcutStartDir",
"GameSessions.RegisterForAppLifetimeNotifications"
],
"dfl": [
"DialogButton",
"Focusable",
"Menu",
"MenuItem",
"PanelSection",
"PanelSectionRow",
"showContextMenu",
"staticClasses"
],
"globals": [
"appStore",
"toaster"
],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/SteamDeckHomebrew/decky-plugin-template",
"https://github.com/allmazz/decky-desktop-apps",
"https://github.com/allmazz/decky-desktop-apps.git"
],
"status": "partial",
"reason": "Initializer succeeds; Flatpak app discovery and Steam shortcut changes unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 143,
"name": "Desktop Apps",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "%c @decky/ui %c DesktopApps %c background: #16a085; color: black; background: #FF0000; background: transparent; Failed to fetch apps Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_temporary_shortcuts",
"get_apps"
]
},
"archiveValidation": {
"id": 143,
"accepted": true,
"folder": "decky-desktop-apps"
},
"backend": "Python",
"hardware": "flatpak",
"uiSurfaces": [
"toasts",
"Steam stores"
],
"fakeFrame": {
"id": 143,
"sha256": "33fb674993c9b2bd119f0c6118c465e379f166ec1539c8183fcf7580f1d89577",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"runningFollowUp": {
"evidence": "docs/evidence/framey-running-context-2026-10-26.json",
"mode": "synthetic nonempty running/library replay; backend and network denied",
"frontendReady": true
}
},
{
"id": 144,
"name": "Mixer",
"version": "0.1.0",
"sha256": "4b3546170e5fbd5f9afad3b24555498ee51caac7cec9e4c86321b18cdd4b5106",
"tags": [
"audio",
"bluetooth",
"media"
],
"folder": "decky-volume-mixer",
"archiveBytes": 754914,
"api": 1,
"flags": [],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"decky-volume-mixer/main.py"
],
"native": [],
"steamClient": [],
"dfl": [
"ButtonItem",
"ConfirmModal",
"DialogButton",
"Focusable",
"PanelSection",
"PanelSectionRow",
"SliderField",
"TextField",
"showModal",
"staticClasses"
],
"globals": [
"toaster"
],
"hardwareSignals": [
"flatpak"
],
"sourceURLs": [
"https://github.com/allmazz/decky-volume-mixer",
"https://github.com/allmazz/decky-volume-mixer.git"
],
"status": "works",
"reason": "Per-app discovery and numeric volume changes pass in local Chromium through real Decky 3.3.0 ARM64 on the Frame audio session, independently read back on a silent test stream. Filters persist on amd64; ARM64 filter persistence, Reset, internal audio nodes, audible output and worn VR unverified.",
"blockInstall": false,
"verification": [
"static archive",
"local browser",
"fake-Frame",
"isolated Linux backend",
"real Frame SSH"
],
"browser": {
"id": 144,
"name": "Mixer",
"ready": true,
"error": null,
"logs": [
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
},
{
"kind": "error",
"message": "Error: Read-only compatibility audit: backend method blocked"
}
],
"methods": [
"get_settings",
"get_playbacks"
]
},
"archiveValidation": {
"id": 144,
"accepted": true,
"folder": "decky-volume-mixer"
},
"backend": "Python",
"hardware": "PipeWire, pw-dump and wpctl",
"uiSurfaces": [
"toasts"
],
"fakeFrame": {
"id": 144,
"sha256": "4b3546170e5fbd5f9afad3b24555498ee51caac7cec9e4c86321b18cdd4b5106",
"archiveValidation": "accepted",
"result": "installed-removed"
},
"localBackend": {
"runtime": "Decky 3.3.0 amd64",
"evidence": "docs/evidence/framey-audio-backends-2026-10-26.json",
"audio": "private silent virtual targets",
"realFrame": false
}
},
{
"id": 145,
"name": "VARTA",
"version": "1.0.21",
"sha256": "7c01464c55d895651295b7fae9b6258ddf570bc84ab3265fe9582102b43fa400",
"tags": [
"library",
"steam",
"ukraine"
],
"folder": "varta",
"archiveBytes": 1061452,
"api": 1,
"flags": [
"root"
],
"modernBridge": true,
"frontend": true,
"frontendApi": "2",
"pythonFiles": [
"varta/main.py",
"varta/py_modules/extensions/varta.py",
"varta/py_modules/extensions/prystanok.py",
"varta/py_modules/extensions/base.py",
"varta/py_modules/extensions/__init__.py"
],
"native": [],
"steamClient": [
"Store.SetWishlist",
"StoreItems.SetWishlist",
"User",
"User.GetSteamID"
],
"dfl": [
"ButtonItem",
"DropdownItem",
"Field",
"PanelSection",
"PanelSectionRow",
"Spinner",
"ToggleField",
"afterPatch",
"appDetailsClasses",
"beforePatch",
"createReactTreePatcher",
"findInReactTree",
"findModule",
"findModuleByExport",
"findModuleExport",
"staticClasses",
"useParams"
],
"globals": [
"routerHook",
"toaster"
],
"hardwareSignals": [],
"sourceURLs": [
"https://github.com/HARd/varta-decky",
"https://github.com/Ka3u6y6a/decky-prystanok"
],
"status": "broken",
"reason": "This plugin needs root and is not supported by the Frame user service.",
"blockInstall": true,
"verification": [
"static archive",
"local browser",
"fake-Frame"
],
"browser": {
"id": 145,
"name": "VARTA",
"ready": true,
"error": null,
"logs": [
{
"kind": "warn",
"message": "[VARTA] library tile component not found, grid badges disabled"
}
],
"methods": [
"get_settings",
"get_database_stats",
"get_update_status"
]
},
"archiveValidation": {
"id": 145,
"accepted": false,
"reason": "This plugin needs root and is not supported by the Frame user service"
},
"backend": "Python",
"hardware": "No specific hardware requirement detected statically; runtime requirements unverified.",
"uiSurfaces": [
"local/Steam routes",
"toasts",
"Steam page patches/module lookup",
"Steam stores"
],
"fakeFrame": {
"id": 145,
"sha256": "7c01464c55d895651295b7fae9b6258ddf570bc84ab3265fe9582102b43fa400",
"archiveValidation": "This plugin needs root and is not supported by the Frame user service",
"result": "blocked",
"reason": "ValueError: This plugin needs root and is not supported by the Frame user service."
}
}
],
"fakeFrameMethod": "116 exact archives validated and attempted through real HTTP/SSH in private disposable fake Frame; 60 installed, frontend bytes/receipt checked, then removed; 56 rejected. Official backend code never executed.",
"realFrameMethod": "2026-10-25: shared lock held; isolated temporary Decky 3.3.0 ARM64 user service with only exact ProtonDB/Steam Status backends; read-only settings RPCs succeeded via existing Steam CEF websocket. Temporary service/base removed and lock released; battery 100 to 99; no power settings changed. No official plugin panel was opened in VR. Follow-up 2026-10-26: safe isolated Notebook draw/save/reopen and Simple Timer event/start/cancel/persistence checks; see docs/evidence/framey-events-backend-2026-10-26.json."
}