Overview

VMSC integrates with popular VTuber software to let stream events control your avatar in real time. When a viewer sends a gift, follows, or triggers a chat command, VMSC can change your avatar's expression, fire a hotkey, load a different model, or inject custom parameters — all automatically.

Three integration paths are supported:

  • Veadotube Mini & Full — WebSocket-based control for Veadotube avatars.
  • VTube Studio — Full API integration with token-based authentication for Live2D models.
  • Custom WebSocket — Generic WebSocket output for any WebSocket-compatible VTuber software.

Veadotube Mini & Full

Veadotube is a lightweight VTuber tool that uses PNG or GIF-based avatars with expression states. VMSC connects to Veadotube's WebSocket server to switch expressions and states from stream events.

Setup

  1. Enable WebSocket in Veadotube

    Open Veadotube and enable the WebSocket server in its settings.

  2. Auto-detect, or configure manually

    In VMSC, go to Outputs > VTuber and select Veadotube as the integration type. Click Auto-detect — VMSC reads Veadotube's own instance file to find the real, currently-running WebSocket port automatically, which is more reliable than guessing a port number by hand. If you'd rather enter it yourself (or you're connecting to Veadotube on a different machine), type the WebSocket address directly (e.g., ws://localhost:40404) — manual entry always wins for a remote host.

  3. Test the Connection

    Click Test Connection. A green status indicator confirms VMSC is connected to Veadotube.

Why auto-detect matters

Veadotube's WebSocket port is dynamic, not a fixed default — manually guessing a port is the single most common reason a Veadotube connection silently fails to establish. Auto-detect reads it directly from Veadotube's own running-instance record, so it's correct even after Veadotube changes it.

Capabilities

  • Set expression/state — Switch the avatar to a named state (e.g., "happy", "angry", "surprised").
  • Push-to-talk states — Temporarily activate a state while an event is active, then revert.
  • State list sync — VMSC fetches the list of available states from Veadotube so you can select them in the action editor dropdown.

Veadotube Auto-Discovery

Veadotube picks its WebSocket port dynamically every time it starts — 40404 is only a manual convention, not a real default, and typing it into VMSC by hand frequently connects to nothing. VMSC now reads Veadotube's own instances file to find the real, currently-running port automatically, which resolves the single most common "won't connect" report for this integration.

How It Works

Veadotube writes a small status file for every open instance to ~/.veadotube/instances, including the actual host:port its WebSocket server is listening on. When you click Auto-detect in the Veadotube setup panel (Outputs > VTuber), VMSC reads that folder and fills in the Host and Port fields with the newest running instance it finds.

Auto-detection also runs silently every time VMSC connects to a local Veadotube target (Host set to 127.0.0.1 or localhost) — including on reconnect — so a port that changes across a Veadotube restart is picked up automatically without you touching the settings again.

Manual Entry Still Works

If you're connecting to a Veadotube instance running on a different machine on your network, VMSC cannot read its instances file remotely — auto-discovery only applies to a local target. In that case, enter the remote Host and Port by hand; your manual values always take priority over auto-discovery for a non-local host.

If no running Veadotube instance is found, VMSC shows a notification and leaves the fields as they are — make sure Veadotube is open with its WebSocket server enabled before auto-detecting.

VTube Studio

VTube Studio is the most popular Live2D VTuber application. VMSC integrates through the official VTube Studio API using token-based authentication, providing deep control over your Live2D model.

Setup

  1. Enable the API in VTube Studio

    Open VTube Studio, go to Settings > API, and enable the API server. The default port is 8001.

  2. Configure VMSC

    In VMSC, go to Outputs > VTuber and select VTube Studio. Enter the API address (e.g., ws://localhost:8001).

  3. Authenticate

    Click Connect. VTube Studio will display an authentication prompt on screen asking you to approve VMSC. Click Allow in VTube Studio. VMSC stores the authentication token for future sessions.

  4. Verify

    Once authenticated, the status indicator turns green and the available models, expressions, and hotkeys are loaded into VMSC.

Token Persistence

The authentication token is saved locally. You only need to approve the connection once unless you revoke it in VTube Studio or delete the token from VMSC settings.

Capabilities

Action Description
Toggle Expression Activate or deactivate a named expression on the current model. Expressions are fetched live from VTube Studio and shown in a populated dropdown — no more typing exact expression filenames by hand.
Trigger Hotkey Fire any hotkey configured in VTube Studio (animations, toggles, item throws, etc.).
Set Parameter Set or add to a model input parameter (e.g., mouth open, eye size, custom tracking values), with a Set/Add mode and adjustable weight.
Move Model Reposition, rotate, or scale the model on screen with configurable transition duration.
Color Tint Tint the whole model, or specific art meshes by name, to a chosen color.
Load Model Switch to a different Live2D model from a dropdown of every model VTube Studio knows about.
Load / Unload Item Bring an on-screen item or prop into the scene, or remove it, from a dropdown of available item files.

Expression Dropdown

The Toggle Expression action in the VTube Studio action editor is a real, populated dropdown — not free-text entry. On connect, VMSC fetches the full expression list from VTube Studio and shows each one by name, flagging which are currently active, so you pick an expression exactly the way it appears in VTube Studio instead of typing its filename from memory.

Alongside the expression picker, an Activate checkbox controls whether the action turns the expression on or off — useful for pairing a "start" action on one trigger with a matching "stop" action on another.

Dropdown Requires a Live Connection

The dropdown only populates once VTube Studio is connected and authenticated. If you configure this action while disconnected, VMSC falls back to a text field so you can still enter an expression filename manually — connect and re-open the action to switch to the dropdown.

Color Tint

The Color Tint action recolors your Live2D model from a rule — useful for flashing the avatar a color on a big gift, or applying a themed tint for the duration of an event.

  • Tint Color — pick a color with the color swatch or type a hex value directly.
  • Art Meshes — an optional comma-separated name filter. Leave it blank to tint the whole model; fill it in (e.g. hair, cheek) to tint only art meshes whose names match.

Tinting blends from white toward your chosen color. Use #ffffff to clear an active tint back to the model's natural colors.

Model Management

The Load Model action switches VTube Studio's active Live2D model from a rule. VMSC fetches the full list of models VTube Studio knows about and presents them in a dropdown, marking whichever one is currently loaded, so you can trigger a model swap (e.g. a costume-change model, or a special "hype" model) from any stream event.

Item & Prop System

VTube Studio's item system lets you place images and animations on screen alongside your model — VMSC can load or unload these from a rule.

  • Load Item — choose an item file from a dropdown of everything available in VTube Studio, and set its on-screen position (X/Y, 0–1) and size (0–1).
  • Unload Item — remove a specific item by file name, or check Unload ALL items in the scene to clear everything at once.

This is a good fit for gift-triggered props — e.g. spawning a crown image on a subscription, or clearing the scene between segments.

VMC Protocol (OSC)

VMC ("Virtual Motion Capture") is a shared OSC-over-UDP protocol spoken by several 3D VTuber applications — VSeeFace, Warudo, VMagicMirror, Inochi Session, Luppet, and 3tene, among others. Rather than building a separate integration for each app, VMSC ships one VMC sender that reaches all of them at once.

Setup

  1. Enable the VMC receiver in your VTuber app

    In your target application's settings, enable its "VMC protocol receiver" (naming varies slightly by app) and note the port it listens on.

  2. Configure VMSC

    In VMSC, go to Outputs > VTuber, find the VMC Protocol panel, and enter the Host and Port to match — the default receiver port is 39539.

  3. Enable

    Click Enable. VMC is connectionless (UDP), so this simply opens the sender — there's no handshake or authentication step.

Capabilities

The VMC action, Set Expression / Blendshape, takes a blendshape or expression clip name and a value from 0 to 1. Use standard VRM0 clip names (Joy, Angry, Sorrow, Fun, A, I, U, E, O) or your specific model's own blendshape names. Setting a value of 0 clears that expression.

One Sink, Many Apps

Because VMC is a shared standard, the same VMSC connection and the same rule action can drive expressions on VSeeFace, Warudo, VMagicMirror, Inochi Session, Luppet, or 3tene — whichever one you have open and listening — without any per-app configuration.

Warudo

Warudo is a fast-growing 3D VTuber application with its own blueprint-based node graph. Alongside the shared VMC protocol above (which covers expressions), VMSC offers a dedicated Warudo WebSocket sink for driving custom blueprint logic directly — confetti bursts, prop spawns, scene changes, or anything else you wire into Warudo's graph.

Setup

  1. Add a Receive-Data node in Warudo

    In your Warudo blueprint, add a Receive Data (WebSocket) node and enable its server. Warudo has no fixed default port for this — note whatever port you set.

  2. Configure VMSC

    In VMSC, go to Outputs > VTuber, find the Warudo panel, and paste the full WebSocket URL (e.g., ws://127.0.0.1:19069).

  3. Connect

    Click Connect. VMSC reconnects automatically if the connection drops.

The Send Action / Data rule action sends {"action", "data"} JSON matching an Action Name you choose — wire your Receive-Data node's blueprint logic to fire on that same name. The Data field supports template variables like {{username}}.

Envelope Format

The exact JSON envelope Warudo's Receive-Data node expects is community-documented rather than published by Warudo itself. If a future Warudo update changes it, the generic Custom WebSocket output below remains a fallback you can point at the same node.

Custom WebSocket Output

For VTuber software not natively supported, VMSC offers a generic Custom WebSocket output. This sends JSON-formatted messages to any WebSocket server, letting you integrate with virtually any VTuber application that accepts WebSocket input.

Setup

  1. Select Custom WebSocket

    In Outputs > VTuber, select Custom WebSocket as the integration type.

  2. Enter the WebSocket URL

    Provide the WebSocket address of your target application (e.g., ws://localhost:9000).

  3. Define Message Templates

    Create JSON message templates that VMSC sends when an action fires. Use template variables to inject event data.

{
  "action": "setExpression",
  "expression": "{{event.expressionName}}",
  "duration": 5000,
  "user": "{{user.nickname}}"
}
Compatibility

Custom WebSocket works with any software that accepts WebSocket connections, including PNGTubers, Luppet, Animaze, and custom Unity or Godot avatar controllers.

VTuber Actions in Rules

VTuber control is available as an action target in the Rules system. When adding an action to a rule, select VTuber, choose the target app, and pick from the available actions:

  • Veadotube — Set/Push/Pop/Toggle State, Boolean Control (with timed toggle), Number Node, String Node.
  • VTube Studio — Trigger Hotkey, Toggle Expression, Set Parameter, Move Model, Color Tint, Load Model, Load/Unload Item.
  • VMC Protocol — Set Expression / Blendshape (reaches VSeeFace, Warudo, VMagicMirror, Inochi Session, Luppet, 3tene).
  • Warudo — Send Action / Data to a blueprint's Receive-Data node.
  • VNyan — Send Command (plain text, numeric, or JSON) to a WebSocket Callback node.
  • Custom WebSocket — Send a raw text or JSON message.

Combine VTuber actions with other actions in the same rule for multi-layered responses. For example, a gift could trigger an excited expression, play a sound alert, and send a TTS thank-you message simultaneously.

VTuber Events as Rule Triggers

VTuber integration is no longer output-only. VMSC can now also listen for events coming from your VTuber software and use them as the trigger for a rule — the avatar app can start an automation, not just react to one.

Available Events

Adding a rule with the VTuber Event trigger type (found under the VTuber platform) reacts to:

App Event Fires When
VTube Studio Hotkey Triggered A hotkey is fired inside VTube Studio itself (by you, a plugin, or a physical trigger) — not just from VMSC.
VTube Studio Model Clicked You click on the model in the VTube Studio window.
VTube Studio Tracking Status Changed Face, left-hand, or right-hand tracking is gained or lost.
VTube Studio Model Loaded A new Live2D model finishes loading in VTube Studio.
Veadotube State Changed The avatar's active state changes, including changes made directly in Veadotube (not only through VMSC).

Filter a VTuber Event trigger down to exactly what you want using the fields App, Event, Hotkey Name (VTS), State Name (Veadotube), and Face Found (VTS tracking) — for example, a rule that only fires when tracking is lost, or only when a specific named hotkey goes off.

Example Use Cases

  • Trigger an overlay alert or TTS line whenever you click your own model on screen.
  • Pause a rule chain, or switch to a "away" overlay, when face tracking is lost.
  • Log or announce every model swap, even ones triggered manually in VTube Studio rather than by a VMSC rule.
  • Mirror a Veadotube state change (set by a Stream Deck button, say) into a VMSC-driven overlay update.

No separate toggle is needed to turn this on — event subscriptions are requested automatically as soon as VTube Studio or Veadotube connects, alongside the existing output-control connection.

Newer Than the Output Path

Output control (VMSC → avatar) has been part of VMSC for a long time and is thoroughly battle-tested. Events-as-triggers (avatar → VMSC) is a newer addition built on the same event pipeline as other trigger types, but hasn't accumulated the same real-world mileage yet — particularly the exact Veadotube state-change notification format, which is community-documented rather than officially published. If a VTuber Event rule doesn't fire the way you expect, check the event log to see what actually arrived, and consider it a good candidate to double-check before relying on it for something time-critical on stream.

Troubleshooting

Issue Solution
Connection fails Verify the WebSocket port matches the VTuber software's setting. Check that no firewall is blocking local connections. For Veadotube, try the Auto-detect button instead of typing a port by hand.
Veadotube won't connect even though it's open Make sure the WebSocket server is actually enabled in Veadotube's settings, then click Auto-detect. If auto-detect finds nothing, Veadotube's instances file may not have been written yet — restart Veadotube and try again.
VTube Studio auth prompt does not appear Ensure the VTube Studio API is enabled in settings. Restart VTube Studio and try again.
Expressions, hotkeys, models, or items are missing from a dropdown These lists are fetched on connect. Reconnect to VTube Studio to re-fetch, or trigger a Load Model action — VMSC automatically refreshes its cached lists after a model finishes loading.
Actions fire but avatar does not react Check that the expression/hotkey name in the rule matches exactly (case-sensitive) with the VTuber software.
VMC action has no effect in VSeeFace/Warudo/etc. Confirm the target app's VMC protocol receiver is enabled and its port matches what you entered in VMSC (default 39539). Also confirm the blendshape/expression name matches one your model actually has.
Warudo action has no effect Confirm the Receive Data (WebSocket) node's server is enabled in the blueprint and the Action Name in your rule matches what the node checks for. If it still doesn't work, fall back to Custom WebSocket pointed at the same node.
A VTuber Event rule never fires Confirm VTube Studio or Veadotube shows as connected in Outputs > VTuber — event subscriptions only activate on a live connection. Remember this path is newer than output control; check the event log to see whether the event arrived at all before assuming the rule is misconfigured.