#studio #parameters #hotkeys #api-client #physics #vtubestudio #v-tube

app vtubestudio-cli

CLI program for interacting with the VTube Studio API

7 releases

0.4.0 Oct 29, 2022
0.3.6 Sep 19, 2022
0.3.5 Apr 30, 2022
0.3.4 Feb 20, 2022
0.3.2 Nov 24, 2021

#1713 in Command line utilities

MIT license

995 lines

vtubestudio-cli (vts)

CLI program for sending one-off requests to the VTube Studio API. It connects to the websocket, authenticates, performs one or two other requests, and then disconnects and exits.

The primary use case is to do infrequent actions such as triggering hotkeys or registering custom parameters, without needing to establish a long-running websocket connection.

For more complex tasks, you might want to look at client libraries like vtubestudio-rs (the Rust library that this program uses under the hood).


Check the releases page to download prebuilt binaries for your platform.

Otherwise you can use cargo install vtubestudio-cli or build it manually from this repo using cargo build --release.


vts reads auth token info from a JSON config file whose default location depends on platform.

To generate the config in the default location, you can run:

vts config init

This will register the plugin with the VTube Studio API (the user will get a pop-up in the app asking for confirmation) and save the token for use in future calls. The plugin name and developer name can be customized with --plugin-name and --developer-name, respectively.

Config file location

By default, the config file can be found at:

  • Windows: %USERPROFILE%\AppData\Roaming\walfie\vtubestudio-cli\config.json
  • macOS: $HOME/Library/Application Support/com.github.walfie.vtubestudio-cli/config.json
  • Linux: $XDG_CONFIG_DIR/vtubestudio-cli/config.json or $HOME/.config/vtubestudio-cli/config.json

This path can be overridden by setting the VTS_CONFIG environment variable or passing the --config-file flag.

You can also run vts config path to show the path to the config, or vts config show to show the contents of the config file.



  • List hotkeys

    vts hotkeys list
  • Trigger hotkey by id

    vts hotkeys trigger e50ef5139b114d63af342eb65072a5e3
  • Trigger hotkey by name

    vts hotkeys trigger --name MyHotkeyName


  • List artmeshes

    vts artmeshes list
  • Tint artmesh (rainbow)

    vts artmeshes tint --rainbow --duration 5s --tag-contains shirt sleeves

    VTube Studio resets artmesh tints when the plugin disconnects. Since this CLI program normally disconnects immediately after executing commands (which would otherwise reset the tint), the --duration flag adds a delay afterwards, to keep the tint active.

  • Tint artmesh (hex color)

    vts artmeshes tint --color ff0000 --duration 5s --tag-contains eye

    The hex color also supports alpha, so values like ff0000aa are also valid.


  • Create parameter

    vts params create MyParameterName --default 0 --min 0 --max 50
  • Inject parameter value

    vts params inject MyParameterName 5
  • Get value of parameter

    vts params get MyParameterName


  • List models

    vts models list
  • Load model by ID

    vts models load 8caf15fa0c664f489873386e43835a7f
  • Load model by name

    vts models load --name Akari
  • Move model

    vts models move --relative --duration 0.5s --rotation 180


  • Get expression list.

    vts expression list --details
  • Activate expression.

    vts expression activate myExpression_1.exp3.json


  • Get physics settings.

    vts physics get
  • Set base physics strength (default 500ms).

    vts physics set base strength 50
  • Set base wind strength for 3 seconds.

    vts physics set base wind 50 --duration 3s
  • Set strength multiplier.

    vts physics set multiplier strength 1 --id PhysicsSetting1
  • Set wind multiplier.

    vts physics set multiplier wind 0.5 --id PhysicsSetting1


vts --help


~290K SLoC