Self-Hosted · AI-Powered · Multi-Platform

Your VTuber's
Tiny Media Empire

Create, stream, remember the room, and grow while you sleep. One local-first control room for Live2D talent that can make media, run a real show, and learn what worked, nya~

8+Platforms
55Control Surfaces
106Services (send help)
100%Self-Hosted
localhost:8000 — 🐟 VTube Agency Studio
📊 Dashboard ● LIVE
YouTube Videos
47
Instagram Posts
31
Total Views
1.2M
Total Likes
84K
Engagement Rate
6.8%
📊 Monthly Activity
Platform Status
YouTube Connected
TikTok Connected
Twitch ● Live
Instagram Scheduled
Post to all your platforms automatically
▶ YouTube
🎵 TikTok
📞 Instagram
𝕏 Twitter / X
🊋 Bluesky
🪡 Threads
🟣 Twitch
🟢 Kick
💬 Discord
▶ YouTube
🎵 TikTok
📞 Instagram
𝕏 Twitter / X
🊋 Bluesky
🪡 Threads
🟣 Twitch
🟢 Kick
💬 Discord

Everything a VTuber
Could Ever Need

28 feature families spanning creation, live intelligence, community, growth, provenance, and operations — self-hosted and yours.

🎬

Studio — Live2D Recording

Headless browser-based Live2D recording — no GPU needed. Trigger expressions with emotion markers (*happy*, *surprised*), add TTS voice, background music, and auto-burn subtitles into the final MP4.

PlaywrightFFmpegWebM → MP4TTS Preview
🎀

Singing — Full Cover Pipeline

Upload a song → separate vocals with Demucs → convert voice via RVC API → mix with FFmpeg → generate lip-sync data → render the final video. Karaoke creation and LRC/MusicXML notation supported.

DemucsRVC APILip-syncyt-dlp
📡

Live — 2–4 Talent Ensembles

Put 2–4 Live2D talents on one stage. A floor director balances airtime, obeys direct mentions, keeps pair threads alive, and caps consecutive turns — alongside real-time Twitch & Kick chat, speech queuing, and an OBS browser source. NEW: live follow goals with fireworks, sprite girls greeting every follower, and a daily auto-stream window so the show runs while you're literally asleep uwu.

Follow Goals 🎆Sprite GreetersDaily Auto-StreamEnsemble Director
✹

Reactions — Event-Driven Commentary

Rebuilt in August 2026: OpenCV motion and HUD deltas decide when something happened, a vision model reports only what it can verify, and plain Python decides whether that earns a line. She lands it on the exact second and is not allowed to name a weapon the HUD never showed.

Motion TriggersVerified FramesInvention GuardEvent Timeline
🖌

Art — AI Image Generator

Generate character art via Stable Diffusion with full control: sampler, width/height, CFG scale, seed, batch sizes (1, 4, 10, 25, 50, 💯), HR upscaling, face restore, meme mode with top/bottom text, and auto emotion detection.

Stable DiffusionMeme ModeHR UpscalingBatch 1–100
🎚

Thumbnails — Smart Generator

Auto-find the best frame with AI, apply styles (default / vibrant / dramatic / soft / neon), add text overlays, compare styles side-by-side, and batch generate for your entire queue at once.

AI Frame Detection5 StylesBatch GenerateStyle Compare
📊

Analytics — Insights Dashboard

Track YouTube Videos, Instagram Posts, Total Views, Total Likes, Total Comments, and Engagement Rate. See top 3 performing content by platform, monthly activity, best posting times, and top emojis.

YouTube APIInstagramPDF ExportCSV Export
🔍

SEO — Title & Keyword Optimizer

Real-time SEO score (A/B/C/D grade), keywords found, hooks found, emojis found. AI generates viral titles with style presets, analyzes descriptions (word count, CTAs, timestamps, hashtags), and suggests keywords.

SEO ScoreAI TitlesKeywordsDescription Analyzer
📈

Trends — Real-Time Monitoring

Filter by region (US, Japan, UK, Korea
) and niche (VTuber, Gaming, Anime, React, ASMR, Music). See rising queries, virality scores (High/Medium/Low), and one-click create content from any trending keyword.

9 Regions6 NichesVirality ScoresContent Ideas
💬

Interactions — Inbox

