MCPcopy Index your code
hub / github.com/Frodo45127/rpfm

github.com/Frodo45127/rpfm @v5.0.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v5.0.5 ↗ · + Follow
3,693 symbols 12,457 edges 671 files 1,429 documented · 39%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

rpfm

Rusted PackFile Manager

Tests License: MIT Latest release AUR Downloads

Rusted PackFile Manager (RPFM) is a Rust + Qt6 reimplementation of PackFile Manager (PFM), one of the best modding tools for Total War games. It opens, inspects, edits and saves PackFiles for every Total War since Empire: Total War, and ships integrated editors for DB tables, Loc files, scripts, animations, portrait settings, rigid models, videos and a long list of other formats.

Downloads: https://github.com/Frodo45127/rpfm/releases

Manual (read it before asking!): HERE.

become_a_patron_button

Requirements (to use)

  • Windows: just download, extract and run.
  • Linux:
    • Arch Linux and derivatives: it's in the AUR as rpfm-bin.
    • Other distros: install Qt6, xz and 7zip — or use the Flatpak.
  • macOS: you'll know it when I manage to compile it for Mac.

Requirements (to build)

See the compilation instructions.

Architecture

RPFM is split into several crates so the same code can power the desktop app, a headless server, and any third-party tool that wants to read or write Total War files.

Libraries

Crate Purpose
rpfm_lib Core file-format library: packs, schemas, DB, Loc, RigidModel, audio, video…
rpfm_extensions Higher-level workflows: dependencies, diagnostics, search, optimizer, translator, glTF export.
rpfm_ipc Command/response protocol shared between UI and server.
rpfm_telemetry Logging, crash reporting and opt-out action telemetry.
rpfm_ui_common Shared Qt6 helpers used by every UI consumer.

Executables

Crate Purpose
rpfm_ui The Qt6 desktop application most people interact with.
rpfm_server Backend that does the heavy file/schema/filesystem work. Exposes WebSocket + MCP for AI tools. The UI spawns it automatically.

Companion data

Folder Purpose
schemas RON schema files for every supported game, plus runtime patches and animation IDs.
old_ak_files Archived Assembly Kit definitions for Empire and Napoleon (no AK was ever shipped).
install Per-platform packaging scripts (Linux tar.zst, Flatpak, AUR, Windows zip).

FAQ

  • How can I translate the UI to my own language? Go to the locale folder, copy English_en.ftl, rename it to NameYouWantInTheUI_xx.ftl (for Spanish: Español_es.ftl), translate it. Done.
  • Why is there no .exe in the download? Because you downloaded the source code, not the program. See Downloads at the top.
  • How do I contribute a mod translation? Use RPFM's translator tool to produce a translation JSON, then submit it to the Total War Translation Hub. Runcher will pick it up automatically for any user with translations enabled.

Credits

  • Created and programmed by: Frodo45127.
  • Extra programming work by: Vandy.
  • Modern DDS read support by: Phazer.
  • App icons until v1.6.2 by: Maruka.
  • App icons since v2.0.0 by: Jake Armitage.
  • AnimPack research: Marthenil and Frodo45127.
  • Ca_vp8 research: John Sirett.
  • LUA functions by: Aexrael Dex.
  • LUA Types for Kailua: DrunkFlamingo.
  • RigidModel research by: Mr.Jox, Der Spaten, Maruka, phazer and Frodo45127.
  • RigidModel module until v1.6.2 by: Frodo45127.
  • RigidModel module since v2.4.99 by: Phazer.
  • TW: Arena research and coding: Trolldemorted.

Support

Extension points exported contracts — how you extend this code

Searchable (Interface)
Trait for file types that support text searching. Implementors of this trait can be scanned for text matches using vari [10 …
rpfm_extensions/src/search/mod.rs
Decodeable (Interface)
Generic trait for decoding binary data into structured types. This trait provides a standardized interface for deserial [125 …
rpfm_lib/src/files/mod.rs
PackTree (Interface)
This trait adds multiple util functions to the `TreeView` you implement it for. Keep in mind that this trait has been c [1 …
rpfm_ui/src/pack_tree/mod.rs
Replaceable (Interface)
Trait for searchable types that also support replacement. Extends [`Searchable`] to allow replacing matched text with n [9 …
rpfm_extensions/src/search/mod.rs
Encodeable (Interface)
Generic trait for encoding structured types into binary data. This trait provides a standardized interface for serializ [125 …
rpfm_lib/src/files/mod.rs
ESFTree (Interface)
This trait adds multiple util functions to the `TreeView` you implement it for. Keep in mind that this trait has been c [1 …
rpfm_ui/src/packedfile_views/esf/esftree/mod.rs
DiagnosticReport (Interface)
Trait for types that can report diagnostic information. All diagnostic result types implement this trait to provide a c [7 …
rpfm_extensions/src/diagnostics/mod.rs
ToLayer (Interface)
Trait for converting BMD data structures to Terry `.layer` XML format. This trait is implemented by all BMD data list t [6 …
rpfm_lib/src/files/bmd/mod.rs

Core symbols most depended-on inside this repo

len
called by 1058
rpfm_lib/src/files/db/mod.rs
write_u32
called by 974
rpfm_lib/src/binary/writer.rs
read_u32
called by 952
rpfm_lib/src/binary/reader.rs
qtr
called by 752
rpfm_ui/src/utils/mod.rs
insert
called by 625
rpfm_lib/src/files/pack/mod.rs
connect
called by 618
rpfm_server/src/session.rs
read_f32
called by 563
rpfm_lib/src/binary/reader.rs
write_f32
called by 561
rpfm_lib/src/binary/writer.rs

Shape

Method 2,362
Function 663
Class 576
Enum 74
Interface 18

Languages

Rust93%
C++7%
TypeScript1%
Python1%

Modules by API surface

rpfm_server/src/server_mcp.rs240 symbols
rpfm_lib/src/files/mod.rs88 symbols
rpfm_ui/src/views/table/mod.rs79 symbols
rpfm_ui/src/ffi/mod.rs79 symbols
rpfm_lib/src/schema/mod.rs70 symbols
rpfm_lib/src/files/pack/mod.rs64 symbols
rpfm_extensions/src/dependencies/mod.rs53 symbols
rpfm_server/src/settings.rs46 symbols
rpfm_lib/src/binary/reader.rs46 symbols
rpfm_ui/src/app_ui/mod.rs44 symbols
rpfm_lib/src/binary/reader_test.rs44 symbols
rpfm_ui/src/pack_tree/mod.rs43 symbols

For agents

$ claude mcp add rpfm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact