explaingit

bradmyrick/rusty-tuber

Analysis updated 2026-05-18

1RustAudience · generalComplexity · 3/5Setup · moderate

TLDR

A Rust-based PNG avatar tool for streamers that reacts to your microphone and outputs a virtual webcam that OBS, Zoom, and Discord treat as a normal camera.

Mindmap

mindmap
  root((Rusty-Tuber))
    What it does
      Mic-driven mouth layers
      Eye emotions and blinking
      Virtual webcam output
    Control
      Browser control panel
      Keyboard shortcuts
      REST API and WebSocket
    Asset layout
      Body PNG layer
      Mouth PNG states
      Eye expression sets
    Setup
      Rust build
      v4l2loopback Linux
      OBS chroma key
Click or tap to explore — scroll the page freely

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

What do people build with it?

USE CASE 1

Run a PNG avatar on stream without buying dedicated software, using your own transparent PNG artwork.

USE CASE 2

Add a virtual webcam to OBS that shows an animated character whose mouth reacts to your microphone.

USE CASE 3

Trigger emotion expressions from your phone or a Stream Deck during a live stream.

USE CASE 4

Create a lightweight VTuber alternative using simple layered PNG images instead of 3D models.

What is it built with?

Rustv4l2loopbackALSAWebSocketREST API

How does it compare?

bradmyrick/rusty-tuberabyo-software/ferro-stashariasbruno/glyph
Stars111
LanguageRustRustRust
Setup difficultymoderatemoderateeasy
Complexity3/54/52/5
Audiencegeneralops devopsdeveloper

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

How do you get it running?

Difficulty · moderate Time to first run · 30min

Linux requires the v4l2loopback kernel module and ALSA dev headers, must build from source using the Rust toolchain.

In plain English

Rusty-Tuber is a PNG avatar animation tool for streamers and virtual content creators. You supply a set of layered PNG images for a character's body, mouth states, and eye expressions, and the program drives them in real time from your microphone volume. As you speak, the mouth layer switches between four states (closed, partial, medium, and open) based on loudness. Eye expressions, blinking, and custom emotion sets can be triggered from a browser-based control panel or via keyboard shortcuts. Rather than displaying the avatar in a separate window you add to your stream, Rusty-Tuber composites all the layers into a virtual webcam. Any application that reads a camera, including OBS, Zoom, Discord, and browsers, picks it up as a normal camera input. In OBS you add a chroma key filter to remove the background color and the avatar appears transparent on your scene. The virtual webcam runs at 30 frames per second while you are talking and drops to about 8 frames per second during silence to save CPU. A built-in web panel at localhost:8080 lets you trigger emotion sets, force mouth or eye states, tune the microphone sensitivity thresholds, and adjust how fast the mouth opens and closes. The panel works on a phone or tablet on the same network, so it can function like a wireless controller during a live stream. There is also a REST API and a WebSocket endpoint for external automation and hardware hotkeys. The application compiles to a single Rust binary. The web interface is embedded inside it, so the only external files are your character's PNG images. On Linux it requires the v4l2loopback kernel module for the virtual webcam and the ALSA audio development headers to compile. macOS and Windows use the operating system's built-in audio and need no extra packages. Character art is organized as folders of transparent PNGs with specific names for each mouth and eye state. A placeholder macaw character ships with the repository. Assets are loaded once at startup, so you restart the server after adding new layers or emotion folders.

Copy-paste prompts

Prompt 1
I have Rusty-Tuber running and want to add custom emotion expressions for 'happy' and 'surprised'. What folder structure and filenames do my PNG files need?
Prompt 2
My Rusty-Tuber mouth keeps flickering between states while I speak. How do I adjust the attack and release values in the audio response panel to smooth it out?
Prompt 3
I want to add Rusty-Tuber to OBS and remove the green background. What are the steps to add it as a Video Capture Device source and apply a chroma key filter?
Prompt 4
Rusty-Tuber is not detecting my microphone on Linux. How do I list available audio devices and set the correct one in config.toml?
Prompt 5
I want to trigger Rusty-Tuber emotions from a Stream Deck using the REST API. What is the endpoint path and request format for triggering and clearing an emotion?

Frequently asked questions

What is rusty-tuber?

A Rust-based PNG avatar tool for streamers that reacts to your microphone and outputs a virtual webcam that OBS, Zoom, and Discord treat as a normal camera.

What language is rusty-tuber written in?

Mainly Rust. The stack also includes Rust, v4l2loopback, ALSA.

How hard is rusty-tuber to set up?

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

Who is rusty-tuber for?

Mainly general.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub bradmyrick on gitmyhub

Verify against the repo before relying on details.