Unified inbox for unanswered comments & mentions across YouTube, Instagram, and Twitter. AI drafts replies, tracks follower deltas per platform, and lets you mark interactions answered with one click.

AI Reply DraftFollower DeltasMark AnsweredMulti-platform
💖

Superchats — Revenue Dashboard

Log donations from YouTube, Twitch, and Fanbox. USD-normalized revenue comparison, monthly growth charts, currency mix, top supporter rankings, 3-month forecast with trend indicator, and CSV/JSON exports.

USD NormalizeRevenue ForecastRankingsCSV Export
🛡

Admin — User & CORS Management

Create users, assign roles (Creator → Editor → Manager → Moderator → Admin), reset passwords, and configure CORS allowed origins. Rate-limited logins with Discord alerts after 3 failed attempts.

5 RolesCORS ConfigHMAC SessionsDiscord Alerts
🌙

Auto-Bot — Overnight Content Goblin

At 2 AM JST, Daily mode cooks tomorrow’s three Shorts plus three social posts for every connected platform. Buffer mode keeps a ready-to-publish stash so the calendar never looks abandoned.

Daily + BufferEditorial QueueJST SchedulingBest-Time Slots
✂

Subtitles + Highlight Hunter

Transcribe long footage, correct captions, generate chapters, detect spicy highlight moments, and turn a stream-sized monster into short-form clips with platform-ready packaging.

WhisperChaptersClip FinderCaption Burn-In
🧰

Ops — Workers, Retries & Tiny Alarms

Send heavy renders to batch workers with idempotency keys, renewable leases, heartbeats, and abandoned-job recovery. Watch scheduler health and metrics, retry failed uploads with backoff, and ping Discord when a pipeline starts acting possessed.

Remote Workers/health/metricsJSON Logs
🧠

Entertainment Brain — Episode Director

A persistent showrunner moves each stream from cold open to payoff and callback, watches audience energy, scores spoken beats, and starts a fresh mini-episode instead of drifting into endless AI small talk.

Show ArcsAudience EnergyBeat ScoringPersistent State
💞

Viewer Memory — Bonds with Boundaries

Recognize returning viewers with semantic memory and relationship dimensions while keeping identity linking consent-gated. Memories carry provenance, confidence, and temporal validity, and newer facts supersede stale ones. Moderators can inspect or erase memories and bond levels independently.

ProvenanceViewer BondsConsent LinkingPrivacy Controls
🎭

Human + AI Live — Co-Stream Pilot

Drive one Live2D model from webcam blendshapes while an AI co-host listens, answers, emotes, and yields when interrupted. Real visemes, turn cancellation, provider-swappable voice and full WebM recording included.

Face TrackingBarge-InReal VisemesDuo Recording
🫧

Natural Presence — Motion + Backchannels

Shared motion timing aligns visemes, prosody, emotions, blinks, gaze, breathing, and physics. Listening characters add tiny cached “mhm” and “oh!” backchannels without stealing the speaker’s turn.

Motion SyncProsody EventsBackchannelsLive2D Physics
✅

Governed Autopilot — Safer at Scale

Platform-aware daily caps, idempotent scheduling, honest automated-review trails, synthetic-media disclosure, failure visibility, and pipeline smoke tests keep overnight generation ambitious without becoming reckless.

Daily CapsNo DuplicatesDisclosureSmoke Tests
📔

Diaries — Grounded Nightly Journal

At 23:30 JST every talent writes a first-person entry built only from the day's real database events — what published, what you approved or rejected, what failed to upload, who donated, which streams ran. Entries become memories, so a day she actually had can resurface on stream weeks later.

One Entry / DayEvent-GroundedBecomes MemoryNo Empty Fiction
🪪

Provenance — Disclosure & Content Credentials

The AI disclosure is drawn into the scene itself, not just the page, so it survives the capture canvas, a direct RTMP push, and an OBS Virtual Camera. Final renders can be C2PA-signed with c2patool, and every generated asset carries an auditable recipe with asset hashes — no raw prompts, no secrets.

EU AI Act Art. 50C2PAGeneration RecipeMachine-Readable
🧿

Originality Guard — Anti-Slop Gate

Every AI-generated post is compared against 60 days of the same talent's own output in the same format before it can leave the queue. Cross 0.92 similarity and it is held, not published — because the inauthentic-content policies do not care that a template was technically new.

