Skip to main content
pakwatch, for Unreal Engine 5 mods: see which of your mods a game update touched

Tests PyPI version Latest pakwatch.exe Python 3.11+ No dependencies MIT license

Get started  ·  What it tells you  ·  Command line  ·  How it works  ·  Limits  ·  PyPI

Unreal Engine 5 games keep their files in IoStore containers, and pak mods replace some of those files. After a game update, a mod that replaces a file the update changed can crash the game or quietly undo a fix, and you only notice once you play. pakwatch remembers your game's files. After an update it shows which mods replace files that changed, so you know which ones to check for a new version.


After an update
Which of your mods replace game files the update changed or removed, and how many files it changed in all.

Mod conflicts
Files two mods both replace. The game loads one version, so the other mod loses that part.

Turn mods off
Move a mod out of the game until its author catches up, and put it back with one click.

Shareable report
Copy the report as Markdown for a mod's author or a bug report, without your local paths.

IoStore and .pak mods
Reads only the tables of contents. No AES key, about a second for a whole game.

Steam aware
Finds the Unreal Engine games in your Steam libraries and names the build before and after an update.
pakwatch in the browser with example data: seven Unreal Engine 5 games from a Steam library, and Oblivion Remastered after an update, where two mods need a look because the update changed files they replace

Example data: the games are real, the mods and the update are made up for the picture.

Get started

Download pakwatch.exe from the latest release and run it, or install it from PyPI with Python 3.11 or newer:

pip install pakwatch
pakwatch

pakwatch opens in your browser and lists the Unreal Engine games in your Steam libraries. Pick one, or type the folder of a game that isn't on Steam.

The first check remembers the game as it is now, so run it while your mods work. Open pakwatch again after the next game update. The report then also says how many game files the update changed and, for Steam games, which build it went from and to.

From the report you can turn a mod off until its author catches up. pakwatch moves the mod's files out of the game, and Turn On puts them back where they were. Copy Report puts the whole report on the clipboard as Markdown, ready for a comment to the mod's author or a bug report, without any of your local paths.

What it tells you

Needs a lookThe update changed or removed a game file this mod replaces. Look for a newer version of the mod.
Updated by its authorThe mod is newer than the update, so its author has probably caught up.
FineNone of the files it replaces changed.
Only adds filesIt replaces nothing, so an update can't clash with it.
Replaced by more than one modTwo mods replace the same file. The game loads one version, and the other mod loses that part.

On the command line

Give it the game's folder and it prints the same report. Here it checks a game before an update, then after one, then prints the report as Markdown:

pakwatch in a terminal: the first check of Oblivion Remastered lists five fine mods and one file two mods share; after an update two mods need a look, one was updated by its author, and the Markdown report follows

Example data, real pakwatch output.

The exit code is 0 when everything is fine, 1 when the update touched a mod or two mods collide, and 2 when the folder can't be read, so scripts and mod managers can act on it. Add --markdown to get the shareable version of the report instead. pakwatch --no-browser starts the window without opening it and prints its address.

How it works

  • pakwatch reads only the tables of contents (.utoc) of the game's containers. It never opens the data in .ucas, so it needs no AES key, and a whole game takes about a second.
  • Every file in a container has a content hash. pakwatch keeps the hashes of all game files, a few MB per game in %LOCALAPPDATA%\pakwatch, and compares them after an update.
  • A mod is any *_P container, or anything in a subfolder of Paks such as ~mods.
  • Mods packed as a plain .pak work too. Their index lists file paths without hashes, so pakwatch turns each path into the package id the game uses (CityHash64 of the package name) and matches it against the game's files.
  • The report compares with the game as it was before the last update, so it keeps showing what that update touched until the next one.

Privacy and safety

pakwatch only reads files, except when you press Turn Off or Turn On. Those move one mod's files between the game's Paks folder and %LOCALAPPDATA%\pakwatch, and never delete or overwrite anything. pakwatch never connects to the internet. The window is a page served on 127.0.0.1 with a one-time key, so other sites open in your browser can't use it, and it shuts down shortly after you close the tab.

Limits

  • It works with IoStore games, which is most Unreal Engine 5 games. The game's own .pak files aren't read, because their file index is usually encrypted. A mod with an encrypted index is listed under "Couldn't read".
  • A changed file doesn't always break a mod, and an unchanged one doesn't prove it works. Treat the list as the places to check first.
  • When a game encrypts its file index, file names come from the mod's own index, which is usually readable.
  • pakwatch.exe isn't signed, so Windows SmartScreen may ask before its first start.

License

MIT

Metadata

Release files for pakwatch 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pakwatch 0.1.1
File Size Uploaded Provenance Actions
pakwatch-0.1.1.tar.gz 38.4 kB With provenance Details for pakwatch-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pakwatch 0.1.1
File Interpreter ABI Platform Actions
pakwatch-0.1.1-py3-none-any.whl Python 3 none any Details for pakwatch-0.1.1-py3-none-any.whl

Total release size: 71.9 kB

Release files / pakwatch-0.1.1.tar.gz

Download URL pakwatch-0.1.1.tar.gz
Size 38.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2440e2c1dffbb13a7e9c58288921c27d9e24325b2f138d6984d8db2fd6163274
BLAKE2b-256 checksum
How to use checksums
073945bb1f1b36804e961110b7ec715dba5cdf7a722ed6c3db5d75bdd1ef9ed9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / pakwatch-0.1.1-py3-none-any.whl

Download URL pakwatch-0.1.1-py3-none-any.whl
Size 33.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
974835f1c9253e5cd9df94a0dac94c908b9a9a7283c9005f4329d617bdbbce46
BLAKE2b-256 checksum
How to use checksums
f08f6f212cda54456937db4d1f66bfa246365384c744f68420e4aac757a84549
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Security for pakwatch 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pakwatch-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page