Skip to content
vfstool

Tool Morrowind active

vfstool

OpenMW's virtual file system from the command line: find any file your load order provides, see why it wins, lock the result, and collapse it into one folder.

"org.dreamweave.vfstool" = "2.1.0"
vfstool's icon: two crossed wrenches on the DreamWeave disc.
Stable
2.1.0 2026-10-23
Package
Jess package
License
MIT OR Apache-2.0

Overview

OpenMW does not read its files from one Data Files folder. It stacks every data= directory in your openmw.cfg, and every archive listed as fallback-archive=, into one virtual file system, and asks that for meshes/xbase_anim.nif. The last directory that has the file wins, and any loose file beats any archive. With forty mods installed, which copy of a texture the game loads has one right answer and no easy way to see it.

vfstool builds the same VFS from the same openmw.cfg, and answers:

$ jess workspace run --trusted vfstool -- find-file -s textures/tx_wood_01.dds
/tmp/mw/mods/Crisp Textures/Textures/Tx_Wood_01.dds

explain shows every copy behind that one, in load order; conflicts, shadowed and contributions do the same for whole mods. lock writes down what every file resolves to, and drift tells you later what changed. collapse writes the whole VFS out as one folder, and run hands that folder to a tool that only understands one, then keeps what the tool wrote.

  • Finding: find-file, find, explain, duplicates, remaining, extract.
  • Load order: conflicts, shadowed, contributions, diff, archives, archive-list.
  • Checking: validate for missing directories, archives and content files; lock and

drift for changes.

  • Writing: collapse, with links, copies or extracted archives, and a dry run; run.

It reads BSA and BA2 archives, from Morrowind's to Fallout 4's, writes its reports as YAML, JSON or TOML, and changes nothing on disk unless writing is the command's job.

Documentation§

vfstool is a Jess package, org.dreamweave.vfstool, and runs through jess from any workspace that names it. Its commands are documented in vfstool/src/main.jsl, each where it is parsed; the guide that explained the Rust program lives with it on the rust branch, and the package's own guide is being written. The library underneath is vfstool_lib, the package org.dreamweave.vfs.

Install

Jess package · 2.1.0

DreamWeave clientsCHIMERA and other tools that read the manifest

Give the tool this page's address, or the manifest directly. It finds the release for its channel, checks compatibility and dependencies, downloads from any listed source and refuses bytes whose SHA-256 does not match.

Project id
34fc442a-5060-4b77-8c64-ca5ea9861a10
Manifest
https://dreamweave-mp.github.io/vfstool/dreamweave/projects/34fc442a-5060-4b77-8c64-ca5ea9861a10.json

What is in the archive

  • vfstool.zip
    • the mod's filesone data directory
    • vfstool-dwmod.tomlthe project's mod.toml
    • dreamweave.release.jsonwhat this archive is, for tools

Notes

