Repository navigation
Releases: RealWhyKnot/VRCFaceTracking
Release list
v2026.10.13.0-beta
VRCFaceTracking v2026.10.13.0-beta
What's Changed
Bug Fixes
- fix(mutation): move Eyelid Blend from Unified Correctors to Eye Assists by RealWhyKnot in 7b906e6
Full Changelog: v2026.10.12.0-beta...v2026.10.13.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.10.13.0-beta-linux-arm64.tar.gz |
65.73 | 1eab37696aca8147e662f5cb4d7fa498c93f155fdf4f15a413ffcb4fc1628f1e |
VRCFaceTracking-2026.10.13.0-beta-linux-x64.tar.gz |
69.55 | 30bf10c8eb83b657a520290f45a6d53fcb6340a9ceccfa68a8fc52df1a16a467 |
VRCFaceTracking-2026.10.13.0-beta-osx-arm64.tar.gz |
54.80 | 9157303be7e21f123254a505a66ddb0179cdaacacf2e4b732a603d94cb1fcb67 |
VRCFaceTracking-2026.10.13.0-beta-osx-x64.tar.gz |
58.05 | 67436b949e04c0df0023f8bac2c3ca04b0202160ab27f8cfcae38a7380687910 |
VRCFaceTracking-2026.10.13.0-beta-win-arm64.zip |
56.81 | e522159bc27534ae7a5ec923df3d77a3af611938734fe88d9dd08461d2bcaefc |
VRCFaceTracking-2026.10.13.0-beta-win-x64.zip |
60.00 | dde97b94c3f905e3f568e1c6611d3718595e3bc26071a0b2213e0f5280864586 |
VRCFaceTracking-Setup-2026.10.13.0-beta.exe |
42.75 | 3f6e82e09b024ea7e9ebd64c8bbdd5a2dff354cd137503510f02c0f4cc703707 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
This release is commit 7b906e638537 on main, licensed Apache-2.0. See the README for install notes. Upstream is benaclejames/VRCFaceTracking, and its avatar setup and module docs are at https://docs.vrcft.io.
Install on Windows
- Download
VRCFaceTracking-Setup-2026.10.13.0-beta.exefrom this release and run it. It installs for your Windows account only, without an admin prompt, and adds VRCFaceTracking to the Start menu. - Start VRCFaceTracking. If you haven't installed your tracking module before, get it from the Module Registry tab.
- Launch VRChat with OSC enabled. Once the module is receiving data, the Home tab shows it as active.
Setup also registers this copy with SteamVR. If an older copy you extracted by hand had "Start with SteamVR" turned on, SteamVR starts the installed copy from now on.
To run it without installing, extract VRCFaceTracking-2026.10.13.0-beta-win-arm64.zip or VRCFaceTracking-2026.10.13.0-beta-win-x64.zip anywhere except Program Files and run VRCFaceTracking.exe.
Settings and installed modules are kept in %AppData%\VRCFaceTracking, the same folder the Steam build uses. An existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.10.13.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.10.13.0-beta-linux-x64.tar.gzfrom this release. Pick the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app isn't executable after extracting, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6.
Install on macOS
- Download
VRCFaceTracking-2026.10.13.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.10.13.0-beta-osx-x64.tar.gzfrom this release. Pick the file for your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features don't work on macOS.
Uninstall
If you used the setup, uninstall VRCFaceTracking from Settings, Apps, Installed apps. The app, its Start menu entry and its SteamVR registration are removed, and then the uninstaller offers to delete your settings, installed modules and logs as well. Say No if you also use the Steam version. It reads the same settings and modules.
If you extracted it by hand, close VRCFaceTracking and delete the folder. Settings and modules are in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs. Delete those two folders too to remove everything.
What you need to do
New installs: follow the install steps above. Existing installs get offered this update when the app starts. Accept it and the app downloads, verifies and applies the update, then restarts. Installed copies update by running the new setup silently. Extracted copies get the new archive copied over their folder, or you can close the app and extract it over the old folder yourself.
To switch from an extracted copy to the setup, run the setup and start VRCFaceTracking from the Start menu. Settings and modules carry over. Delete the old folder once the installed copy works.
Beta releases log verbosely by default and stable releases log only warnings and errors. Before reproducing a problem on a stable release, turn on verbose logging under Settings, Diagnostics. Bug reports need the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.10.9.0-beta
VRCFaceTracking v2026.10.9.0-beta
What's Changed
Bug Fixes
- fix(build): build the module process as Any CPU in Any CPU solution builds by RealWhyKnot in 4288eab
Performance
- perf(osc): wake the sender only for new data or a due refresh by RealWhyKnot in 9fc18cc
- perf(module): wait for queued packets instead of polling every 20 ms by RealWhyKnot in f6a942a
- perf(ipc): read update packets in place instead of marshalling them by RealWhyKnot in 452837d
- perf(osc): stop boxing the Vector4 eye parameter on every tick by RealWhyKnot in f60e34b
Documentation
- docs: rewrite the README, privacy note and release templates by RealWhyKnot in e0f19a3
Tests
- test(perf): log module start failures and widen module CPU budgets by RealWhyKnot in 071335d
- test(perf): add CPU, wake, allocation and memory budget tests by RealWhyKnot in 7a455f5
Full Changelog: v2026.10.7.0-beta...v2026.10.9.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.10.9.0-beta-linux-arm64.tar.gz |
65.73 | ca82b95667589521cf89ef9a38bda098f815f9f87a23969445102b2ffc7efd99 |
VRCFaceTracking-2026.10.9.0-beta-linux-x64.tar.gz |
69.54 | 6788af1a27d81c94e5e21a76b72c98a2a7586fbeb04359974bfd4febc24ecd6c |
VRCFaceTracking-2026.10.9.0-beta-osx-arm64.tar.gz |
54.80 | f6e51d012c71c9754408758a399646a90db0818ad193ac821ce6efdad38cb380 |
VRCFaceTracking-2026.10.9.0-beta-osx-x64.tar.gz |
58.05 | fcc3674b23ba292d0d377206c242ae1934efcc0753a146314a6d49167e192c02 |
VRCFaceTracking-2026.10.9.0-beta-win-arm64.zip |
56.80 | 36bdd4dec0575c7041bb00783412a38c5d4a30c5dd53384a3e61cc3eed1bf7ed |
VRCFaceTracking-2026.10.9.0-beta-win-x64.zip |
60.00 | b3d86b7efa891bd7053f1e1abfe5c4cd13070db69bfa588ca5c70b225ffdf456 |
VRCFaceTracking-Setup-2026.10.9.0-beta.exe |
42.76 | bfb3f23eda4cfa432f473f123e279a53ce1efe0f5742f8ae34c1011cd08fcf55 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
This release is commit 071335d4776c on main, licensed Apache-2.0. See the README for install notes. Upstream is benaclejames/VRCFaceTracking, and its avatar setup and module docs are at https://docs.vrcft.io.
Install on Windows
- Download
VRCFaceTracking-Setup-2026.10.9.0-beta.exefrom this release and run it. It installs for your Windows account only, without an admin prompt, and adds VRCFaceTracking to the Start menu. - Start VRCFaceTracking. If you haven't installed your tracking module before, get it from the Module Registry tab.
- Launch VRChat with OSC enabled. Once the module is receiving data, the Home tab shows it as active.
Setup also registers this copy with SteamVR. If an older copy you extracted by hand had "Start with SteamVR" turned on, SteamVR starts the installed copy from now on.
To run it without installing, extract VRCFaceTracking-2026.10.9.0-beta-win-arm64.zip or VRCFaceTracking-2026.10.9.0-beta-win-x64.zip anywhere except Program Files and run VRCFaceTracking.exe.
Settings and installed modules are kept in %AppData%\VRCFaceTracking, the same folder the Steam build uses. An existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.10.9.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.10.9.0-beta-linux-x64.tar.gzfrom this release. Pick the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app isn't executable after extracting, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6.
Install on macOS
- Download
VRCFaceTracking-2026.10.9.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.10.9.0-beta-osx-x64.tar.gzfrom this release. Pick the file for your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features don't work on macOS.
Uninstall
If you used the setup, uninstall VRCFaceTracking from Settings, Apps, Installed apps. The app, its Start menu entry and its SteamVR registration are removed, and then the uninstaller offers to delete your settings, installed modules and logs as well. Say No if you also use the Steam version. It reads the same settings and modules.
If you extracted it by hand, close VRCFaceTracking and delete the folder. Settings and modules are in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs. Delete those two folders too to remove everything.
What you need to do
New installs: follow the install steps above. Existing installs get offered this update when the app starts. Accept it and the app downloads, verifies and applies the update, then restarts. Installed copies update by running the new setup silently. Extracted copies get the new archive copied over their folder, or you can close the app and extract it over the old folder yourself.
To switch from an extracted copy to the setup, run the setup and start VRCFaceTracking from the Start menu. Settings and modules carry over. Delete the old folder once the installed copy works.
Beta releases log verbosely by default and stable releases log only warnings and errors. Before reproducing a problem on a stable release, turn on verbose logging under Settings, Diagnostics. Bug reports need the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.10.7.0-beta
VRCFaceTracking v2026.10.7.0-beta
What's Changed
Features
- feat(updates): update installed copies by running the new setup silently by RealWhyKnot in 933985c
- feat(installer): add a per-user Windows installer by RealWhyKnot in 066e9ca
- feat(steamvr): add --register-steamvr and --unregister-steamvr by RealWhyKnot in a861472
Bug Fixes
- fix(steamvr): match registered manifests by their long path by RealWhyKnot in beba2e3
- fix(mutations): save on/off switches and adjustment ranges when changed by RealWhyKnot in 7ce0777
- fix(settings): apply the OSC address when the field loses focus by RealWhyKnot in 0daa8c5
- fix(osc): receive on a non-loopback address instead of refusing it by RealWhyKnot in cb546c0
- fix(osc): send to the configured address after it loads or changes by RealWhyKnot in cca0973
Documentation
- docs: install with the setup on Windows by RealWhyKnot in 20b44dd
- docs: plain release links by RealWhyKnot in cf0247d
CI
- ci(release): build, test and publish the Windows setup with each release by RealWhyKnot in aea3450
Tests
- test(osc): wait for four idle refreshes instead of counting a fixed 250 ms window by RealWhyKnot in 2d64afe
- test(settings): give the OSC target valid ports before checking the address commit by RealWhyKnot in ef9d54a
- test(installer): compare install paths in long form by RealWhyKnot in eac100b
Other
- diag(mutations): log each adjustment's settings when it loads by RealWhyKnot in 5849690
Full Changelog: v2026.9.28.0-beta...v2026.10.7.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.10.7.0-beta-linux-arm64.tar.gz |
65.73 | f25a82d021a7c61df04e7e564a7dcd1f5efc08371a044679fab9a4e9554dee78 |
VRCFaceTracking-2026.10.7.0-beta-linux-x64.tar.gz |
69.53 | 4d66caca0f86b43b7941c822689b4b631fa3ece72b9eaa853883191f9040b378 |
VRCFaceTracking-2026.10.7.0-beta-osx-arm64.tar.gz |
54.80 | 020173864ef8c83a33bbc228a29abef395e13e295c4bb1d43c0bd3edcd9a3e18 |
VRCFaceTracking-2026.10.7.0-beta-osx-x64.tar.gz |
58.05 | 46002617562bfeeaaed099a801e3a9a1df233491ab6ca8699d05dd9820f07c9a |
VRCFaceTracking-2026.10.7.0-beta-win-arm64.zip |
56.80 | 76141c43a1838aee8d6baccce67925faeefb4e83e5dad62c2942864facb5ea4d |
VRCFaceTracking-2026.10.7.0-beta-win-x64.zip |
59.99 | 4b9c07adaf2c2233184bff6fdc41eecd059cd331b223bcc96ab0b637880c6ea1 |
VRCFaceTracking-Setup-2026.10.7.0-beta.exe |
42.75 | 0405a6fcbeef65d86d151f3a16dd1e3050b3d5fe9b0430288f5bc946ddb912d1 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
2d64afe5f13bonmain - License: Apache-2.0
- Upstream: benaclejames/VRCFaceTracking, with avatar setup and module docs at https://docs.vrcft.io
Install on Windows
- Download
VRCFaceTracking-Setup-2026.10.7.0-beta.exefrom this release and run it. It installs for your Windows account only, with no admin prompt, and adds VRCFaceTracking to the Start menu. - Start VRCFaceTracking. Install your tracking module from the Module Registry tab if you haven't before.
- Launch VRChat with OSC enabled. The Home tab shows the module as active once it's receiving data.
The setup also registers this copy with SteamVR. If you turned on "Start with SteamVR" for an older copy you extracted by hand, SteamVR starts the installed copy from now on.
To run it without installing, extract VRCFaceTracking-2026.10.7.0-beta-win-arm64.zip or VRCFaceTracking-2026.10.7.0-beta-win-x64.zip anywhere except Program Files and run VRCFaceTracking.exe.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.10.7.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.10.7.0-beta-linux-x64.tar.gzfrom this release, picking the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app is not executable after extraction, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6 installed.
Install on macOS
- Download
VRCFaceTracking-2026.10.7.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.10.7.0-beta-osx-x64.tar.gzfrom this release, picking the file that matches your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features are unavailable on macOS.
Uninstall
Installed with the setup: open Settings, Apps, Installed apps, and uninstall VRCFaceTracking. That removes the app, its Start menu entry and its SteamVR registration. It then asks whether to delete your settings, installed modules and logs too. Answer No if you also use the Steam version, because it reads the same settings and modules.
Extracted by hand: close VRCFaceTracking and delete the folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs. Delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the update, then restarts. Installed copies update by running the new setup silently. Extracted copies get the new archive copied over their folder, or you can close the app and extract it over the old folder by hand.
Switching from an extracted copy to the setup: run the setup, then start VRCFaceTracking from the Start menu. Settings and modules carry over. Delete the old folder once the installed copy works.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.9.28.0-beta
VRCFaceTracking v2026.9.28.0-beta
What's Changed
Bug Fixes
- fix(openvr): keep openvr out of the ui test process by RealWhyKnot in 7f97af5
Tests
- test(data): keep UI tests out of the user's data folder (2026.9.27.0-9FC29) by RealWhyKnot in 0db405f
Full Changelog: v2026.9.27.0-beta...v2026.9.28.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.9.28.0-beta-linux-arm64.tar.gz |
65.71 | de04378c8b4bdc2ee3dc72732a35a9ee17b6fde06fe450d5ec3538b51b8dffe6 |
VRCFaceTracking-2026.9.28.0-beta-linux-x64.tar.gz |
69.52 | 6bca73752530cb0e12b1518df01b5647d16d52402708996c5a7c8f4870c4814f |
VRCFaceTracking-2026.9.28.0-beta-osx-arm64.tar.gz |
54.78 | e2033c2d72c19a45447c4e40d1803ef724f9cd265a78a786f680f2312d8678df |
VRCFaceTracking-2026.9.28.0-beta-osx-x64.tar.gz |
58.04 | 5d921b54c0729778407c5d827f4d40003b68726ee21c750a9b40d5d9484200e9 |
VRCFaceTracking-2026.9.28.0-beta-win-arm64.zip |
56.79 | d2b6b169ac90bb5c04745fa9e4fb9c8b563de5974a5b6028be3c87f4a889b820 |
VRCFaceTracking-2026.9.28.0-beta-win-x64.zip |
59.98 | 0711d66b1de1fdc571b6e67623239cc64165618206d7fe9e36ca853cc2f7d6df |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
7f97af5f55c0onmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install on Windows
- Download
VRCFaceTracking-2026.9.28.0-beta-win-arm64.ziporVRCFaceTracking-2026.9.28.0-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.9.28.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.9.28.0-beta-linux-x64.tar.gzfrom this release, picking the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app is not executable after extraction, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6 installed.
Install on macOS
- Download
VRCFaceTracking-2026.9.28.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.9.28.0-beta-osx-x64.tar.gzfrom this release, picking the file that matches your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features are unavailable on macOS.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the archive for your platform, then restarts. You can also close the app and extract the archive over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.9.27.0-beta
VRCFaceTracking v2026.9.27.0-beta
What's Changed
Bug Fixes
- fix(mutations): blend each eyelid against the other eye's original value by RealWhyKnot in 2a5847c
- fix(logging): make console and debug output follow the verbose setting by RealWhyKnot in 49b90b3
- fix(logging): keep debug lines off the Output page unless verbose is on by RealWhyKnot in e631aea
- fix(modules): leave head data unset until a module writes it by RealWhyKnot in 1fdaaae
- fix: opt both processes out of Windows power throttling by RealWhyKnot in cf76ed4
Performance
- perf(publish): precompile published assemblies with readytorun by RealWhyKnot in 9fc295d
- perf(oscquery): poll the avatar id instead of advertising /avatar by RealWhyKnot in b22860c
- perf(timer-resolution): hold 1 ms timer resolution only while tracking data flows by RealWhyKnot in d379b93
- perf(ipc): receive module packets on a dedicated blocking thread by RealWhyKnot in 16f2967
- perf(ipc): push module samples as soon as they change by RealWhyKnot in e374f35
- perf(osc): send as soon as tracking data arrives by RealWhyKnot in 167b2eb
- perf: keep gen2 garbage collections in the background by RealWhyKnot in f5545d1
Tests
- test(logging): keep UI test logs out of the user's log folder by RealWhyKnot in 16d7e82
Other
- diag: log eyelids that freeze or stay closed by RealWhyKnot in 1009c7e
- style: drop UTF-8 byte order marks by RealWhyKnot in bbd9c1a
Full Changelog: v2026.9.21.0-beta...v2026.9.27.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.9.27.0-beta-linux-arm64.tar.gz |
65.71 | 6c8810d824325a3080ecdacf716f52691521e4ea9dda1cbc11426381ea531e09 |
VRCFaceTracking-2026.9.27.0-beta-linux-x64.tar.gz |
69.52 | 7a86f90d2c390b7722bf276ee5fb2b0dea685f3b77d623944f0451fabeff3359 |
VRCFaceTracking-2026.9.27.0-beta-osx-arm64.tar.gz |
54.78 | 7c043df4e25aaad58c302fb69ad6e46be6e33b2eb661792da63806d147999ba6 |
VRCFaceTracking-2026.9.27.0-beta-osx-x64.tar.gz |
58.04 | 10c84d21cc4779123ec83e4a5a9bdf7f45a562200b73b74d6246906bb05417f1 |
VRCFaceTracking-2026.9.27.0-beta-win-arm64.zip |
56.79 | dc57354cf73abc78c55b37eaf0ef52260aa9f96dcae1727e7eacc0903d3d6ea4 |
VRCFaceTracking-2026.9.27.0-beta-win-x64.zip |
59.98 | 24290e9aaee705c3251a975369c36fdb13bf1c922359ada508bd1449abc150a0 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
9fc295db41d4onmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install on Windows
- Download
VRCFaceTracking-2026.9.27.0-beta-win-arm64.ziporVRCFaceTracking-2026.9.27.0-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.9.27.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.9.27.0-beta-linux-x64.tar.gzfrom this release, picking the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app is not executable after extraction, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6 installed.
Install on macOS
- Download
VRCFaceTracking-2026.9.27.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.9.27.0-beta-osx-x64.tar.gzfrom this release, picking the file that matches your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features are unavailable on macOS.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the archive for your platform, then restarts. You can also close the app and extract the archive over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.9.21.0-beta
VRCFaceTracking v2026.9.21.0-beta
What's Changed
Bug Fixes
- fix(host): keep timer resolution and priority when the window is in the background by RealWhyKnot in 2de88ef
- fix(ipc): send module replies at once and stamp each leg of the round trip by RealWhyKnot in 405176e
- fix(osc): stop reloading the avatar config on every announcement by RealWhyKnot in 2e2cfee
- fix(modules): snapshot tracking data without holding the lock across Update by RealWhyKnot in 61ef623
- fix(mutations): warn when none are discovered by RealWhyKnot in ff2ed9e
- fix(modules): reject non-finite tracking data and snapshot it coherently by RealWhyKnot in 9aae295
- fix(sandbox): stop host crashes, packet corruption and send stalls by RealWhyKnot in 0732a6c
- fix(osc): keep sending a batch past an oversized message by RealWhyKnot in 01b6fe5
- fix(release): take the file integrity table from the build manifests by RealWhyKnot in 17fc7db
Performance
- perf(ui): stop the init spinner animating while it is hidden by RealWhyKnot in 834c58e
- perf(osc): cut receive CPU and per-tick work by RealWhyKnot in 94e3d15
Changes
- refactor(release): hash archives with the shared checksums action by RealWhyKnot in 7b05f37
Other
- style: apply dotnet format by RealWhyKnot in 18dc053
Full Changelog: v2026.9.18.0...v2026.9.21.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.9.21.0-beta-linux-arm64.tar.gz |
57.29 | 7884c8c2747198dd0d7fec28aff678733f881b696c75332b001ae0f84dd19882 |
VRCFaceTracking-2026.9.21.0-beta-linux-x64.tar.gz |
59.98 | ea4d908e2f91b0a5256725187d84514191e88d7302b5141f73694538b505e500 |
VRCFaceTracking-2026.9.21.0-beta-osx-arm64.tar.gz |
46.40 | 80be48104ad6235920c63b7e4f9a82b98e8a505e313454a43b33026b0c324913 |
VRCFaceTracking-2026.9.21.0-beta-osx-x64.tar.gz |
48.50 | 75943202a6ed34f9ca24ae1817f27923a71e99e9b9ea20af251e8ab1cb431461 |
VRCFaceTracking-2026.9.21.0-beta-win-arm64.zip |
48.07 | 1ab2e26cf49747739519db69d13181799af8849eea93f4fba49d69f54580b5e9 |
VRCFaceTracking-2026.9.21.0-beta-win-x64.zip |
50.21 | 44bc507dec16e6fdd86259b28bad59b46ddd9ac8782f737893cf9db6a0623f39 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
18dc053fadc3onmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install on Windows
- Download
VRCFaceTracking-2026.9.21.0-beta-win-arm64.ziporVRCFaceTracking-2026.9.21.0-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.9.21.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.9.21.0-beta-linux-x64.tar.gzfrom this release, picking the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app is not executable after extraction, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6 installed.
Install on macOS
- Download
VRCFaceTracking-2026.9.21.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.9.21.0-beta-osx-x64.tar.gzfrom this release, picking the file that matches your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features are unavailable on macOS.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the archive for your platform, then restarts. You can also close the app and extract the archive over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.9.18.0
VRCFaceTracking v2026.9.18.0
What's Changed
Features
- feat(release): ship Windows, Linux, and macOS builds with a per-OS updater by RealWhyKnot in d745b4f
- feat(mutations): master switch and developer-gated tuning controls by RealWhyKnot in d5bc4e4
- feat(settings): developer mode, changeable log folder, and camera stream view by RealWhyKnot in 90ff342
- feat(ui): settings and capability controls, shared styling, output page rework by RealWhyKnot in 1285694
- feat(modules): report startup progress and stream camera frames over module IPC by RealWhyKnot in 3738b28
- feat(ui): add cross-platform Avalonia app head alongside the WinUI app by RealWhyKnot in dca36f6
- feat(modules): per-module capability restrictions persisted across sessions by RealWhyKnot in a18964c
- feat(modules): run multiple modules at once with deterministic capability assignment by RealWhyKnot in c81aa80
- feat(modules): uninstall modules without restarting the app by RealWhyKnot in 64b8cc6
- feat: add eye and mouth/brow assist tracking mutations by RealWhyKnot in f23c847
- feat: restart a crashed module process automatically by RealWhyKnot in 3e1cde7
- feat(registry): Fix module installation button states. by lumeyisnotyou in 6081c7a
- feat(updates): check GitHub releases on beta and stable builds and apply updates in-app by RealWhyKnot in 5a10a1d
- feat(logging): dated rotating log files, verbose gate per build channel, module crash capture by RealWhyKnot in 6526679
- feat(gaze): add linearly normalised eye gaze output parameters by Happyrobot33 in f851015
Bug Fixes
- fix(ui): make status colours follow the light and dark themes by RealWhyKnot in 253e0cc
- fix(build): track the Windows OpenVR runtime so clean checkouts build by RealWhyKnot in b8d3c45
- fix(logging): sanitize module log names identically on every platform by RealWhyKnot in 707c521
- fix(mutations): leave the eye and mouth/brow assists off by default by RealWhyKnot in ce5abf2
- fix(ui): review fixes for settings, registry, and page lifecycle by RealWhyKnot in 809c2f6
- fix(modules): harden init, restart, and IPC paths found in review by RealWhyKnot in 1a60fb8
- fix(ui): stop the tracking settings page crashing the app and drop the inherited telemetry config by RealWhyKnot in a992198
- fix(core): resolve data directories on machines without existing config folders by RealWhyKnot in c2a1f0a
- fix(core): run without a local VRChat or Steam install by RealWhyKnot in 263a502
- fix(modules): guard shared tracking data against concurrent merge and send by RealWhyKnot in 6eb7ea1
- fix(modules): correct capability claim bookkeeping across multiple modules by RealWhyKnot in 116b439
- fix(modules): tell modules whether eye and expression tracking are in use by RealWhyKnot in b6dae1e
- fix(osc): stop parsing the avatar definition twice on OSCQuery load by RealWhyKnot in 3c866b8
- fix(osc): free message meta memory and dispose binary sub-parameters on reset by RealWhyKnot in 5913313
- fix(mutation): keep a mutation whose settings failed to load by RealWhyKnot in 14eb52a
- fix(osc): guard against the VRChat OSC directory not existing yet by RealWhyKnot in e1c744f
- fix: remove cross-thread races and leaks in the OSC, OpenVR, and updater paths by RealWhyKnot in 87080a4
- fix: survive network, file, and settings failures that crashed startup and the UI by RealWhyKnot in 7fc0c38
- fix(teardown): stop shutdown races being logged as module crashes by RealWhyKnot in 0f94541
- fix(ipc): keep the receive loop alive and validate packet bounds by RealWhyKnot in 7d7dfb6
- fix: keep the commit stamp out of the tracked version file by RealWhyKnot in 7b2fac9
- fix(modules): resolve module host path against the app directory by RealWhyKnot in d0b79f8
- fix(openvr): allow exit-with-SteamVR toggle offline and reconnect in the background by RealWhyKnot in c82389c
- fix: Properly run teardown on avalonia exit by benaclejames in 2c244a1
- fix: gamescope crash due to gsettings probe by benaclejames in f164340
- fix: Use local ICU on linux by benaclejames in 32c4f86
- fix: publish linux build with self contained .net runtime by benaclejames in 622a181
- fix(core): Various cross platform and async fixes for core by benaclejames in c1b400e
- fix(mutator): add loaded mutations under the mutations lock by RealWhyKnot in 8ed0d20
- fix(openvr): handle the SteamVR quit event on a timer through the normal window close, opt-in and off by default by RealWhyKnot in 936166c
- fix(module): shut the module host down ten seconds after losing the app once connected by RealWhyKnot in 4c1fce9
- fix(ipc): only decode received bytes when the socket returned data by RealWhyKnot in 47c9f56
- fix(app): create the main window lazily so launch cannot run before the host is built by RealWhyKnot in f4fedb1
- fix: Exit VRCFT when SteamVR shuts down by yuki-maruyama in af7a0e2
Performance
- perf(ui): coalesce debug image frames, index parameter rows, reuse the log scroll timer by RealWhyKnot in aa59a7c
- perf(ipc): cache the update packet bytes and wake the module host on events instead of spinning by RealWhyKnot in 3093a03
- perf(osc): encode bundles without per-tick allocations or thread hops by RealWhyKnot in ec9cd7a
- perf(osc): read parsed message fields directly and block on socket receive by RealWhyKnot in ceaa234
Changes
- refactor(ui): bind module install state instead of poking the buttons by RealWhyKnot in e2b810a
- refactor(ui): share styles, scale layout to the window, and ease transitions by RealWhyKnot in 155b3bb
- refactor(ui): replace the WinUI app with the Avalonia app as the single head by RealWhyKnot in b495d68
- refactor(mutations): label each card's toggle instead of adding a master switch by RealWhyKnot in 4195d70
- refactor(modules): route module data through capability groups at the merge point by RealWhyKnot in 5e28697
- refactor(osc): replace the native fti_osc dll with a managed codec by RealWhyKnot in 8d7d895
- refactor: Various fixes incl better async and deprecating need for module uninstall restart by benaclejames in 41d6350
- refactor(ui): move remaining literal strings to resources, add log folder and module restart buttons, point links at this repo by RealWhyKnot in 8263981
- refactor(ui): replace the toolkit list-details control in the module registry with a two-pane layout by RealWhyKnot in 6e7c498
Documentation
- docs: describe cross-platform support and multi-module tracking by RealWhyKnot in cd8ace8
- docs: cut the readme down to install and build by RealWhyKnot in 8f210d3
- docs: trim the readme by RealWhyKnot in 3d6fe2a
- docs: describe the release body and token-free nightly betas by RealWhyKnot in 750ee5b
- docs: describe the fork, its logs, build and release flow by RealWhyKnot in 965063f
CI
- ci(release): smoke test a startup marker that stable builds still log by RealWhyKnot in 14371e0
- ci(release): base the changelog on the fork point when no earlier release exists by RealWhyKnot in ab45b8f
- ci(release): draft-first releases, arm64 assets, and sturdier verification by RealWhyKnot in 155f680
- ci(contributors): bundle a generated contributors list with the app by RealWhyKnot in ea3bf10
- ci: prefix dependabot commits and accept revert subjects by RealWhyKnot in 4e0de9f
- ci(nightly): pass repo-specific paths to the beta gate by RealWhyKnot in 6b2a807
- ci: use the shared changelog-append and nightly-beta workflows by RealWhyKnot in 67e151e
- ci: use the shared resolve-tag...
v2026.9.17.0-beta
VRCFaceTracking v2026.9.17.0-beta
What's Changed
Bug Fixes
- fix(ui): make status colours follow the light and dark themes by RealWhyKnot in 253e0cc
Changes
- refactor(ui): bind module install state instead of poking the buttons by RealWhyKnot in e2b810a
- refactor(ui): share styles, scale layout to the window, and ease transitions by RealWhyKnot in 155b3bb
Chores
- chore(build): check every binding at compile time by RealWhyKnot in 433f19d
- chore(deps): move to Avalonia 11.3.22 and FluentAvalonia 2.5.1 by RealWhyKnot in af583dd
Other
- Delete docs/img directory by RealWhyKnot in 0362a01
Full Changelog: v2026.9.16.1-beta...v2026.9.17.0-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.9.17.0-beta-linux-arm64.tar.gz |
57.29 | ff6cb81a2ff383c1d666df242bafaf21b44e2491c0dac0d2638efd2689582068 |
VRCFaceTracking-2026.9.17.0-beta-linux-x64.tar.gz |
59.97 | 7eca79df05e4744fee055877395f226a2ff700da874ab60f9e2ce8f4ce626457 |
VRCFaceTracking-2026.9.17.0-beta-osx-arm64.tar.gz |
46.39 | b74430591dd02add4fc183203be14bde485d9ba2074b211146606d8331d2ebc7 |
VRCFaceTracking-2026.9.17.0-beta-osx-x64.tar.gz |
48.50 | b2542acc280db905f1223486341d14be7b659e9685114310e5f1c13c8fb13af5 |
VRCFaceTracking-2026.9.17.0-beta-win-arm64.zip |
48.06 | 98a6b083aa1e2ce18a6ecdc27a3254494ec475ac8806a56b7d7dd33e53450c22 |
VRCFaceTracking-2026.9.17.0-beta-win-x64.zip |
50.21 | a030a127b8007ef0d12e74d30bb17858cf471d3fa8ce026b086144fe9b133870 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
e2b810af268fonmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install on Windows
- Download
VRCFaceTracking-2026.9.17.0-beta-win-arm64.ziporVRCFaceTracking-2026.9.17.0-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.9.17.0-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.9.17.0-beta-linux-x64.tar.gzfrom this release, picking the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app is not executable after extraction, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6 installed.
Install on macOS
- Download
VRCFaceTracking-2026.9.17.0-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.9.17.0-beta-osx-x64.tar.gzfrom this release, picking the file that matches your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features are unavailable on macOS.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the archive for your platform, then restarts. You can also close the app and extract the archive over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.9.16.1-beta
VRCFaceTracking v2026.9.16.1-beta
What's Changed
Features
- feat(release): ship Windows, Linux, and macOS builds with a per-OS updater by RealWhyKnot in d745b4f
- feat(mutations): master switch and developer-gated tuning controls by RealWhyKnot in d5bc4e4
- feat(settings): developer mode, changeable log folder, and camera stream view by RealWhyKnot in 90ff342
- feat(ui): settings and capability controls, shared styling, output page rework by RealWhyKnot in 1285694
- feat(modules): report startup progress and stream camera frames over module IPC by RealWhyKnot in 3738b28
- feat(ui): add cross-platform Avalonia app head alongside the WinUI app by RealWhyKnot in dca36f6
- feat(modules): per-module capability restrictions persisted across sessions by RealWhyKnot in a18964c
- feat(modules): run multiple modules at once with deterministic capability assignment by RealWhyKnot in c81aa80
Bug Fixes
- fix(build): track the Windows OpenVR runtime so clean checkouts build by RealWhyKnot in b8d3c45
- fix(logging): sanitize module log names identically on every platform by RealWhyKnot in 707c521
- fix(mutations): leave the eye and mouth/brow assists off by default by RealWhyKnot in ce5abf2
- fix(ui): review fixes for settings, registry, and page lifecycle by RealWhyKnot in 809c2f6
- fix(modules): harden init, restart, and IPC paths found in review by RealWhyKnot in 1a60fb8
- fix(ui): stop the tracking settings page crashing the app and drop the inherited telemetry config by RealWhyKnot in a992198
- fix(core): resolve data directories on machines without existing config folders by RealWhyKnot in c2a1f0a
- fix(core): run without a local VRChat or Steam install by RealWhyKnot in 263a502
- fix(modules): guard shared tracking data against concurrent merge and send by RealWhyKnot in 6eb7ea1
- fix(modules): correct capability claim bookkeeping across multiple modules by RealWhyKnot in 116b439
Changes
- refactor(ui): replace the WinUI app with the Avalonia app as the single head by RealWhyKnot in b495d68
- refactor(mutations): label each card's toggle instead of adding a master switch by RealWhyKnot in 4195d70
- refactor(modules): route module data through capability groups at the merge point by RealWhyKnot in 5e28697
Documentation
- docs: describe cross-platform support and multi-module tracking by RealWhyKnot in cd8ace8
CI
- ci(release): draft-first releases, arm64 assets, and sturdier verification by RealWhyKnot in 155f680
- ci(contributors): bundle a generated contributors list with the app by RealWhyKnot in ea3bf10
Tests
- test(ui): render every page headlessly and cover the mutator templates by RealWhyKnot in 1be5d21
- test(ipc): stop parallel split-packet tests from sharing reassembly state by RealWhyKnot in a3617a5
Chores
- chore(deps): upgrade the Windows OpenVR runtime to 2.15.6 by RealWhyKnot in cf94689
Other
- Update README.md by RealWhyKnot in 97f781c
- Update README.md by RealWhyKnot in efc6ea6
Full Changelog: v2026.9.16.0-beta...v2026.9.16.1-beta
File integrity
| Asset | Size (MiB) | SHA-256 |
|---|---|---|
VRCFaceTracking-2026.9.16.1-beta-linux-arm64.tar.gz |
57.27 | 66740138f5cee4ae374d5b24b9de8eed544d142156f410ed38ea2da8ce829be8 |
VRCFaceTracking-2026.9.16.1-beta-linux-x64.tar.gz |
59.96 | 8812ec27a018f578eecc87978da1965b4e20eba9608ca9cfb2d2ebbc18fa247f |
VRCFaceTracking-2026.9.16.1-beta-osx-arm64.tar.gz |
46.36 | d6b2affc9e742e1f15f687f558db16113f6ea626a12fd2fc099e53b3e15f15a8 |
VRCFaceTracking-2026.9.16.1-beta-osx-x64.tar.gz |
48.47 | d4c298ffc3ee614c9c7cdd8aa597b3160f77d6944d90b5dce5466039d47181b4 |
VRCFaceTracking-2026.9.16.1-beta-win-arm64.zip |
48.04 | cd85a7277afc5e74460967815d630f7cb3bb5fb52ec5e082b768db7e3b5f080f |
VRCFaceTracking-2026.9.16.1-beta-win-x64.zip |
50.19 | bfe8257b90e795b50bc4ba14b9e3c12e14d0a43607c4c3836fae8d6b108076f1 |
Per-file hashes ship beside each archive as a matching .integrity.tsv asset.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
cf94689eab2fonmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install on Windows
- Download
VRCFaceTracking-2026.9.16.1-beta-win-arm64.ziporVRCFaceTracking-2026.9.16.1-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Install on Linux
- Download
VRCFaceTracking-2026.9.16.1-beta-linux-arm64.tar.gzorVRCFaceTracking-2026.9.16.1-beta-linux-x64.tar.gzfrom this release, picking the file that matches your CPU. - Extract it into its own folder:
mkdir vrcft && tar -xzf <archive> -C vrcft. - If the app is not executable after extraction, run
chmod +x VRCFaceTrackingin that folder. - Run
./VRCFaceTracking.
Minimal distros also need libice6 and libsm6 installed.
Install on macOS
- Download
VRCFaceTracking-2026.9.16.1-beta-osx-arm64.tar.gzorVRCFaceTracking-2026.9.16.1-beta-osx-x64.tar.gzfrom this release, picking the file that matches your CPU (Apple Silicon isosx-arm64). - Extract it into its own folder and run
./VRCFaceTrackingfrom there.
If Gatekeeper blocks the app, run xattr -dr com.apple.quarantine on the extracted folder and start it again. SteamVR features are unavailable on macOS.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the archive for your platform, then restarts. You can also close the app and extract the archive over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).
v2026.9.16.0-beta
VRCFaceTracking v2026.9.16.0-beta
What's Changed
Features
- feat(modules): uninstall modules without restarting the app by RealWhyKnot in 64b8cc6
- feat: add eye and mouth/brow assist tracking mutations by RealWhyKnot in f23c847
- feat: restart a crashed module process automatically by RealWhyKnot in 3e1cde7
- feat(registry): Fix module installation button states. by lumeyisnotyou in 6081c7a
Bug Fixes
- fix(modules): tell modules whether eye and expression tracking are in use by RealWhyKnot in b6dae1e
- fix(osc): stop parsing the avatar definition twice on OSCQuery load by RealWhyKnot in 3c866b8
- fix(osc): free message meta memory and dispose binary sub-parameters on reset by RealWhyKnot in 5913313
- fix(mutation): keep a mutation whose settings failed to load by RealWhyKnot in 14eb52a
- fix(osc): guard against the VRChat OSC directory not existing yet by RealWhyKnot in e1c744f
- fix: remove cross-thread races and leaks in the OSC, OpenVR, and updater paths by RealWhyKnot in 87080a4
- fix: survive network, file, and settings failures that crashed startup and the UI by RealWhyKnot in 7fc0c38
- fix(teardown): stop shutdown races being logged as module crashes by RealWhyKnot in 0f94541
- fix(ipc): keep the receive loop alive and validate packet bounds by RealWhyKnot in 7d7dfb6
- fix: keep the commit stamp out of the tracked version file by RealWhyKnot in 7b2fac9
- fix: Properly run teardown on avalonia exit by benaclejames in 2c244a1
- fix: gamescope crash due to gsettings probe by benaclejames in f164340
- fix: Use local ICU on linux by benaclejames in 32c4f86
- fix: publish linux build with self contained .net runtime by benaclejames in 622a181
- fix(core): Various cross platform and async fixes for core by benaclejames in c1b400e
Changes
- refactor(osc): replace the native fti_osc dll with a managed codec by RealWhyKnot in 8d7d895
- refactor: Various fixes incl better async and deprecating need for module uninstall restart by benaclejames in 41d6350
Documentation
- docs: cut the readme down to install and build by RealWhyKnot in 8f210d3
- docs: trim the readme by RealWhyKnot in 3d6fe2a
CI
- ci: prefix dependabot commits and accept revert subjects by RealWhyKnot in 4e0de9f
- ci(nightly): pass repo-specific paths to the beta gate by RealWhyKnot in 6b2a807
- ci: use the shared changelog-append and nightly-beta workflows by RealWhyKnot in 67e151e
- ci: use the shared resolve-tag action by RealWhyKnot in 038b86f
- ci: use the shared commit-msg-check workflow by RealWhyKnot in f181d34
- ci: fix up incorrect $(OS) identifier as we use Linux GH actions runners to build all versions now and these wouldn't work for Windows. Remove need for vcruntime too since we no longer use winui3 by benaclejames in 60b6c10
- ci: Make AnyCPU actually build with AnyCPU by benaclejames in b453ee4
Chores
- chore(core): stop copying vcruntime140.dll into the output by RealWhyKnot in 077ae95
- chore: use the shared commit hooks by RealWhyKnot in fb28989
Other
- style: fix indentation in the packet decoder by RealWhyKnot in 21b3057
- Include avatarinfo in parameter reset call to allow parameters to make more intelligent decisions and maintain backwards compat with osc json def by benaclejames in fa3514f
- Remove erroneous double parsing of legacy avatar definition. Dont send native when zero param list passed by benaclejames in c006dc5
- avatarinfo parsing tweaks by benaclejames in 0ddb523
- Fix up disposal in baseparameter, oscmessage, and binarybaseparameter by benaclejames in 9dc8f47
- Fix up localizations by benaclejames in 32a6f50
- Better conditionals for native=. Cleanup native definitions by benaclejames in 56e6849
- Experimental approach to ditch 10hz update loop in favor of module reply packet based send quorum by benaclejames in 7d6fe87
- Attempt to improve binary message send efficiency by benaclejames in 7d2ed42
- Better osc blob handling. Refactor shared mem buffer in attempt to reduce stuttering. Rebuild fti_osc incl macos arm64 by benaclejames in 2f59bce
- Adjust module image loader to support multiple images. Attempt to restore formatting from winui by benaclejames in bedc148
- add padding to module search box. fixed bug with local module in which app would crash due to missing file. reinit modules after local module install by benaclejames in cee3183
- module install from zip button and search by benaclejames in aa6a75b
- update rust osc lib; add binary support by benaclejames in c141d07
- Fix up usingeye usingexpression statuses. Clean up moduleprocess and unifiedlibmanager to separate out sandbox handling by benaclejames in 38ea184
- Include missing openvr_api.dlls for win64/32 by benaclejames in 2cd8b97
- Better view navigatedTo notification system. Fix issue on homepage where "no modules installed" would persist after install by benaclejames in ac59aa2
- Module registry status representation tweaks. Reinitialize libmanager after module uninstall by benaclejames in 6b7f7f0
- Fix up old namespaces. Clean up logging providers. Separate DI out between core and ui. by benaclejames in 508e5e8
- Remove redundant module sandboxing fields. Double check for null on teardown. Fix up horizontal scroll bar in output page obscuring latest log line and utilize autohiding. Improve autoscroll reliability. by benaclejames in f1fc591
- Attempt to speed up logging service and output page to avoid lockup upon log spam by benaclejames in 12f53a2
- Update module registry install state on change by benaclejames in f91a4bf
- Update gh action to support linux and diff branches by benaclejames in 021c437
- Avalonia styling, converters, views & general swapping of all related code. Remove windows dependencies. Fix up various cross platform issues. First party linux support with associated libs. ARM build support. Consider ethernet frame size in udp max transfer unit. Implement (jank) chunking in sandboxclient senddata byte array instead of only ipcpacket by benaclejames in 959f4c5
Full Changelog: v2026.9.8.0-beta...v2026.9.16.0-beta
File integrity
VRCFaceTracking-2026.9.16.0-beta-win-x64.zip(92.37 MiB), SHA256263c55344a222bf7b73deb1a09a4e3c5bbe4ce7e69f5c08f8251f186edd790fd- Hashes for every file in the zip are attached as
VRCFaceTracking-2026.9.16.0-beta-win-x64.integrity.tsv.
More
- README: https://github.com/RealWhyKnot/VRCFaceTracking
- Source: commit
077ae951b70aonmain - License: Apache-2.0
- Upstream project: benaclejames/VRCFaceTracking (avatar setup and module docs at https://docs.vrcft.io)
Install (fresh)
- Download
VRCFaceTracking-2026.9.16.0-beta-win-x64.zipfrom this release. - Extract it anywhere except
Program Files. - Run
VRCFaceTracking.exe. Install your tracking module from the Module Registry tab if you have not before. - Launch VRChat with OSC enabled. The Home tab shows the module as active once it is receiving data.
Settings and installed modules live in %AppData%\VRCFaceTracking and are shared with the Steam build, so an existing setup carries over.
Uninstall
Close VRCFaceTracking and delete the extracted folder. Settings and modules stay in %AppData%\VRCFaceTracking and logs in %LocalAppData%\VRCFaceTracking\logs; delete those two folders too for a clean removal.
What you need to do
Fresh install: follow the install steps above. Existing installs are offered this update when the app starts; accept it and the app downloads, verifies and applies the zip, then restarts. You can also close the app and extract this zip over the old folder by hand.
Beta releases log verbosely by default. Stable releases log warnings and errors only; turn on verbose logging under Settings, Diagnostics before reproducing a problem. When reporting a bug, attach the newest vrcft_*.log and vrcft_module_*.log from the log folder (Settings, Diagnostics, Open folder).