Stella

AI VTuber • Real‑time • Cross‑platform

A production-ready AI VTuber that chats in real time, remembers, and speaks — built with Spring Boot, Spring AI, and the OpenAI API.

  • Spring AI + OpenAI — persona prompts, tool calling, safe inference
  • WebFlux pipeline — concurrent chat/voice & platform events with low latency
  • PostgreSQL memory + identity map — fast recall across Discord & Twitch
OpenAI‑powered
Discord + Twitch

Core Features

Intelligent Memory

Dual-layer memories with TTL, scoring, and cross-platform sync.

  • PostgreSQL + JPA
  • Auto classification
  • Unified identity map

Voice I/O

Azure TTS/STT with persona voices and real-time processing.

  • Persona presets
  • Reactive audio
  • Discord voice inbox

Multi‑Platform

Discord and Twitch side-by-side with unified linking.

  • JDA & Twitch4J
  • Command router
  • Rate‑limit aware

Conversation Engine

Spring AI + OpenAI with persona prompts for witty chat.

  • Context windows
  • Tool calling
  • Safety guardrails

Technologies

Readable, resume‑friendly badges

Backend

Java 21 Spring Boot WebFlux Spring Security JPA/Hibernate

AI

Spring AI OpenAI API Function/Tool calling

Data

PostgreSQL Caching Identity Map

Integrations

Discord (JDA) Twitch (Twitch4J) REST/HTTP

Voice

Azure TTS/STT

Ops

Docker AWS EC2 Actuator

System Architecture

Loosely coupled services • Spring AI + OpenAI • Minimal necessary edges

Ingress Adapters

Discord Bot (JDA) Twitch Bot (Twitch4J) Web Dashboard

Purpose for Stella: keep Discord/Twitch quirks at the edges; translate events to neutral requests and absorb rate‑limits/outages.

Gateway & Orchestrator

HTTP + SSE Auth (JWT/RBAC) Rate Limiter Telemetry/Audit

Purpose for Stella: a single place for auth/quotas/back‑pressure; normalize requests and keep ephemeral session context.

Core Services (decoupled)

Conversation Memory Persona Commands Voice I/O

Purpose for Stella: let each part evolve independently; no service depends on every other.

AI Integration

Spring AI OpenAI API Function/Tool calling Guardrails

Purpose for Stella: Spring AI abstracts providers; OpenAI avoids VRAM needs; tool calling lets Stella act safely.

Data & Caching

PostgreSQL JPA/Hibernate Hot Cache Identity Map

Purpose for Stella: lifecycle memories (TTL/scoring/merge) and cross‑platform identity linking with low latency.

External Providers

OpenAI Azure Speech Discord API Twitch API

Purpose for Stella: managed AI/speech keeps infra lean now; same interfaces allow swapping providers later.

Optional: Async Events

Webhooks/Callbacks In‑memory Bus Retry/Backoff

Purpose for Stella: decouple slow/retried work (rate limits, link expansion) so chat stays responsive.

Demo

A look at Stella’s live dashboard

Stella Dashboard Preview