jess install org.dreamweave.vfstool puts vfstool on your PATH. Without jess, unzip the download for your platform and run the vfstool inside. In a workspace that names it under [dev-dependencies], jess workspace run --trusted vfstool -- find-file -s textures/tx_wood_01.dds runs it there. Either way it reads the openmw.cfg --config or OPENMW_CONFIG names, a file or the folder holding it, else OpenMW's own.

  1. 2.1.0 stable 2026-10-23

    vfstool finds OpenMW's own configuration again, as the Rust program did.

    Fixed

    • With neither --config nor OPENMW_CONFIG, vfstool reads the openmw.cfg in the folder OpenMW keeps its own in on this platform: Documents\My Games\OpenMW on Windows, wherever Documents was moved, Library/Preferences/openmw on macOS, and the XDG config folder elsewhere. Its ?userconfig? and ?userdata? are OpenMW's own folders. Needs jess 0.2.1 or later; the standalone downloads carry it.
    org.dreamweave.vfstool-2.1.0.jpk 60.6 kB · jpk
    Verify · sha256 314590d8841e…f55e2c20b
    Release
    2.1.0 (stable)
    Size
    62060 bytes
    SHA-256
    314590d8841e4fbd3c6f240ca8457d7b4648e8334124399e85629c5f55e2c20b
    Commit
    1eae7ab127b5
    Package
    org.dreamweave.vfstool
    Content digest
    eb05850223448c7d80c4723490c02a31dc3842e72ce0969019d15fd8c858ca09
    Sources
    1

    Check it yourself: sha256sum org.dreamweave.vfstool-2.1.0.jpk must print the digest above.

    vfstool-2.1.0.jsw 464.6 kB · jsw
    Verify · sha256 4fee62bbe250…03462e68c
    Release
    2.1.0 (stable)
    Size
    475758 bytes
    SHA-256
    4fee62bbe250d338b08cf4f258a015450037b3f5d7e943fd54323e803462e68c
    Commit
    1eae7ab127b5
    Sources
    1

    Check it yourself: sha256sum vfstool-2.1.0.jsw must print the digest above.

    vfstool-Windows-X64.zip 20.4 MB · Windows
    Verify · sha256 9fd98175b93b…a381d5730
    Release
    2.1.0 (stable)
    Size
    21367046 bytes
    SHA-256
    9fd98175b93bc7d2ea22bd9606c1ef5ab66d8d1098c8ce895100cf5a381d5730
    Commit
    1eae7ab127b5
    Sources
    1

    Check it yourself: sha256sum vfstool-Windows-X64.zip must print the digest above.

    vfstool-macOS-X64.zip 21.3 MB · macOS, Intel
    Verify · sha256 84ad5ed450ed…5db6c394f
    Release
    2.1.0 (stable)
    Size
    22381552 bytes
    SHA-256
    84ad5ed450ed2a6248d44bbc36b076ec5819e9c1708b5061b73b5685db6c394f
    Commit
    1eae7ab127b5
    Sources
    1

    Check it yourself: sha256sum vfstool-macOS-X64.zip must print the digest above.

    vfstool-macOS-ARM64.zip 19.4 MB · macOS, Apple silicon
    Verify · sha256 671b4364b950…a6a057b33
    Release
    2.1.0 (stable)
    Size
    20318178 bytes
    SHA-256
    671b4364b95066a733a03d6f5ae5f951763cd258a7150ce6a3798dca6a057b33
    Commit
    1eae7ab127b5
    Sources
    1

    Check it yourself: sha256sum vfstool-macOS-ARM64.zip must print the digest above.

    vfstool-Linux-X64.zip 22.0 MB · Linux
    Verify · sha256 7ef1c8cb9a1d…bf3e817e2
    Release
    2.1.0 (stable)
    Size
    23029654 bytes
    SHA-256
    7ef1c8cb9a1d505f66eeb40da43132b1e266a38cef083820b733102bf3e817e2
    Commit
    1eae7ab127b5
    Sources
    1

    Check it yourself: sha256sum vfstool-Linux-X64.zip must print the digest above.

  2. 2.0.1 stable 2026-10-23

    vfstool ships as a program again: jess install org.dreamweave.vfstool, or a download that runs without jess for Windows, macOS and Linux.

    Added

    • The release carries vfstool as an application: vfstool.jsw, the package and everything it runs packed into one file, which jess install org.dreamweave.vfstool installs onto your PATH.
    • A standalone vfstool for Windows x8664, macOS x8664 and ARM64, and Linux x86_64: jess carrying vfstool, zipped, needing nothing installed.

    Fixed

    • vfstool help, --help and -h print the commands and options instead of a note about the test suite, and running vfstool with no command points at them.

    Known issues

    • vfstool doesn't look for openmw.cfg in OpenMW's default location: name it, or the folder holding it, with --config or OPENMW_CONFIG.
    org.dreamweave.vfstool-2.0.1.jpk 60.9 kB · jpk
    Verify · sha256 4b0d613b3844…eaf65869e
    Release
    2.0.1 (stable)
    Size
    62357 bytes
    SHA-256
    4b0d613b3844cfccc334446e1b6af746a9dfe70d1a9edcf2d58cb60eaf65869e
    Commit
    66168bb6ed9b
    Package
    org.dreamweave.vfstool
    Content digest
    90655f153e7363c0ca6acc05554f2d8ff650af5286947a8c505743e9428e9c5e
    Sources
    1

    Check it yourself: sha256sum org.dreamweave.vfstool-2.0.1.jpk must print the digest above.

    vfstool-2.0.1.jsw 460.9 kB · jsw
    Verify · sha256 0d56410a49dc…d92a96f49
    Release
    2.0.1 (stable)
    Size
    471955 bytes
    SHA-256
    0d56410a49dc34e06cd21c2454cf9a1fa689500757c623ddcd919c5d92a96f49
    Commit
    66168bb6ed9b
    Sources
    1

    Check it yourself: sha256sum vfstool-2.0.1.jsw must print the digest above.

    vfstool-Windows-X64.zip 20.4 MB · Windows
    Verify · sha256 9041a1d6abe8…9640e39f3
    Release
    2.0.1 (stable)
    Size
    21351467 bytes
    SHA-256
    9041a1d6abe8c94bf2ee4f595e46ebcf7539ecc75cefd68c4e797719640e39f3
    Commit
    66168bb6ed9b
    Sources
    1

    Check it yourself: sha256sum vfstool-Windows-X64.zip must print the digest above.

    vfstool-macOS-X64.zip 21.3 MB · macOS, Intel
    Verify · sha256 2a49ee7c0a53…cfded454b
    Release
    2.0.1 (stable)
    Size
    22355872 bytes
    SHA-256
    2a49ee7c0a53f66cc77ce8c60b2e343f1d55029e4e9628b70307bafcfded454b
    Commit
    66168bb6ed9b
    Sources
    1

    Check it yourself: sha256sum vfstool-macOS-X64.zip must print the digest above.

    vfstool-macOS-ARM64.zip 19.3 MB · macOS, Apple silicon
    Verify · sha256 3e2bf4915a31…15471874b
    Release
    2.0.1 (stable)
    Size
    20284034 bytes
    SHA-256
    3e2bf4915a3169f2d5e726baedf13b7720952ec9922ef155b664ec815471874b
    Commit
    66168bb6ed9b
    Sources
    1

    Check it yourself: sha256sum vfstool-macOS-ARM64.zip must print the digest above.

    vfstool-Linux-X64.zip 22.0 MB · Linux
    Verify · sha256 64ff1c46e306…44c822dc9
    Release
    2.0.1 (stable)
    Size
    23018715 bytes
    SHA-256
    64ff1c46e306d40e02aa0456e452028a6a22916de04c885d9bb114f44c822dc9
    Commit
    66168bb6ed9b
    Sources
    1

    Check it yourself: sha256sum vfstool-Linux-X64.zip must print the digest above.

  3. 2.0.0 stable 2026-10-21

    vfstool is a Jess package, written in Luau; the Rust program continues on the rust branch at 1.0.1.

    Breaking changes

    • The tool is the Jess package org.dreamweave.vfstool, run through jess rather than as a downloaded binary. The Rust program stays at 1.0.1 on its GitHub releases, crates.io and this repository's rust branch, and is no longer developed on main.
    org.dreamweave.vfstool-2.0.0.jpk 59.6 kB · jpk
    Verify · sha256 4d8a14fffcbb…9340f010b
    Release
    2.0.0 (stable)
    Size
    61071 bytes
    SHA-256
    4d8a14fffcbb1ab7dcc1c75afd3629ad28e86b75960453fb2f1286c9340f010b
    Commit
    7050b6f37bd7
    Package
    org.dreamweave.vfstool
    Content digest
    76d49ff1220dbe340c28eeca9592017ec6e39ec3e42f57029cceb71169d2e95a
    Sources
    1

    Check it yourself: sha256sum org.dreamweave.vfstool-2.0.0.jpk must print the digest above.

Credits

  • MaintainerDreamWeave
  • The virtual file system vfstool reimplements: data directory order, archives, and loose files over archivesOpenMW
  • Case-insensitive findBenjamin Winger