# Decky Loader: a plugin launcher for the Steam Deck, and what it costs you

> Decky Loader injects a plugin system into SteamOS so Python-backed plugins can run inside Gaming Mode. It is a good fit for tinkerers on a stock Steam Deck, and a poor fit for anyone who wants a plugin platform that survives every OS update without a reinstall.

**SteamDeckHomebrew/decky-loader** — A plugin loader for the Steam Deck.

- Repository: https://github.com/SteamDeckHomebrew/decky-loader
- Website: https://decky.xyz
- Stars: 7,307 · Forks: 265
- Language: TypeScript
- License: GPL-2.0
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/steamdeckhomebrew-decky-loader

## What Decky Loader actually adds to a Steam Deck

SteamOS ships as a locked-down image. You get Steam, Gaming Mode, and a Desktop Mode that is a normal KDE session, but there is no supported way to hang your own UI inside the Gaming Mode overlay. Decky Loader exists to fill that gap. The README describes it as a homebrew plugin launcher, and it names the kinds of plugins people install: menu styling, system sounds, screen saturation, and additional system settings. Each of those is a separate project linked from the README, not a built-in feature.

The audience is narrower than the download count suggests. You need a Steam Deck, you need to switch to Desktop Mode at least once, and you need to be comfortable double-clicking an installer file and typing an admin password, or piping a shell script into sh. The README states the installation can be done without an admin/sudo password set, which matters on a device where you may never have created one. It also recommends preparing a mouse and keyboard, and lists USB-C, Bluetooth, KDE Connect, the Steam Link app, and the on-screen keyboard as ways to get input. That list is a fair signal of who this is for: someone willing to plug in a keyboard to install a plugin loader.

What it is not is a store. The plugin catalogue lives at plugins.deckbrew.xyz, and the loader is the runtime that hosts whatever you install from there. The value proposition is the loader's plugin API, not any single plugin.

## How the loader injects plugins and talks to Python

The repository layout tells you most of the architecture. There is a frontend/ directory and a backend/ directory, plus scripts/, dist/, docs/, and a flake.nix with a flake.lock for a Nix-based development shell. The primary language is TypeScript, which is the frontend, and the topics list includes Python, which is the backend. The README's feature list confirms the split: it advertises two-way communication between plugins and the loader, and Python functions run from TypeScript React.

So the data flow is roughly this. A plugin ships a React frontend that renders inside the Decky UI in Gaming Mode, and a Python backend that runs on the device. The loader brokers calls between them, which is why the README calls out two-way communication as a feature rather than an implementation detail: a plugin's UI can call into Python, and Python can push back to the UI. The other advertised capability is that plugins can make fetch calls that bypass CORS completely. That is a deliberate loosening of a browser security boundary, and it is the single most important line in the feature list for anyone thinking about trust. A plugin you install can reach network endpoints that a normal web page could not.

The loader also claims clean injecting and loading of multiple plugins, and that it stays installed between system updates and reboots. The second claim is contradicted in practice by the Common Issues section, which says Decky will sometimes disappear on SteamOS updates. Both statements come from the same README, and the honest reading is that persistence is the goal, not a guarantee.

## Installing Decky Loader from Desktop Mode

The documented install path runs through Desktop Mode. Press the Steam button, open the Power menu, select Switch to Desktop, then navigate to the GitHub page in a browser and download the installer file. The README notes that Firefox will name it decky_installer.desktop.download and that you must rename it to decky_installer.desktop before running it. Drag it to the desktop and double-click. You then either type your admin password or let Decky temporarily set it to Decky!, a password the README says is removed after the installer finishes.

The installer asks which branch you want. Latest Release is described as intended for most users; Latest Pre-Release is described as intended for plugin developers and as unlikely to be fully stable. Pick accordingly, then open the Return to Gaming Mode shortcut on the desktop.

If you have Konsole available, the README gives a one-line fast install instead:

```bash
curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh
```

That downloads and executes the release install script directly. You should expect a password prompt, and you should read the script before piping it if you care about what runs as root on your device. Note that this path installs the release branch; the README does not give an equivalent one-liner for the prerelease.

The first real use is to open the Quick Access menu in Gaming Mode and look for the Decky icon, then install a plugin from the catalogue. The README itself does not walk through the plugin install UI, so the wiki at wiki.deckbrew.xyz is where that detail lives. Uninstallation is documented in the README as a section, and the README asks that you consider opening an issue first if you are uninstalling because of a problem.

## Port 8080, 1337, and the update that removes Decky

Two failure modes are documented plainly, and both are worth reading before you install.

The first is port contention. The README states that Syncthing may use port 8080 on the Steam Deck, which Decky Loader needs to function, and that if you run Syncthing as a service you should change its port. It recommends 8384 for Syncthing. It then generalizes: if you use any software that uses port 1337 or 8080, change its port or uninstall it. That is an unusually blunt requirement. If your workflow depends on a service bound to either port, Decky Loader is the wrong tool until you renumber that service, and the loader does not appear to offer a configurable port of its own.