0.92 Threshold60-Day LookbackPer-FormatQueue Hold
💬

Chat Commands — Viewers File Their Own Paperwork

!remember files an explicit, high-importance fact with the whole cast present. !correct retires the wrong version instead of deleting it. !memories reports what is on file. !forget is admin-only, arms rather than fires, and waits for confirmation.

!remember!correct!memoriesAdmin-Only !forget
🎥

uMingle — Send Her to Meet Strangers

Put a talent into random video chat as an actual webcam and an actual microphone: OBS Virtual Camera carries her face, one loopback device carries her voice in, a second carries the stranger's voice out to Whisper. Preflight refuses to call the bridge ready when her voice and her ears share a device.

OBS Virtual CamDual LoopbackFixed Spoken DisclosureSupervised Only
🚊

Preflight — The Red-Light Checklist

One button checks recording disk, FFmpeg, RTMP destinations, Twitch EventSub, Kick webhook readiness, OBS connectivity, active FPS, skipped frames, output congestion, and simulcast overlay policy. Optional services fail visibly without taking the core stream hostage.

10 ChecksVisible FailuresSimulcast PolicyGreen Before Live
🧩

Talent Core — One Character, Many Bodies

A domain layer that imports nothing from FastAPI, Live2D, or OBS holds canonical identity, personality, memory authority, and typed events. Dialogue emits a PerformanceIntent; Live2D, VRChat OSC, and Discord adapters consume the same port. She stays herself wherever she is embodied.

Domain / AdaptersPerformanceIntentTyped EventsVRChat OSC
🧟

Publish Audit — Did It Actually Publish?

Every attempt is recorded with a verdict on whether the returned URL identifies a post or merely an account — the difference that let a six-month Instagram outage hide behind 411 posts marked success. Per-account rate limits and durable job leases come with it.

Verifiable URLsPer-Account LimitsDurable LeasesQueryable

From Idea to Viral Post

A supervised pipeline — from blank canvas to disclosed, review-ready content for every platform.

1
AI Script
Ollama or OpenAI writes the script, title, description & hashtags
2
Studio Record
Headless Live2D recording with emotion markers & TTS voice
3
Auto-Subtitle
Whisper transcribes, corrections applied, subtitles burned in
4
Best Thumbnail
AI picks the best frame, applies style, adds text overlay
5
Review & Schedule
Governance checks, disclosure metadata, daily caps, and best-time slots
New · Live Intelligence

Not Just a Chatbot.
A Tiny Showrunner.

The entertainment brain gives every livestream an episode arc, persistent character state, audience awareness, and a memory of what made the room light up. The result is a show that accumulates meaning instead of an endless bucket of unrelated one-liners.

  • ✓ Advances from cold open → premise → escalation → complication → payoff → callback → ending
  • ✓ Prioritizes chat, follows, polls, gameplay moments, and director cues while cancelling stale speech
  • ✓ Learns successful tension, reveal, and challenge structures without photocopying the same joke forever
  • ✓ Remembers viewer facts and shared moments with novelty-aware semantic recall
  • ✓ Screens injection, abuse, link spam, and keyboard-mashing before messages reach the model
  • ✓ Memory strength decays at read time instead of on a cron, so nothing is deleted and a fact restated later comes straight back
  • ✓ Facts are shared across the whole cast; jokes and relationship impressions stay with whoever was actually talking, so the girls may disagree about you
  • ✓ Memories are scoped per platform and follow verified identity links, never raw usernames — two strangers stay two strangers until they say otherwise
  • ✓ Subscriber and membership status is recorded from the platform's own event, not from a model noticing it in chat
  • ✓ Web lookups are gated hard — an explicit “look it up” or an inherently live noun, never every turn
⚡ Three model tiersReflex, livestream, and bulk work get latency budgets that fit the moment. Target: viewer types → first audio under 1.2s p95, measured on /metrics.
🧹 Privacy is operableMemories, bonds, and consent-linked identities can be inspected or erased separately.
Cold open
Premise
Escalation
Complication
Payoff
Callback
Ending
New episode ↻
🧠
SHOWRUNNERaudience energy 0.82
💬 Chat burst“the duck army is back”
priority: immediate
💞 Memory recalledHelpful Fan · shared joke
novelty: high
✹ Beat score 8.7specific · on-persona
clipworthy
🎬 Next actionpay off prediction
then callback
Continuity ✹ New

