npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vrh-deopt

v0.1.0

Published

Command line tools for vroidhub-deoptimize

Readme

vrh-deopt

CLI for vroidhub-deoptimize.

Install

npm install -g vrh-deopt

Installed binaries:

vroidhub-deoptimize
vrh-deopt

Commands

vrh-deopt restore <input> <output> [flags]
vrh-deopt download <id-or-url> <output> [flags]
vrh-deopt cookie set <cookie>
vrh-deopt cookie status
vrh-deopt cookie clear
vrh-deopt unwrap <input> <output> [flags]
vrh-deopt inspect <url-or-path>

IDs

Download accepts either:

  • a Hub page model id from /models/<page-model-id>
  • a Hub page URL
  • a direct CloudFront model URL

Restore metadata uses the internal model id from:

model_optimized_files/<id>/<file>.vrm

Do not confuse the page model id with the internal model id.

Cookie

Downloads can read VROIDHUB_COOKIE.

On Windows, the CLI can store it in the user environment:

vrh-deopt cookie set "<cookie>"
vrh-deopt cookie status
vrh-deopt cookie clear

cookie status prints the current value.

On Linux and macOS, set the environment variable in your shell:

export VROIDHUB_COOKIE='<cookie>'

download

Downloads a model payload and optionally unwraps it.

Decoded GLB/VRM output:

vrh-deopt download "https://hub.vroid.com/en/characters/8203996677873912295/models/5758707318601192662" model.vrm

Direct model URL:

vrh-deopt download "https://host/c/v2/s=op/model_optimized_files/4210903/file.vrm" model.vrm

Encrypted payload output:

vrh-deopt download "<id-or-url>" payload.bin --encrypted

Force API endpoint:

vrh-deopt download "<page-model-id-or-url>" model.vrm --endpoint optimized-preview
vrh-deopt download "<page-model-id-or-url>" model.vrm --endpoint preview

Flags:

--endpoint <value>  Force optimized-preview or preview.
--encrypted         Write encrypted payload instead of decoded GLB/VRM.
--json              Print download metadata.
--force             Overwrite output files.

restore

Restores preview mesh vertices and writes a GLB/VRM buffer.

Input can be:

  • raw GLB/VRM
  • encrypted payload
  • Hub page model id
  • Hub page URL
  • direct model URL

If raw GLB parsing fails with GLB_MAGIC_MISMATCH, the CLI tries payload unwrap by default.

Restore a local model with URL-derived id/path:

vrh-deopt restore model.vrm restored.vrm \
  --url "https://host/c/v2/s=op/model_optimized_files/4210903/file.vrm"

Download and restore:

vrh-deopt restore "https://hub.vroid.com/en/characters/8203996677873912295/models/5758707318601192662" restored.vrm

Manual path:

vrh-deopt restore model.vrm restored.vrm \
  --path "model_optimized_files/4210903/file.vrm" \
  --optimized true

Manual seed:

vrh-deopt restore model.vrm restored.vrm \
  --seed 32409552 \
  --inc 2352940687395663367

Inverse transform:

vrh-deopt restore model.vrm restored.vrm --multiplier -0.125

Write intermediate data:

vrh-deopt restore model.vrm restored.vrm \
  --url "<direct-model-url>" \
  --json \
  --metadata metadata.json \
  --texture meta.rgba

Restored GLB metadata:

{
  "extras": {
    "vroidhubInfo": {
      "id": "4210903",
      "version": "5.0",
      "timestamp": "26232110"
    }
  }
}

Flags:

--url <value>          Full model URL. Extracts id, path, optimized branch.
--path <value>         Model path.
--id <value>           Internal model id.
--endpoint <value>     Force optimized-preview or preview for URL/id input.
--optimized <bool>     Use s=op SHA-1 XOR seed branch.
--timestamp <value>    Override extension timestamp.
--version <value>      Override extension version.
--seed <value>         Manual seed i.
--inc <value>          Viewer increment.
--origin <value>       RNG origin.
--multiplier <number>  Vertex transform multiplier.
--auto-unwrap          Try payload unwrap on GLB magic mismatch.
--no-auto-unwrap       Disable automatic payload unwrap.
--capture-factors      Keep per-vertex transform factors in memory.
--json                 Print metadata summary.
--metadata <file>      Write metadata summary JSON.
--texture <file>       Write generated 256x256 RGBA texture bytes.
--force                Overwrite output files.

unwrap

Only unwraps the outer payload:

vrh-deopt unwrap payload.bin model.vrm --force

Payload layout:

0..15    AES-CBC IV
16..47   AES-256 key
48..end  AES-CBC ciphertext

Decoded payload:

0..3     uint32 little-endian zstd output size
4..end   zstd data

inspect

Parses direct model URLs or paths:

vrh-deopt inspect "https://host/c/v2/s=op/model_optimized_files/4210903/file.vrm"

Output:

{
  "id": "4210903",
  "path": "model_optimized_files/4210903/file.vrm",
  "optimized": true
}