gitwtfhub

wtf is pocket-character?

pocket-stack/pocket-character — explained in plain English

Analysis updated 2026-05-18

5RustAudience · developerComplexity · 3/5Setup · moderate

TL;DR

A lightweight native desktop widget that displays an animated 3D character, built to measure how much cheaper this is versus an Electron-based version.

Mindmap

mindmap
  root((pocket-character))
    What it does
      3D VRM character widget
      Idle animations
      Spring bone physics
    Tech stack
      Rust
      QuickJS
      Bun
    Use cases
      Desktop companion widget
      Compare native vs Electron
      Swap character personalities
    Audience
      Developers
      Researchers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Run a lightweight animated desktop character widget instead of an Electron-based one.

REASON 2

Measure and compare CPU and resource usage between a native app and its Electron equivalent.

REASON 3

Swap in a different character personality by writing a new script bundle without rebuilding the host.

What's in the stack?

RustQuickJSBunwgpuVRM

How it stacks up

pocket-stack/pocket-characterdhkts1/teamclaude-rseternal-flame-ad/unitdc-rs
Stars555
LanguageRustRustRust
Last pushed2024-10-12
MaintenanceStale
Setup difficultymoderateeasymoderate
Complexity3/52/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Requires a stable Rust toolchain and Bun, and is only verified on Apple Silicon Macs.

The README does not state a license for the code, the bundled 3D model and animation assets are explicitly not MIT licensed and are downloaded separately.

Wtf does this do

pocket-character is a small desktop widget that shows a 3D animated character on your screen, similar to the digital companion apps some people run alongside games or streams. It takes the same character stage used by an existing project called airi, which is built on Electron, and reimplements it as a single lightweight native program instead. The widget shows a VRM format 3D character in a transparent, frameless window that stays on top of other windows and can be dragged anywhere on screen. The character idles with looping animation, blinks naturally at random intervals, moves its eyes slightly on its own, and its hair and clothing physically sway using spring bone physics based on the model's own data. Behind the scenes, the character's behavior is controlled by a small script bundle running in an embedded QuickJS engine, so someone could swap in a different character personality without rebuilding the whole program. The project's stated purpose is to measure a specific question: how much cheaper is this same character widget when built on this lighter native runtime instead of Electron. It includes scripts to reproduce those CPU usage measurements against the original airi project on the same machine, and a written comparison report. The code is organized into a macOS-specific widget host written in Rust, a portable behavior simulation for things like blinking and eye movement, and a separate guest script bundle. To try it, you need a stable Rust toolchain and the Bun JavaScript runtime, and it has only been tested on Apple Silicon Macs. After cloning the repository with its submodules, you run a setup command that downloads the required 3D model and animation assets, then a build and run command to launch the widget. The model and animation assets are fetched separately at setup time because their licenses are not MIT and cannot be redistributed with the code.

Yoink these prompts

Prompt 1
Explain how pocket-character reimplements airi's VRM character stage as a single native process.
Prompt 2
Help me build and run pocket-character on my Apple Silicon Mac using the setup scripts.
Prompt 3
Walk me through how the spring bone physics and eye saccade behavior work in this project.
Prompt 4
Show me how to write a new QuickJS policy bundle to give the character a different personality.

Frequently asked questions

wtf is pocket-character?

A lightweight native desktop widget that displays an animated 3D character, built to measure how much cheaper this is versus an Electron-based version.

What language is pocket-character written in?

Mainly Rust. The stack also includes Rust, QuickJS, Bun.

What license does pocket-character use?

The README does not state a license for the code, the bundled 3D model and animation assets are explicitly not MIT licensed and are downloaded separately.

How hard is pocket-character to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is pocket-character for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.