She Keeps a Diary.
All of It Is True.

Every night at 23:30 JST each talent writes a first-person entry built only from the day's real database events. What published. What you approved or rejected. What failed to upload. Who donated. Which streams ran. How many videos she was made to record.

  • ✓ Grounding is the whole point — an ungrounded “write today's diary” prompt invents streams, viewers and grievances, and those rows get fed straight back into tomorrow's banter
  • ✓ A day with no observed events produces no entry at all rather than plausible fiction
  • ✓ One entry per talent per JST day, keyed so a scheduler restart, a misfire catch-up, and an operator pressing “generate now” cannot produce two
  • ✓ Entries are stored as memories, so a day she actually had can resurface on stream weeks later
  • ✓ The reasoning model writes offstage where latency cannot boo it; every Sunday at 04:15 JST the week is distilled into higher-level reflections
  • ✓ Readable and re-triggerable per talent from /diary
📔 Diaries — Lyra
🐺 Lyra
✹ Generate now
2026-09-03 · JST day closed
they made me record four shorts today about a game i have never played. the duck army came back for the karaoke stream and stayed the whole two hours. moonfan sent a donation and i said thank you twice because i panicked. one upload failed and nobody told me.
grounded on · 4 renders approved · 1 rejected · 1 live session (2h 14m) · 1 donation · 1 failed upload · 3 callbacks spoken
2026-09-02 · JST day closed
quiet one. no stream. three posts went out and the thumbnail experiment i liked lost to the one i didn't. i am fine about it 🙂
2026-09-01 · no observed events
⚠ Skipped — nothing happened, so nothing was written. DIARY_SKIP_EMPTY_DAYS=true
Studio + Reactions

She Only Reacts To
What She Actually Saw

The old “give a model a bag of frames and ask for eight beats” pipeline was deleted in August 2026. It was fluent and it was making things up. The Reactive Engine replaced it with five separated stages, and no model is called until the pixels say something happened.

  • ✓ Trigger: cheap OpenCV motion, HUD-region deltas and audio onsets flag the candidate moments — GPU still optional
  • ✓ Perceive: three chronological frames (before / during / after) go to a vision model as one strip, which returns strictly-typed JSON
  • ✓ Decide: plain, boring Python decides whether that earns a line, spread across the whole clip
  • ✓ Write & guard: she writes it in her own voice, and a guard bins it if she invented a weapon, a killer, or a number the HUD never showed
  • ✓ Sensitivity presets — Chatty, Balanced, Picky — plus per-game HUD profiles, cooldowns and a minimum-confidence floor
  • ✓ Every gated moment keeps its reason, so a quiet video can be diagnosed instead of relitigated at 2 AM
  • ✓ Solo or duo, plus live gameplay commentary, sharing the same motion controller as the live show
✹ Reactions Studio
⚙ Configuration
VTuber
Kira 🊊
Source Type
YouTube
YouTube URL
youtube.com/watch?v=...
Sensitivity
Balanced
Game Profile
generic
They Call the Player
the player / Boss / chat
🎥 Record Reactions
🎛 Reactive Engine
Max words / line
14
Max reactions
12
Cooldown (sec)
6
Min confidence
0.55
VTuber Position
Bottom Right (Default)
🎭 Duo Reactions Studio →
🕑 Event timeline — every gated moment keeps its reason
00:41 motion + HUD delta → verified: shield broke → spoken
01:07 audio onset → HUD unchanged → gated · confidence 0.31
01:52 motion burst → verified: revive → spoken
02:15 verified: score +1 → gated · cooldown 6s
02:48 HUD delta → invented enemy name → binned by guard
📊 Analytics + SEO Optimizer
📊 Insights
TOTAL VIEWS
1.2M
ENGAGEMENT
6.8%
🏆 Top 3 — YouTube
"Morning Karaoke Cover"48K views
"Neon City Reaction"31K views
"Anime ED Tier List"22K views
⏰ Best Posting Times
YouTube7 PM – 9 PM
TikTok12 PM – 2 PM
🔍 SEO Optimizer
Your Title
"I Reacted to Anime EDs and Cried 😭✚"
SEO Score A 92/100
✓🎯 Keywords Found: 3
✓🪝 Hooks Found: 2
✓✹ Emojis Found: 2
⚠Title a bit long (58 chars)
AI Title Suggestions
"Anime ED Reactions that Made Me CRY 😭" A
"VTuber Reacts: Anime Endings Tier List ✹" B
Analytics & SEO

