This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

character / docs / architecture.md
1.8 kB

Headless VTuber architecture notes#

Use a split architecture:

  1. Chat/runtime process on the headless machine
  2. Avatar renderer as either:
    • a headless browser scene with sprite layers and viseme/expression animation, or
    • a Linux-native VTuber renderer if one exposes remote control hooks
  3. ffmpeg composition and push to stream.place via WHIP or RTMP

Why not start with a full Live2D rig?#

Live2D-on-Linux headless is possible but likely slows iteration. First prove:

  • incoming chat
  • generated reply
  • synthesized audio
  • deterministic motion/expression events
  • continuous video stream

Then swap the renderer.

Phase 1#

  • simulate stream.place chat locally
  • generate reply text
  • synthesize or stub audio
  • emit avatar actions like talk:start, emotion:happy, head:nod
  • render a simple animated scene to a test stream or file

Phase 2#

  • connect real stream.place chat feed
  • post replies back to chat
  • map reply prosody/emotion to avatar events

Phase 3#

  • replace simple avatar scene with a real VTuber rig
  • add interrupt handling, queueing, moderation, and pacing

Candidate render paths#

Path A: Browser/canvas renderer#

Pros:

  • easiest to automate from CLI
  • easy websocket control
  • easy capture with Chromium or ffmpeg from a virtual display
  • good enough for a first expressive avatar

Cons:

  • not a full Live2D rig

Path B: OpenVT or custom Godot scene#

Pros:

  • closer to real VTuber motion
  • Linux-native

Cons:

  • more integration work
  • remote-control API may need custom glue

Path C: OBS scene graph on another machine#

Pros:

  • simplest if final stream production happens elsewhere

Cons:

  • not fully headless/self-contained