The second is disappearance after SteamOS updates. The README says Decky will sometimes disappear on SteamOS updates and that the fix is usually to re-run the installer and install the stable branch again. If that fails, it suggests installing the prerelease instead. If that fails, it points to the existing issues and the bug report template. Read that sequence as the project's own description of its reliability: there is no documented in-place upgrade that survives an OS update, and the recovery is a reinstall, sometimes on a different branch than the one you wanted.

There is a third, quieter limitation in the feature list itself. CORS bypass means the plugin sandbox is permissive by design. Decky Loader does not publish a permission model in the README, so the trust boundary is the plugin catalogue and your own judgement about what you install.

## Decky Loader compared with writing your own SteamOS tweaks

The realistic alternative is not another plugin loader. It is doing the work yourself: editing SteamOS files, running a userspace daemon, or patching the Steam client UI directly, the way the individual plugins listed in the README originally did before they moved under Decky.

The difference is in what you maintain. A hand-rolled tweak is a script you own, with no dependency on a loader that has to re-inject itself after every SteamOS update. Decky Loader gives you a UI surface inside Gaming Mode, a TypeScript-to-Python bridge, and a distribution channel, but it also adds a component that the README admits can disappear on updates. If your need is a single CSS override or a single system sound, a standalone approach has fewer moving parts. If you want several plugins, a shared UI, and someone else handling injection, the loader earns its place.

A second alternative is to stay on the stock experience. Nothing in the README suggests Decky Loader is required for anything the device ships with; every feature it enables is described as a modification. That is a legitimate choice, and it is the one to make if you do not want to reinstall software after OS updates.

## Maintenance, releases, and the GPL-2.0 licence

The repository is not archived, and the last push was on 2026-09-21, one day before this writing. Releases are frequent: v3.2.9 on 2026-09-15, a v3.2.9-pre1 prerelease on 2026-09-14, and v3.2.8 on 2026-09-02. The pattern of stable releases with short-lived prereleases matches the installer's branch choice, so the prerelease channel is genuinely used rather than abandoned.

Your upgrade cost is not a package manager operation. Because the README's recovery path for a vanished install is to re-run the installer, plan on treating Decky Loader as something you reinstall rather than something you update in place. The README does not document an in-place upgrade command, so do not assume one exists.

The project is licensed GPL-2.0. For someone installing plugins on their own device, that is mostly a formality. For anyone distributing a modified loader or bundling it into a product, GPL-2.0 carries obligations around source availability and derivative works. This is not legal advice; if you are shipping something, read the LICENSE file in the repository root and talk to someone qualified.

## Conclusion

Adopt Decky Loader if you have a stock Steam Deck, you want menu theming, system sound changes, saturation control or extra power settings, and you accept that a SteamOS update may wipe it and that a re-run of the installer is the usual fix. Do not adopt it if you want a plugin platform you never have to maintain, if you cannot free ports 8080 and 1337, or if you are looking for a Windows plugin host, because the documented install path is the Steam Deck's Desktop Mode. Before installing, check what owns port 8080 on your device, confirm whether Syncthing is running as a service, and decide whether you want the stable release or the prerelease branch, since the README points plugin developers at prereleases and everyone else at the stable release.

## FAQ

### What is Decky Loader?

It is a homebrew plugin launcher for the Steam Deck, built primarily in TypeScript with a Python backend. The README lists menu styling, system sounds, screen saturation and additional system settings as examples of what its plugins do.

### Why has Decky Loader disappeared?

The README states that Decky will sometimes disappear on SteamOS updates, and that the usual fix is to re-run the installer and install the stable branch again. If that does not work, it suggests trying the prerelease branch, then checking existing issues.

### How do I install Decky Loader on a Steam Deck?

Switch to Desktop Mode, download the installer .desktop file, drag it to the desktop and double-click it, then supply an admin password or let Decky temporarily set it to Decky!. The README also gives a Konsole fast install that pipes install_release.sh into sh.

### How do I use Decky Loader on a Steam Deck?

After installing and returning to Gaming Mode, the loader hosts plugins you install from the plugin catalogue, with plugin UIs rendered inside Steam and backed by Python functions. The README points to the wiki for documentation and development tools rather than walking through the plugin UI itself.

### How do I access Decky Loader in Desktop Mode?

The README treats Desktop Mode as the place you install from, not the place you use the loader: you switch to Desktop, run the installer, then open the Return to Gaming Mode shortcut on the desktop. It does not describe a Desktop Mode interface for the loader itself.

### Is Decky Loader worth it?

The README frames every capability it enables as a modification, from menu styling to extra system settings, and states the installation can be done without an admin password set. It also documents that Decky can disappear on SteamOS updates and that the fix is usually re-running the installer.

## Sources

- [License: GPL-2.0](https://github.com/SteamDeckHomebrew/decky-loader/blob/main/LICENSE)
- [Project website](https://decky.xyz)
- [README](https://github.com/SteamDeckHomebrew/decky-loader/blob/main/README.md)
- [Releases](https://github.com/SteamDeckHomebrew/decky-loader/releases)
- [SteamDeckHomebrew/decky-loader on GitHub](https://github.com/SteamDeckHomebrew/decky-loader)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/steamdeckhomebrew-decky-loader