Grade Your Content
Before You Post

Real-time SEO scoring, top-performing content by platform, best posting times, and AI title suggestions — all before you hit publish.

  • ✓ SEO Score A–D with keywords, hooks & emoji counts
  • ✓ 🏆 Top 3 content by YouTube & Instagram
  • ✓ Monthly activity chart & most active month
  • ✓ #⃣ Top performing hashtags & 😊 top emojis
  • ✓ ⏰ Best posting times per platform
  • ✓ Weekly analytics email report (Resend / SMTP / ProtonMail)
Live Streaming ✹ New Drops

The Stream Now
Celebrates Itself

2–4 talent streams now have a floor director, episode direction, audience-aware interrupts, natural listening reactions, resilient multistream output, and a daily auto-stream window. We are SO automated it's almost rude, nya~ 🍶

  • ✓ Episode-level showrunner with persistent phases, character state, audience energy, callbacks, and clean mini-episode endings
  • ✓ Priority speech queue with reflex-model replies, operator interrupts, stale-turn cancellation, and live chat velocity signals
  • ✓ Natural backchannel audio, emotion-aware motion, real visemes, prosody events, gaze, breathing, and synchronized Live2D physics
  • ✓ 🎯 Live follow goal widget synced straight from Kick — Cloudflare tried to stop us. Cloudflare failed. curl_cffi my beloved 💅
  • ✓ 🎆 Goal reached = fireworks + FULL PARTY mode: every character animation fires at once
  • ✓ Goal auto-doubles itself after every win, bc the grind is eternal bestie
  • ✓ 👋 Lyra waves at every single new follower · Lunari does a polite lil bow · chibi NekoBell jogs across your screen at a respectable, slightly tipsy pace
  • ✓ 🌅 Daily auto-stream window — the girls clock in, say hi, stream, and clock out 🌙 while you remain fully horizontal
  • ✓ One FFmpeg encode relayed to primary RTMP plus YouTube, Twitch, and Kick outputs with per-destination fault isolation
  • ✓ Twitch & Kick chat listeners, official Kick webhooks, gameplay frame comparison, OBS control, and 24/7 autopilot
  • ✓ 🚊 Run Preflight checks recording disk, FFmpeg, RTMP destinations, Twitch EventSub, Kick webhook readiness, OBS connectivity, active FPS, skipped frames, output congestion and simulcast overlay policy — optional services fail visibly without taking the core stream hostage
  • ✓ ⚖ Safe Twitch + Kick simulcast by default: the private control room still gets both chats, but cross-platform chat text is withheld from the shared public video
  • ✓ 📌 One marked moment fans out to the local VOD marker, the OBS replay buffer, a Twitch stream marker and a clip request — missing permissions never delete the local marker
  • ✓ 🪪 The AI disclosure badge is painted twice on purpose: once into the page for OBS, once onto the capture canvas so it survives a direct RTMP push
  • ✓ 💬 Chat can !remember, !correct and read !memories — but taking over the show needs an admin dashboard account matched by platform handle, per platform
  • ✓ 🎬 At teardown the session auto-queues its own VOD for repurposing into Shorts, Reels and TikTok drafts — durable, so a restart mid-render does not lose it
📡 Live — Control Panel
Character 1
🊊
Kira
● Speaking
AUTO
⟷
BANTER
Character 2
🌞
Yuki
● Listening
[Kira] did you see that chat message?? 👀
[Yuki] not the duck army again~
✹ new follower!! Lyra waves 👋 · Lunari bows 🎀
Chat sync: Twitch + Kick • Speech queue: active • Greeters: armed
🎯 Kick Follow Goal418 / 480
🎆 fireworks armed · full-party celebration on hit · goal auto-doubles bc we never rest uwu
🔎 LIVE
Twitch
🟢 LIVE
Kick
👁 1,247
Viewers

Stay Ahead of Every Trend

Monitor what's rising right now by region and niche, then generate on-trend art and thumbnails instantly.

