A router application for VRChat OSC, which allows OSC packets to be routed to multiple OSC applications.
Example setup of bHaptics and VRCFaceTracking with VOR here.
Questions and help: SutekhVRC Discord
- Windows (.msi)
- Linux (.elf)
- Added debugging mode to help with debugging OSC route configurations, and packet filtering configurations.
- UI tweaks ( I hate doing UI/UX ok )
- Windows and Linux builds
- Update button that shows when out of date
- Bug fixes
- Note that VOR is meant to be used to route OSC traffic that is RECEIVED from VRChat. All OSC apps can send to VRC on their own, but VRChat can only send to one port.
- Start the router enabled: --enable-on-start / -e
- Download the latest MSI and run it.
- vor.exe will be installed to C:\Program Files\vor\bin\vor.exe. You can also search for it by pressing the windows key and searching "VOR".
- Download the latest standalone ELF binary.
- Make executable and execute it.
- Note: If binding to any port less than or equal to 1024 you need elevated privileges on most linux distros.
- Install Rust & cargo here.
- Build commands
rustup default stable
git clone https://github.com/SutekhVRC/VOR
cd VOR
cargo build --release
- Release binary will be in ./target/release/
cargo wix
- MSI installer will be in ./target/wix/
-
Once VOR is opened go to the "Apps" tab. This is where you can add "apps". An app is basically a route to send to.
-
To add an app click the plus to the right of "Add new VOR app".
- Input app route parameters.
App Name(must be unique from other apps): Put an app identifier here VibeCheck/RemiOSC/etc.
App Host: This is the host that VOR will route the traffic FROM VRChat TO your app (Whatever host your app is listening on).
App Port: The port your app is listening on.
Click Add
- Remember to set your OSC app's config to bind on the ports you set in VOR (The "App Ports" in VOR). And each OSC app should be sending directly to VRChat (VRChat default bind port is 9000).
- The packet filter can be used to stop malformed packets as well as unwanted OSC packets from being routed to any apps. This can be useful for example when certain avatar animation controller parameter names do not meet the OSC spec and you need to filter them out so they dont crash your apps. (I'm looking at you, various animator obfuscation tools >.>)
- When you change the PF config remember to click the save button. PF rules will be applied the next time routing is started.
- Filter bad packets: does what it says :^) (Drops packets that do not meet the OSC protocol spec.)
- Whitelisting mode: Defaults to disallow all OSC addresses. Add OSC addresses to whilelist to allow it.
- Blacklisting mode: Defaults to allow all OSC addresses. Add OSC addresses to blacklist to block it.
- Use the whitelist filter to only allow parameters you are looking for.
- Use the blacklist to block parameters you dont want to send to apps. (Parameters like voice and movement parameters are a great thing to block)
- Can keep packets sent to apps clean.
- Helps with efficiency to drop unused parameters!
- Bind Host: The host/interface to bind the VOR router OSC listener.
- Bind Port: The port to bind the VOR router OSC listener.
- VRChat Host: Not in use.
- VRChat Port: Not in use.
- VOR Buffer Queue Size: The route buffer size 4096 is default. (You dont want this to be too low because in high load situations it could cause packet loss)
- Asynchronous routing: Default is enabled. Asynchronous routing enabled will drastically improve efficiency. I recommend using asynchronous mode. If you disable this you may get more responsive routing at the cost of higher CPU usage.
- To use OSC debugging mode you must enable it by clicking the debug button.
- Once debug mode is enabled you can start the router.
- UI packet filtering is applied in this order:
- INCOMING/OUTGOING
- DROPPED/ALLOWED
- Search/Filter
- Remember to disable debug mode when done.
- Import/Export for config files
- Options to set L4 protocol for routes