Community:OSC Resources: Difference between revisions

From VRChat Wiki
~Pausbe (talk | contribs)
Created community OSC resources page.
 
Hackebein (talk | contribs)
add CoreOSC and OscQueryLibrary
 
(One intermediate revision by the same user not shown)
Line 11: Line 11:
|-
|-
!
!
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/radarsat1/liblo liblo]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/radarsat1/liblo liblo]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/stella3d/OscCore OscCore]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/LucHeart/CoreOSC-UTF8-ASYNC CoreOSC]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/vrchat-community/vrc-oscquery-lib vrc-oscquery-lib]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/stella3d/OscCore OscCore]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/hypebeast/go-osc go-osc]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/Natsumi-sama/OscQueryLibrary OscQueryLibrary]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/hoijui/JavaOSC JavaOSC]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/vrchat-community/vrc-oscquery-lib vrc-oscquery-lib]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/colinbdclark/osc.js osc.js]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/hypebeast/go-osc go-osc]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/jangxx/node-oscquery node-oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/hoijui/JavaOSC JavaOSC]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/attwad/python-osc python-osc]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/colinbdclark/osc.js osc.js]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/theepicsnail/vrchat_oscquery vrchat_oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/jangxx/node-oscquery node-oscquery]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/fraklein/python-oscquery python-oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/attwad/python-osc python-osc]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/cyberkitsune/tinyoscquery tinyoscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/theepicsnail/vrchat_oscquery vrchat_oscquery]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/klingtnet/rosc rosc]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/fraklein/python-oscquery python-oscquery]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://lib.rs/crates/oscquery oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/cyberkitsune/tinyoscquery tinyoscquery]
! style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/orchetect/OSCKit OSCKit]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/klingtnet/rosc rosc]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://lib.rs/crates/oscquery oscquery]
! style="width: 6%; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | [https://github.com/orchetect/OSCKit OSCKit]
|-
|-
! style="text-align:left" | Language
! style="text-align:left" | Language
| C
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C
| C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| C#
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| Go
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| Java
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | C#
| JavaScript
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Go
| TypeScript
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Java
| Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | JavaScript
| Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | TypeScript
| Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| Python
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Python
| Swift
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Rust
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Swift
|-
|-
! style="text-align:left" | License
! style="text-align:left" | License
| LGPL-2.1+
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | LGPL-2.1+
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| BSD-3-Clause
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT / GPL-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | BSD-3-Clause
| Unlicense
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / GPL-2.0
| None
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | Unlicense
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | None
| MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
| MIT
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT / Apache-2.0
| style="writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;" | MIT
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSC transport
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | OSC transport
|-
|-
! style="text-align:left" | Send messages
! style="text-align:left" | Send messages
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗<ref name="oscquerylib-osc">Pair with a separate OSC library such as [https://www.nuget.org/packages/LucHeart.CoreOSC LucHeart.CoreOSC] for UDP transport (see the [https://github.com/Natsumi-sama/OscQueryLibrary/tree/main/OscQueryExample example project]).</ref>
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes<ref group="osc" name="python-osc-dep">Via bundled [https://pypi.org/project/python-osc/ python-osc] dependency; bundle support requires using python-osc's API directly.</ref>
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | <ref name="python-osc-dep">Via bundled [https://pypi.org/project/python-osc/ python-osc] dependency; bundle support requires using python-osc's API directly.</ref>
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
|-
|-
! style="text-align:left" | Receive messages
! style="text-align:left" | Receive messages
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗<ref name="oscquerylib-osc" />
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes<ref group="osc" name="python-osc-dep" />
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | <ref name="python-osc-dep" />
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
|-
|-
! style="text-align:left" | Bundle support
! style="text-align:left" | Bundle support
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="osccore-bundle">Receive fully supported including nested bundles; send requires low-level <code>OscWriter</code> API.</ref>
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#D4890B; color:#fff" | ~<ref name="osccore-bundle">Receive fully supported including nested bundles; send requires low-level <code>OscWriter</code> API.</ref>
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗<ref name="oscquerylib-osc" />
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes<ref group="osc" name="python-osc-dep" />
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | <ref name="python-osc-dep" />
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
|-
|-
! style="text-align:left" | VRChat types
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | VRChat types
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T F</code><ref group="osc" name="python-osc-dep" />
| <code>i f s T</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
| <code>i f s T F</code>
|-
|-
! style="text-align:left" | Optional types
! style="text-align:left" | <code>i</code> (int32)
| <code>b h d t S c m N I</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t S c r m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d c u []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t N</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t S c r m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t S c r m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t S c r m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d r m N []</code><ref group="osc" name="pyosc-missing"><code>t</code> (timetag) is receive-only.</ref>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t r m N []</code><ref group="osc" name="python-osc-dep" />
| style="background:#22A84A; color:#fff" | ✓
|
| style="background:#22A84A; color:#fff" | ✓
| <code>h d t</code><ref group="osc" name="toq-lossy"><code>h</code>, <code>d</code>, <code>t</code> with lossy type mapping to Python float.</ref>
| style="background:#22A84A; color:#fff" | ✓<ref name="python-osc-dep" />
| <code>b h d t c r m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t S c r m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| <code>b h d t S c m N I []</code>
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" |
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — VRChat attributes
! style="text-align:left" | <code>f</code> (float32)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>s</code> (string)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>T</code> (True)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>F</code> (False)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | Optional types
|-
! style="text-align:left" | <code>b</code> (blob)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>h</code> (int64)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#D4890B; color:#fff" | ~<ref name="toq-lossy">lossy type mapping to Python float.</ref>
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>d</code> (float64)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#D4890B; color:#fff" | ~<ref name="toq-lossy" />
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>t</code> (timetag)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#D4890B; color:#fff" | ~<ref name="pyosc-missing">receive-only</ref>
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#D4890B; color:#fff" | ~<ref name="toq-lossy" />
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>S</code> (symbol)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>c</code> (char)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>r</code> (RGBA color)
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
|-
! style="text-align:left" | <code>u</code>
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
|-
! style="text-align:left" | <code>m</code> (MIDI message)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>N</code> (Nil)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>I</code> (Infinitum)
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! style="text-align:left" | <code>[]</code> (array)
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
| style="background:#22A84A; color:#fff" | ✓
|-
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — VRChat attributes
|-
|-
! style="text-align:left" | HTTP server
! style="text-align:left" | HTTP server
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="vq-minimal">Minimal VRChat-specific subset; only serves <code>/</code> and <code>/?HOST_INFO</code>.</ref>
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#D4890B; color:#fff" | ~<ref name="vq-minimal">Minimal VRChat-specific subset; only serves <code>/</code> and <code>/?HOST_INFO</code>.</ref>
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | HOST_INFO
! style="text-align:left" | HOST_INFO
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="vq-hostinfo">Returns <code>OSC_PORT</code> only; missing <code>NAME</code>, <code>EXTENSIONS</code>, <code>OSC_IP</code>, <code>OSC_TRANSPORT</code>.</ref>
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#D4890B; color:#fff" | ~<ref name="vq-hostinfo">Returns <code>OSC_PORT</code> only; missing <code>NAME</code>, <code>EXTENSIONS</code>, <code>OSC_IP</code>, <code>OSC_TRANSPORT</code>.</ref>
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | FULL_PATH
! style="text-align:left" | FULL_PATH
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="vq-hardcoded">Hardcoded to <code>/avatar</code> and <code>/tracking</code> paths; not a dynamic OSC address tree.</ref>
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#D4890B; color:#fff" | ~<ref name="vq-hardcoded">Hardcoded to <code>/avatar</code> and <code>/tracking</code> paths; not a dynamic OSC address tree.</ref>
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | CONTENTS
! style="text-align:left" | CONTENTS
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="vq-hardcoded" />
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#D4890B; color:#fff" | ~<ref name="vq-hardcoded" />
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | TYPE
! style="text-align:left" | TYPE
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | ACCESS
! style="text-align:left" | ACCESS
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | VALUE
! style="text-align:left" | VALUE
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | RANGE
! style="text-align:left" | RANGE
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="range-adv">Advertised as supported in HOST_INFO extensions but not implemented at the node level.</ref>
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv">Advertised as supported in HOST_INFO extensions but not implemented at the node level.</ref>
| style="background:#C03030; color:#fff" | No
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv" />
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="range-adv" />
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#D4890B; color:#fff" | ~<ref name="range-adv" />
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | DESCRIPTION
! style="text-align:left" | DESCRIPTION
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="desc-adv">Supported on the node level but not advertised in HOST_INFO extensions.</ref>
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv">Supported on the node level but not advertised in HOST_INFO extensions.</ref>
| style="background:#C03030; color:#fff" | No
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv">Supported on the node level but not advertised in HOST_INFO extensions.</ref>
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#D4890B; color:#fff" | Partial<ref group="osc" name="desc-adv" />
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#D4890B; color:#fff" | ~<ref name="desc-adv" />
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — additional OSCQuery attributes
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery server — additional OSCQuery attributes
|-
|-
! style="text-align:left" | TAGS
! style="text-align:left" | TAGS
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | EXTENDED_TYPE
! style="text-align:left" | EXTENDED_TYPE
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | UNIT
! style="text-align:left" | UNIT
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | CRITICAL
! style="text-align:left" | CRITICAL
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | CLIPMODE
! style="text-align:left" | CLIPMODE
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | OVERLOADS
! style="text-align:left" | OVERLOADS
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" | ✗
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery client
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | OSCQuery client
|-
|-
! style="text-align:left" | HTTP client
! style="text-align:left" | HTTP client
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! colspan="15" style="text-align:left; background:#9AA0AA; color:#fff" | Service discovery
! colspan="17" style="text-align:left; background:#9AA0AA; color:#fff" | Service discovery
|-
|-
! style="text-align:left" | mDNS advertisement
! style="text-align:left" | mDNS advertisement
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" |
|-
|-
! style="text-align:left" | mDNS discovery
! style="text-align:left" | mDNS discovery
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" | ✗
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" | ✓
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#22A84A; color:#fff" | Yes
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#22A84A; color:#fff" |
| style="background:#C03030; color:#fff" | No
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" |
| style="background:#C03030; color:#fff" |
|}
|}
{{reflist|group=osc}}
{{reflist}}


==See Also==
==See Also==

Latest revision as of 04:17, 1 May 2026

V · ECommunity-written content
The following was created by the community. It may contain material not directly endorsed by the VRChat team. To learn more, consider reading Contributing to the VRChat Wiki.

Open Sound Control enables users to read and write data in VRChat. There are plenty of helpful community made tools and libraries, that use OSC, and makes developing OSC tools easier.

Tools

Libraries

liblo CoreOSC OscCore OscQueryLibrary vrc-oscquery-lib go-osc JavaOSC osc.js node-oscquery python-osc vrchat_oscquery python-oscquery tinyoscquery rosc oscquery OSCKit
Language C C# C# C# C# Go Java JavaScript TypeScript Python Python Python Python Rust Rust Swift
License LGPL-2.1+ MIT MIT MIT MIT MIT BSD-3-Clause MIT / GPL-2.0 MIT Unlicense None MIT MIT MIT / Apache-2.0 MIT / Apache-2.0 MIT
OSC transport
Send messages [1] [2]
Receive messages [1] [2]
Bundle support ~[3] [1] [2]
VRChat types
i (int32) [2]
f (float32)
s (string)
T (True)
F (False)
Optional types
b (blob)
h (int64) ~[4]
d (float64) ~[4]
t (timetag) ~[5] ~[4]
S (symbol)
c (char)
r (RGBA color)
u
m (MIDI message)
N (Nil)
I (Infinitum)
[] (array)
OSCQuery server — VRChat attributes
HTTP server ~[6]
HOST_INFO ~[7]
FULL_PATH ~[8]
CONTENTS ~[8]
TYPE
ACCESS
VALUE
RANGE ~[9] ~[9] ~[9]
DESCRIPTION ~[10] ~[10] ~[10]
OSCQuery server — additional OSCQuery attributes
TAGS
EXTENDED_TYPE
UNIT
CRITICAL
CLIPMODE
OVERLOADS
OSCQuery client
HTTP client
Service discovery
mDNS advertisement
mDNS discovery
  1. 1.0 1.1 1.2 Pair with a separate OSC library such as LucHeart.CoreOSC for UDP transport (see the example project).
  2. 2.0 2.1 2.2 2.3 Via bundled python-osc dependency; bundle support requires using python-osc's API directly.
  3. Receive fully supported including nested bundles; send requires low-level OscWriter API.
  4. 4.0 4.1 4.2 lossy type mapping to Python float.
  5. receive-only
  6. Minimal VRChat-specific subset; only serves / and /?HOST_INFO.
  7. Returns OSC_PORT only; missing NAME, EXTENSIONS, OSC_IP, OSC_TRANSPORT.
  8. 8.0 8.1 Hardcoded to /avatar and /tracking paths; not a dynamic OSC address tree.
  9. 9.0 9.1 9.2 Advertised as supported in HOST_INFO extensions but not implemented at the node level.
  10. 10.0 10.1 10.2 Supported on the node level but not advertised in HOST_INFO extensions.

See Also