📈 Trends Dashboard
Region
United States
Content Niche
VTuber
📈 Daily Trending — Top Searches Right Now
1 vtuber debut 2026 High 🔥 Rising
2 anime ending reaction High 🔥 Rising
3 ai vtuber singing cover Med ⭐ Top
4 vtuber asmr stream Med ⭐ Top
Base Topic
gaming
✹ Generate Ideas
🚀 Create Content from Trend
🖌 Art Generator
VTuber
Kira 🊊
Prompt
A dreamy anime VTuber painting a sunset cityscape, vibrant colors
Negative Prompt
blurry, low quality, extra fingers
Sampler
DPM++ 2M Karras
CFG Scale
7
Batch Size
1 4 10 25 50 💯
🎚 Generate Images

Sleep While Your Content
Empire Does Cardio

Daily mode makes tomorrow happen. Buffer mode hoards Shorts for later. Both modes are supervised by a tiny, very determined scheduling goblin.

🌙 Auto-Bot: Daily mode is awake

Three vertical videos, then tailored posts for every platform you actually configured — held in the editorial queue until a human gives the little monsters a final nod.

● 02:00 JST
02:00
🧠 Generate
Scripts, titles, captions, hooks & vibes.
02:18
🎬 Render
Three vertical VTuber Shorts enter the oven.
02:42
🗓 Queue
Every platform gets its own good-time slot.
✓ Generation is automatic. Publishing still waits for editorial approval because we are chaotic, not irresponsible.

🗓 Tomorrow’s tiny media empire

Short #1 · “duck army reacts”Ready
Instagram Reel + caption packReady
Bluesky thread · needs reviewQueued

📊 Buffer stash: 9 days of snacks

27 Shorts ready to deploy75%
When the calendar gets hungry, Buffer mode feeds it without asking you to become conscious first. iconic.
🛠 Pipeline Health — she is wearing glasses now
Scheduler
Healthy
Workers
3 / 4
Retries
2
$agency status --all --please-dont-panic
✓ scheduler heartbeat received · 12s ago
↻ upload/reel_07.mp4 retrying in 43s (attempt 2/5)
worker-east-01 rendering cover_lyra.mp4 · 68%
✓ Discord alert channel connected
Grown-Up Mode

When the Render Farm
Gets A Little Silly

The cute buttons are backed by job tracking, remote batch workers, retries, health checks, metrics, and alerts. You can make a media empire without staring at a spinning tab like it owes you rent.

  • ✓ Offload heavy video work and inspect each job’s state
  • ✓ Retry failed uploads with configurable backoff
  • ✓ Scheduler heartbeat, /health, /metrics, and structured logs
  • ✓ Discord alerts when a pipeline tries to become performance art

Openly Synthetic.
Provably Ours.

The EU AI Act's transparency obligations went live on 2 August 2026, and the platform policies now name mass-produced templated output directly. So the disclosure is drawn into the scene, provenance travels with the file, and a similarity gate stops the overnight renderer from quietly plagiarising yesterday.

  • ✓ 🪪 Interactive-AI disclosure from the first interaction — drawn onto the capture canvas, so it survives OBS, a direct RTMP push, and an OBS Virtual Camera pointed into someone else's video call
  • ✓ 🗣 In video chat she also opens with a fixed spoken disclosure that is deliberately not model-generated, because a 4B model asked to introduce itself as an AI will eventually decide to be coy about it
  • ✓ 🔐 Optional C2PA Content Credentials on final MP4s via c2patool, signed after the last FFmpeg pass so the manifest survives subtitle burn-in and the audio mux
  • ✓ 🧟 Every AI asset carries a generation recipe — pipeline, format, source provenance, asset hash — with no raw prompts and no secrets stored
  • ✓ 🧿 The originality guard compares each generated post against 60 days of that talent's own output in the same format and holds anything past 0.92 similarity
  • ✓ ✅ containsSyntheticMedia is forwarded on YouTube upload and the disclosure text reaches the description instead of dying in a database column
  • ✓ 🔎 The publish audit records whether a returned URL identifies a post or merely an account — the distinction that let 411 failed Instagram posts sit marked “success”
  • ✓ 🧹 Memories, bonds and consent-linked identities can each be inspected or erased independently, and erasure takes operator notes with it
