# Penumbra loads FFXIV mods at runtime without touching game files

> Penumbra is a runtime mod loader for FINAL FANTASY XIV, distributed through Dalamud's custom plugin repository. It avoids touching installed game files and resolves mod conflicts by reordering, but TexTools packs are only supported on a best-effort basis.

**xivdev/Penumbra** — FINAL FANTASY XIV modding, but actually good this time

- Repository: https://github.com/xivdev/Penumbra
- Stars: 792 · Forks: 180
- Language: C#
- License: not declared
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/xivdev-penumbra

## Mods are loaded while the game runs, so no backup of the install is needed

Penumbra is described by its own README as a runtime mod loader for FINAL FANTASY XIV, with a bunch of other useful features baked in. The first of those features is the one that defines the project: mods do not touch game files, so there is no need to back up the install.

That single design decision separates this loader from the older pattern of overwriting files inside the game directory and restoring them later. A loader that never writes to the install can be removed without a restore step, and two installations of the game do not have to be kept in separate folders to avoid clobbering each other.

The other listed behaviours follow the same philosophy of avoiding destructive edits. Files can be edited and are often replicated in-game after a map change or closing and reopening a window, which implies the loader keeps track of the virtual files it presents to the game rather than writing them once and leaving them stale on disk. Mods can also be disabled and enabled without restarting the game, so a bad combination can be tested and removed in the moment rather than at the next login.

The audience is players, not mod authors who need a toolchain. The README frames the feature list around the experience of having many mods installed and being able to change them freely.

## Conflicts are resolved by moving mods in an order, not by editing files

The third bullet in the feature list says conflicts between mods are resolved by changing mod order. This is the mechanism that replaces file surgery: when two mods touch the same asset, the one placed later in the order wins for that asset, and the user settles the conflict by dragging entries rather than by opening a conflict editor or hand-merging files.

An order based approach only works if the loader can present each mod's version of a resource independently and choose between them at read time. That is consistent with the runtime model described above, where the game is given a virtual view of files and the loader decides what each read returns.

The README does not document how the ordering rule is specified. It does not say whether order is expressed as a simple list, whether a mod can be pinned against another, or whether the interface offers any automatic conflict detection. For someone with two large modpacks that overlap heavily, that is the first page of documentation to look for, and it is not in the README.

There is also no statement about how conflicts behave across a full game restart, or whether the loader preserves the ordering you set. The README simply lists the capability.

## Installation runs through Dalamud's custom plugin repository, not a zip file

Penumbra is distributed as a Dalamud plugin, and the README is explicit that the project is still a work in progress and that it should be installed by adding a repository URL to the custom plugin repositories list in Dalamud settings. The steps it gives are a short sequence inside the game's settings interface.

Open the command that reaches the settings, which the README lists as `/xlsettings`, then move to the Experimental tab. Copy and paste the repo.json link into the custom plugin repositories list, click the + button, and click Save and Close. Penumbra then appears in the Available Plugins tab of the Dalamud Plugin Installer, and it still has to be installed from that tab.

The URL to paste is this one:

```bash
https://raw.githubusercontent.com/xivdev/Penumbra/master/repo.json
```

One detail deserves attention. The repository's default branch is named testing, while the URL the README publishes points at the master path. The link is the one the project documents, so it is what an installer should use, but the branch names in play are different and a reader checking the repository in a browser will see both.

An image based install and usage guide is credited to an unaffiliated user, Serenity, at reniguide.info.

## A manually unpacked copy conflicts with the repository install

The README asks users not to install Penumbra by downloading a release zip and unpacking it into a devPlugins folder, and it gives two reasons. A manual install requires manual updating, so the user misses features and bug fixes, and because the copy is not managed by the plugin installer there are no automatic update notifications.

It then adds a migration rule that is easy to skim past. Any manually installed copies of Penumbra should be removed before switching to the custom plugin repository method, as they will conflict.

This is the practical trap in the whole installation flow. Someone who already has a working setup, finds the README later, and adds the repository URL without cleaning up will end up with two copies of the loader on the same machine. The README does not describe what the visible symptom of that conflict is, whether a duplicate load error appears or the game simply behaves oddly, so removing the old copy before following the six steps is the safer order of operations.

The release list also shows that the project does publish standalone builds, 1.7.2.1 on 2026-09-26 after 1.7.2.0 on 2026-09-11 and 1.7.1.3 on 2026-09-10. The presence of releases does not change the install guidance; the repository remains the supported path.

## TexTools modpacks load, but the support promise is deliberately weak

Penumbra has support for most TexTools modpacks, and the README immediately qualifies that. The support is provided on a best-effort basis and is not guaranteed. It adds that built in tooling will be added to Penumbra over time to avoid many common TexTools use cases.

