vrchat_osc 2.0.0-beta.1

vrchat_osc is a Rust crate designed to easily utilize VRChat's OSC (Open Sound Control) and OSCQuery protocols.
Documentation

VRChat OSC/OSCQuery for Rust

Crates.io Documentation

vrchat_osc is a Rust crate designed to easily utilize VRChat's OSC (Open Sound Control) and OSCQuery protocols.

This crate is specifically designed to handle VRChat's unique network implementation behaviors, such as non-standard mDNS responses and binding specificities. For details on technical workarounds implemented in this crate, please refer to WORKAROUNDS.md.

Supported Network Environments

Most features work out-of-the-box on a local machine (Localhost) or within a standard Local Area Network (LAN) supporting multicast. However, due to VRChat's implementation choices (reliance on mDNS for discovery and loopback bindings), some features are limited in VPN or non-multicast environments.

Feature Method Localhost (Same PC) LAN (Local Network) VPN / Non-Multicast
Send OSC send() (Auto-Discovery) ✅ (*1)
send_to_addr() (Direct)
Receive OSC register() (Bind 0.0.0.0) ✅ (*1) ❌ (*2)
OSCQuery (Get) get_parameter() (Auto-Discovery)
get_parameter_from_addr() (Direct)
OSCQuery (Host) register() (Serve 0.0.0.0) ✅ (*3)
  • (*1) In a LAN environment, it is necessary to explicitly specify the IP address to ensure correct connectivity.
  • (*2) VRChat relies on mDNS for discovery and cannot be manually configured to send to an arbitrary IP.
  • (*3) Functionality works (server is reachable), but VRChat will not discover it via mDNS in this environment.

Supported Platforms

This crate is cross-platform and supports the following operating systems:

Platform Support Notes
Windows Native support.
Linux Native support.
MacOS VRChat does not run natively. LAN limitations apply when connecting to VRChat on another device.

Key Features

  • OSC Communication: Easily send and receive OSC messages with the VRChat client.
  • OSCQuery Service Discovery:
    • Automatically discovers VRChat clients and other OSCQuery-compatible services on the local network using mDNS.
  • OSC Service Registration: Publish your own OSC services and respond to queries from VRChat or other tools.
  • OSCQuery Get Parameter: Retrieve specific parameters from VRChat clients using OSCQuery.
  • Asynchronous Support: Achieves efficient I/O operations based on the Tokio runtime for asynchronous processing.

Setup

To use this crate, add the following dependencies to your Cargo.toml:

[dependencies]

vrchat_osc = "1"

tokio = { version = "1", features = ["full"] }

Usage Example

A basic usage example of this crate can be found in examples/full.rs.

License

This project is licensed under the terms of either the MIT license or the Apache License 2.0.

Contribution

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch for your changes.
  3. Submit a pull request with a clear description of your modifications.

By contributing, you agree that your code will be licensed under the MIT license OR Apache License 2.0.

Acknowledgements

The data models defined in vrchat_osc::models::* are implemented with reference to tychedelia/osc-query.