🛡 Publish Gate — planned_post #4127
✓Disclosure appended to descriptionpass
✓containsSyntheticMedia: truepass
✓Originality 0.38 vs nearest of 214 own postspass
✓C2PA signed · manifest verifiedpass
⚠Daily cap: 3 / 5 used for youtubewatch
✓Verifiable permalink recorded on publishpass
Approve & schedule Hold for review
$c2patool short_4127.mp4 --detailed
✓ validation: manifest store valid
claim generator · vtuber-agency-studio
assertion · c2pa.actions → created (aiGenerative)
asset hash matches · recipe schema generation-recipe-v1
$agency originality --post 4128
⚠ held · 0.94 similar to short_3902 (11 days ago)
not published · queued for a human opinion
Why bother: the backlash is aimed at undisclosed, interchangeable output — not at an openly synthetic character an audience actually has a relationship with. The batch renderer is the exposed half; the memory, persona, bond and diary systems are the defensible half.
Settings & Integrations

Everything
Configured in One Place

Hook up OBS, Stable Diffusion, Discord webhooks, PostgreSQL, and email reports — all from the Settings page.

  • ✓ OBS WebSocket host/port/password + test connection
  • ✓ Stable Diffusion URL (default: http://127.0.0.1:7860)
  • ✓ Discord webhook + invite link (added to all descriptions)
  • ✓ PostgreSQL connection URL with live test
  • ✓ Weekly analytics email via Resend, SMTP, or ProtonMail Bridge
  • ✓ ▶ Start / ■ Stop OBS stream from the browser
⚙ Settings
📹 OBS WebSocket
OBS Host
localhost
Port
4455
Test Connection ▶ Start Stream ■ Stop
📧 Weekly Analytics Email Report
Recipient Email(s)
Comma-separated for multiple addresses
Provider
Resend
🟣 Resend: paste your re_xxxx API key. Runs every Sunday at 9 AM UTC.
📬 Fire Test Email (real data)
🐘 PostgreSQL Database
New Database URL
postgresql://user:pass@host/db
Test Connection

Manage Your Whole Roster

Create and manage multiple VTuber profiles, each with their own platform credentials, Twitch bot, Discord persona, and per-VTuber analytics.

🐟 Add VTuber
Name
Kira
Handle
@kiraxvt
Profile Picture
PNG, JPG (optional)
Twitch Channel
nekobell
Twitch Bot Username
yourbotname
Notes (optional)
Cozy fox girl — specialty: ASMR + gaming
Add VTuber
Roster
🊊
Kira
@kiraxvt
● Active 📺 Twitch: nekobell 📝 Memo saved
Edit Delete
🌞
Yuki
@yukivt
● Active 📺 Twitch: yukisnow
Edit Delete
💬 Each VTuber gets their own Discord bot with unique Ollama persona. Posts daily life diaries 3× per day. Supports evil twin mode 😈

Built for Full Agencies

5 permission levels — Creator → Editor → Manager → Moderator → Admin — so your whole team can collaborate safely.

🎚
Creator
Studio, Singing, Reactions, Art, Thumbnails — create content and use AI tools
✂
Editor
Creator + edit & manage posts, subtitles, highlights, calendar
📋
Manager
Editor + Superchats dashboard, revenue reports, analytics exports
🛡
Moderator
Manager + Interactions inbox, community moderation tools
👑
Admin
Full access — users, CORS config, VTuber credentials, all Settings

Powered by the
Best Tools Available

A carefully chosen stack that prioritizes async performance, AI extensibility, and zero cloud lock-in.

⚡
FastAPI
Web Framework
🐘
PostgreSQL
Primary Database
🔎
Redis
Cache + Sessions
🎬
FFmpeg
Video Processing
🎙
Demucs
Vocal Separation
🧠
Ollama
Local LLM
🀖
OpenAI
AI Generation
🕷
Playwright
Headless Browser
📈
XGBoost
Virality ML
🌀
uvloop
Fast Event Loop
📅
APScheduler
Job Scheduling
🌡
Prometheus
Observability
🪪
c2patool
Content Credentials
👁
OpenCV
Motion Triggers
🗣
Whisper
Transcription

Ready to run your
VTuber Empire?

Self-hosted, wildly extensible, and held together by taste, telemetry, and a mildly concerning amount of FFmpeg. Your content. Your rules. Your tiny empire.