How soundpulse/hermes-live2d works
ATRI Live2D is a Tauri desktop pet that renders a Live2D character and accepts local HTTP commands. Its principal workflow is an agent’s generated recording sent by the bundled Hermes skill to the API, which stores inline audio if needed and emits events for the frontend to play with lip sync, expression, and speech bubble. Other documented capabilities include direct expression/motion/bubble controls, model loading, mouse tracking, and tray/window behavior. The README documents these subsystems; sampled source excerpts do not show every handler or frontend event listener.
Main entry points: main.ts Live2D frontend · api.rs Local HTTP API · lib.rs Tauri runtime · hermes-live2d-voice Voice skill
Components 14
Agent integration
- Voice skill
skills/hermes-live2d-voice - Tailscale access
HTTP API
- Local HTTP API
src-tauri/src/api.rs - Uploaded audio
Desktop pet
- Live2D frontend
src/main.ts - Live2D model
- Audio playback
src/main.ts - Speech bubbles
src/main.ts - Expressions and motions
src/main.ts - Mouse tracking
src/main.ts
Desktop platform
- App configuration
src-tauri/src/config.rs - Tauri runtime
src-tauri/src/lib.rs - Window and tray
src-tauri/src/lib.rs
Other components
- Hermes agent
Connections 17
- Hermes agent → Voice skill: uses
- Voice skill → Local HTTP API: posts speech
- Tailscale access → Local HTTP API: forwards requests
- Tauri runtime → App configuration: loads and saves
- Tauri runtime → Local HTTP API: starts server
- Local HTTP API → Uploaded audio: writes uploads
- Local HTTP API → Live2D frontend: emits commands
- Live2D frontend → Local HTTP API: fetches audio
- Live2D frontend → Local HTTP API: fetches model
- Live2D frontend → Live2D model: loads model
- Live2D frontend → Audio playback: plays audio
- Live2D frontend → Speech bubbles: shows text
- Live2D frontend → Expressions and motions: sets expression or motion
- Live2D frontend → Mouse tracking: updates focus
- Live2D frontend → Tauri runtime: invokes window commands
- Tauri runtime → Window and tray: manages tray and window
- Window and tray → App configuration: persists geometry