That sentence is the clearest statement of scope in the whole README. TexTools packs are a large existing body of mods, and Penumbra can consume most of them, which is what makes the loader useful to people arriving with an existing collection. But the project is not claiming parity, and the roadmap is a statement of intent rather than a schedule of features.

For a user this distinction matters most in two situations. If your modpack relies on a TexTools feature that has no equivalent inside Penumbra, the difference will not be visible from the README, and there is no compatibility table to check it against. If you are the author of a pack, best-effort support means your pack may work for you and behave differently for someone else on a different version of the loader.

The phrase about tooling being added over time also places the project in a transitional state. That is a reasonable reason to expect interface changes, which matters for anyone who wants to script around the loader.

## The source is split across an API layer, game data and a Luna submodule

The repository is written in C# and is laid out as a solution rather than a single project. The top level carries Penumbra.slnx alongside directories named Penumbra, Penumbra.Api, Penumbra.GameData, Penumbra.String, and a Penumbra.CrashHandler directory. There is also a Luna entry, a .gitmodules file, and a schemas directory.

That structure says something about the project's ambitions. A separate Api project suggests a public surface distinct from the loader's internals, a GameData project suggests the mod format and the game's data are handled separately from the runtime, and the CrashHandler directory implies that a crash in a loader with dozens of active mods is a case the authors expect to handle rather than dismiss.

The String project is a small but telling detail. Loader interfaces in games tend to expose translated or localised strings, and a dedicated project for that suggests string handling is treated as a first-class concern.

None of these directories are described in the README, which is aimed at players rather than contributors. The contributing section is short and sets a firm rule: contributions are welcome, but an issue should be opened before writing any code, because the requested feature may be out of scope or may be reworked to provide greater benefit. That is a project that would rather refuse work than accept a patch that fights the design.

## Upkeep is current, and the licence question is left open

The last push to the repository was on 2026-10-19, and the repository is not archived. The recent release sequence, 1.7.1.3 on 2026-09-10, 1.7.2.0 on 2026-09-11 and 1.7.2.1 on 2026-09-26, shows a project shipping patch builds across September 2026, and the default branch name testing indicates that the working branch is where development happens.

For a tool that injects files into a running game, upgrade cadence matters in a practical way. A loader update can change how existing mods are read, so a user who skips updates stays on a loader whose behaviour no longer matches the packs they have installed, while a user who updates immediately is exposed to new regressions in a project the README still calls a work in progress.

The licence is a genuine gap. No licence identifier is recorded for the repository, and the README states only the project name, the feature list, the install steps, the TexTools caveat, the contributing rule, and pointers to the issue tracker and Discord server. Anyone planning to redistribute or modify the code itself rather than use it should confirm the terms before doing so, because the absence of a stated licence is the only fact available about them.

Support itself runs through an issue tracker on the repository and a Discord server linked from the README.

## Conclusion

Penumbra suits players of FINAL FANTASY XIV who want to change the game and uninstall changes cleanly, and who will accept living inside Dalamud's plugin ecosystem rather than dropping files into a game folder. It does not suit someone who wants to ship a TexTools modpack with guaranteed fidelity, since that support is stated as best-effort. Before installing, read the repository README, confirm the repo.json entry you add is the one published at the raw.githubusercontent.com/xivdev/Penumbra/master/repo.json path, and remove any manually unpacked copy first, because a manual copy will conflict with the plugin repository install and stop update notifications from arriving.

## FAQ

### How do I install Penumbra for FINAL FANTASY XIV?

Add the repo.json URL to the custom plugin repositories list in Dalamud settings. The README lists the steps: open /xlsettings, go to the Experimental tab, paste the repo.json link, click the + button, click Save and Close, then install Penumbra from the Available Plugins tab of the Dalamud Plugin Installer.

### Do I need to back up my FINAL FANTASY XIV install before using Penumbra?

No. The README lists as its first feature that there is no need to back up the install because mods do not touch game files.

### Can Penumbra load TexTools modpacks?

Penumbra has support for most TexTools modpacks, but the README states that this is provided on a best-effort basis and support is not guaranteed. Built in tooling will be added over time to cover common TexTools use cases.

### What happens if I install Penumbra manually instead of through the plugin repository?

A manual copy in the devPlugins folder has to be updated by hand, misses update notifications, and conflicts with the repository install. The README asks you to remove any manually installed copies before switching to the custom plugin repository method.

### How do I report a bug or ask for a feature in Penumbra?

Open an issue on the repository or join the Discord server linked from the README. If you want to contribute code, the README asks you to open an issue first, since the request might be out of scope or reworked.

## Sources

- [Issues](https://github.com/xivdev/Penumbra/issues)
- [README](https://github.com/xivdev/Penumbra/blob/testing/README.md)
- [Releases](https://github.com/xivdev/Penumbra/releases)
- [xivdev/Penumbra on GitHub](https://github.com/xivdev/Penumbra)

---

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