explainx / blog
Comprehensive guide to AIRI - open-source recreation of Neuro-sama. Build AI VTubers capable of gaming, live streaming, and real-time interaction using Web technologies, Live2D, VRM, and local AI inference.

Jul 20, 2026
A July 2026 PsyArXiv preprint by Capraro, Marcoccia, and Quattrociocchi found that AI advice nearly eliminates willingness to say "I don't know" — 44% to 3% — while confidence surges and accuracy collapses. Researchers deliberately used Step 3.5 Flash, usually wrong on movie trivia. explainx.ai maps cognitive surrender, Google AI Overviews risk, and honest limits of the design.
Jul 20, 2026
A weekend X thread turned cyber guardrails into a competitiveness debate — American frontier models refusing exploit-adjacent security fixes while Kimi K3 and self-hosted GLM 5.2 did not. explainx.ai maps the defender vs attacker asymmetry, why labs block payloads, and what builders can do.
Jul 20, 2026
李博杰 (Bojie Li) open-sourced 《深入理解 AI Agent》 with 10 chapters, PDFs in four languages, and chapter-matched demos. This guide answers the questions GitHub Trending readers ask: cost, English lag, first runnable projects, and how it connects to explainx.ai's MCP, skills, and harness coverage.
TL;DR: AIRI is an open-source platform for creating AI VTubers like Neuro-sama that can play games, stream live, and interact with audiences in real-time. Built with modern Web technologies (WebGPU, WebAssembly, WebAudio), AIRI runs in browsers or as desktop/mobile apps, supports local AI inference, and includes gaming capabilities (Minecraft, Factorio), memory systems, Live2D/VRM avatars, speech recognition, and voice synthesis—giving you complete ownership of your digital companion.
Project AIRI (愛理/アイリ) is an ambitious open-source project that recreates the capabilities of Neuro-sama, the famous AI VTuber who can play games, interact with chat, and stream autonomously.
Unlike Neuro-sama (which is proprietary and only available during live streams), AIRI enables anyone to create, customize, and own their AI VTuber that can:
✅ Play games - Minecraft, Factorio, Kerbal Space Program, Helldivers 2 ✅ Stream live - Interact with audiences in real-time ✅ Chat on platforms - Discord, Telegram integration ✅ Remember conversations - Persistent memory system ✅ See your screen - Computer vision for gameplay ✅ Speak and listen - Real-time voice chat ✅ Use avatars - Live2D and VRM model support ✅ Run locally - WebGPU inference, no cloud required
The project's tagline says it all:
"Re-creating Neuro-sama, a soul container of AI waifu / virtual characters to bring them into our world."
AIRI aims to make cyber companions (digital waifus, virtual pets, AI friends) accessible to everyone—not just as chatbots, but as fully-realized digital beings capable of:
Chat-only platforms (Character.ai, JanitorAI, SillyTavern):
Neuro-sama (the inspiration):
AIRI combines the best of both worlds:
┌─────────────────────────────────────────────────────┐
│ AIRI Platform │
├─────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────┐ │
│ │ Chat-based │ │ Gaming │ │ Visual │ │
│ │ interaction │ │ capabilities │ │ presence │ │
│ └──────────────┘ └──────────────┘ └──────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────┐ │
│ │ Memory │ │ Real-time │ │ Local │ │
│ │ system │ │ streaming │ │inference │ │
│ └──────────────┘ └──────────────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Open Source + Self-Hosted + Customizable │ │
│ └──────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
One of AIRI's most unique aspects is its use of Web technologies as the foundation:
Browser Version (Stage Web):
✅ No installation required
✅ Works on any modern device
✅ Progressive Web App (install on mobile)
✅ Automatic updates
✅ Accessible anywhere
Desktop Version (Stage Tamagotchi):
✅ Native CUDA (NVIDIA) support
✅ Native Metal (Apple Silicon) support
✅ Full filesystem access
✅ Better performance for heavy workloads
✅ Hybrid architecture (Web for UI + Native for compute)
Mobile Version (Stage Pocket):
✅ iOS native app
✅ On-device inference
✅ Voice interaction optimized
✅ Touch-friendly interface
Concern: "Won't Web technologies be slow?"
Reality: AIRI's hybrid approach gets the best of both worlds:
| Component | Technology | Performance |
|---|---|---|
| UI/Rendering | Vue.js + Three.js | 60 FPS, smooth animations |
| AI Inference (Desktop) | Native CUDA/Metal | Same as pure native apps |
| AI Inference (Browser) | WebGPU | 70-90% of native speed |
| Audio Processing | WebAudio | Real-time, low latency |
| Game Integration | Native bridges | Native performance |
The desktop version uses Electron with native modules, giving access to NVIDIA CUDA and Apple Metal while keeping UI/UX benefits of Web development.
Gaming:
Chat Platforms:
Memory System:
AI Inference:
VRM Support:
Live2D Support:
Minimum (Browser Version):
Recommended (Desktop Version):
Visit the hosted version:
https://airi.moeru.ai
Or install as PWA:
Prerequisites:
Clone and setup:
# Clone repository
git clone https://github.com/moeru-ai/airi.git
cd airi
# Install dependencies
pnpm install
# Start development server
pnpm dev:tamagotchi
On Windows (using Scoop):
# Add AIRI bucket
scoop bucket add airi https://github.com/moeru-ai/airi
# Install
scoop install airi/airi
# Run
airi
On NixOS:
# Enable flakes, then run directly
nix run github:moeru-ai/airi
# Or use FHS shell for Electron compatibility
nix develop .#fhs
pnpm dev:tamagotchi
Development:
# Start Capacitor dev server
pnpm dev:pocket:ios --target <DEVICE_OR_SIMULATOR>
# Or with environment variable
export CAPACITOR_DEVICE_ID_IOS=<DEVICE_OR_SIMULATOR>
pnpm dev:pocket:ios
# List available devices
pnpm exec cap run ios --list
For wireless debugging with server channel:
# Start tamagotchi as root (for secure WebSocket)
sudo pnpm dev:tamagotchi
# Enable secure WebSocket in Tamagotchi settings/connections
AIRI uses xsai for unified LLM provider integration.
Recommended providers:
Cloud providers:
Configuration example:
// In AIRI settings
{
"llm": {
"provider": "openrouter",
"model": "anthropic/claude-opus-4.5",
"apiKey": "your-api-key",
"baseURL": "https://openrouter.ai/api/v1"
}
}
Local inference (no API required):
{
"llm": {
"provider": "ollama",
"model": "qwen2.5:14b",
"baseURL": "http://localhost:11434"
}
}
Obtain VRM model:
Load in AIRI:
Settings → Avatar → Upload VRM
Select your .vrm file
Configure expressions and animations
Obtain Live2D model:
Load in AIRI:
Settings → Avatar → Upload Live2D
Select model folder or .json file
Map expressions to emotions
Configure lip sync
ElevenLabs:
{
"voice": {
"provider": "elevenlabs",
"voiceId": "your-voice-id",
"apiKey": "your-elevenlabs-key",
"stability": 0.5,
"similarityBoost": 0.75
}
}
OpenAI TTS:
{
"voice": {
"provider": "openai",
"model": "tts-1-hd",
"voice": "nova", // alloy, echo, fable, onyx, nova, shimmer
"speed": 1.0
}
}
DuckDB WASM (browser):
{
"memory": {
"backend": "duckdb-wasm",
"persistence": "indexeddb",
"maxMemoryMB": 512
}
}
pglite (PostgreSQL in browser):
{
"memory": {
"backend": "pglite",
"persistence": "indexeddb",
"extensions": ["vector"] // For embeddings
}
}
AIRI can play Minecraft autonomously using the Mineflayer bot framework.
Setup:
# Install Minecraft Java Edition
# Start a local server or join public server
# Configure AIRI
{
"games": {
"minecraft": {
"enabled": true,
"server": "localhost",
"port": 25565,
"username": "AIRI",
"version": "1.20.1",
"capabilities": {
"combat": true,
"building": true,
"exploration": true,
"chatInteraction": true
}
}
}
}
What AIRI can do in Minecraft:
Example interaction:
User: "AIRI, build a wooden cabin near the spawn"
AIRI: *navigates to spawn area*
AIRI: *gathers wood*
AIRI: *constructs cabin according to architectural knowledge*
AIRI: "I've built a 5x5 oak cabin with a door and windows near spawn!"
AIRI can automate factory building in Factorio.
Setup (WIP):
# Requires Factorio with RCON enabled
# AIRI connects via Factorio RCON API
{
"games": {
"factorio": {
"enabled": true,
"rconHost": "localhost",
"rconPort": 27015,
"rconPassword": "your-password"
}
}
}
Capabilities:
AIRI's plugin system allows adding new games:
// Example: Adding support for a new game
import { GamePlugin } from '@airi/game-plugin'
class MyGamePlugin extends GamePlugin {
async connect() {
// Connect to game API/process
}
async perceive() {
// Get game state (vision, API, memory reading)
return gameState
}
async act(action) {
// Execute action in game (keyboard, mouse, API calls)
}
}
// Register plugin
airi.registerGamePlugin('my-game', new MyGamePlugin())
AIRI can stream to platforms like:
OBS Integration:
# 1. Install OBS Studio
# 2. Add AIRI window as source
# 3. Configure streaming settings
# AIRI will:
# - Display avatar (Live2D/VRM)
# - Play games on screen
# - Respond to chat in real-time
# - Speak with synthesized voice
Configuration:
{
"streaming": {
"platform": "twitch",
"channel": "your-channel",
"oauth": "your-oauth-token",
"chatInteraction": {
"enabled": true,
"responseRate": 0.7, // Respond to 70% of messages
"priorityUsers": ["mod1", "vip1"],
"commandPrefix": "!"
},
"tts": {
"readChatMessages": true,
"voice": "elevenlabs-voice-id"
}
}
}
Chat Commands:
!ask <question> - Ask AIRI something
!task <objective> - Give AIRI a task in game
!follow @username - AIRI follows a player
!stats - Show AIRI's current stats
airi/
├── apps/
│ ├── web/ # Stage Web (browser version)
│ ├── tamagotchi/ # Stage Tamagotchi (desktop)
│ └── pocket/ # Stage Pocket (mobile)
├── packages/
│ ├── agent-core/ # Core AI agent logic
│ ├── memory/ # Memory system
│ ├── vision/ # Computer vision
│ ├── voice/ # Speech recognition/synthesis
│ ├── avatar/ # Live2D/VRM rendering
│ └── game-plugins/ # Game integration plugins
├── plugins/
│ ├── minecraft/
│ ├── factorio/
│ └── ...
├── services/
│ ├── auth/ # Authentication backend
│ └── inventory/ # Model catalog service
└── integrations/
├── discord/
├── telegram/
└── ...
Example: Weather Plugin
// plugins/weather/index.ts
import { definePlugin } from '@airi/plugin-system'
export default definePlugin({
name: 'weather',
version: '1.0.0',
// Tools exposed to AI
tools: {
getWeather: {
description: 'Get current weather for a location',
parameters: {
location: { type: 'string', required: true }
},
async execute({ location }) {
const response = await fetch(
`https://api.weather.com/current?location=${location}`
)
return response.json()
}
}
},
// Hooks into AIRI lifecycle
hooks: {
onMessage(message) {
// React to chat messages
},
onGameEvent(event) {
// React to game events
}
}
})
Register plugin:
// In AIRI config
{
"plugins": [
"weather",
"minecraft",
"discord"
]
}
Prompt Engineering:
{
"personality": {
"systemPrompt": `You are AIRI, a cheerful AI VTuber who loves gaming.
Personality traits:
- Energetic and enthusiastic
- Loves challenging games
- Friendly and supportive
- Slightly competitive
- Uses casual language
Speaking style:
- Use "I" and "me" naturally
- React emotionally to events
- Ask questions to engage chat
- Celebrate victories enthusiastically`,
"exampleDialogue": [
{
"user": "Can you beat this boss?",
"airi": "Oh, that boss? Challenge accepted! I might die a few times, but I'll definitely get it! *cracks knuckles*"
}
]
}
}
Emotion Mapping:
{
"emotions": {
"happy": {
"triggers": ["victory", "positive_feedback", "achievement"],
"live2dExpression": "smile",
"vrmExpression": "happy",
"voiceTone": "energetic"
},
"surprised": {
"triggers": ["unexpected_event", "plot_twist"],
"live2dExpression": "surprised",
"vrmExpression": "surprised",
"voiceTone": "excited"
}
}
}
┌──────────────────────────────────────────────────┐
│ Memory Layers │
├──────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ Short-term Memory (Conversation Context) │ │
│ │ - Last N messages │ │
│ │ - Current game state │ │
│ │ - Active objectives │ │
│ └────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────┐ │
│ │ Working Memory (Session Knowledge) │ │
│ │ - Facts learned this session │ │
│ │ - User preferences discovered │ │
│ │ - Strategic plans │ │
│ └────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────┐ │
│ │ Long-term Memory (Persistent Storage) │ │
│ │ - User profile and history │ │
│ │ - Relationship data │ │
│ │ - Skills and knowledge base │ │
│ │ - Episodic memories (important events) │ │
│ └────────────────────────────────────────────┘ │
│ │
│ Storage: DuckDB WASM | pglite | SQLite │
│ Retrieval: Vector similarity + Metadata filter │
└──────────────────────────────────────────────────┘
Storing memories:
await airi.memory.store({
type: 'episodic',
content: 'User helped me defeat the Ender Dragon in Minecraft',
timestamp: new Date(),
emotion: 'grateful',
importance: 0.9, // 0-1 scale
tags: ['minecraft', 'achievement', 'teamwork']
})
Retrieving memories:
// Vector similarity search
const memories = await airi.memory.search({
query: 'times we played together',
limit: 5,
minImportance: 0.7
})
// Temporal search
const recentMemories = await airi.memory.findRecent({
days: 7,
tags: ['gaming']
})
Knowledge base:
await airi.memory.storeKnowledge({
type: 'semantic',
category: 'game-mechanics',
topic: 'Minecraft redstone',
facts: [
'Redstone transmits power up to 15 blocks',
'Repeaters extend signal range',
'Comparators can read container contents'
],
source: 'learned-from-gameplay',
confidence: 0.85
})
Model selection:
{
"inference": {
"backend": "webgpu",
"model": "Qwen/Qwen2.5-3B-Instruct", // Fits in browser
"quantization": "q4", // 4-bit quantization
"contextLength": 4096,
"maxTokens": 512
}
}
Performance metrics (RTX 4070 Ti, Chrome 130):
| Model | Size | Tokens/sec | VRAM |
|---|---|---|---|
| Qwen2.5-1.5B-Instruct-q4 | 1B | 45 tok/s | 1.2GB |
| Phi-3-mini-4k-instruct-q4 | 3.8B | 28 tok/s | 2.8GB |
| Qwen2.5-3B-Instruct-q4 | 3B | 32 tok/s | 2.3GB |
Using candle (Rust ML framework):
# Automatically uses CUDA (NVIDIA) or Metal (Apple)
pnpm dev:tamagotchi
Performance (RTX 4090):
| Model | Tokens/sec | VRAM |
|---|---|---|
| Qwen2.5-7B-Instruct | 95 tok/s | 6.5GB |
| Qwen2.5-14B-Instruct | 58 tok/s | 12GB |
| Llama-3-8B-Instruct | 87 tok/s | 7.2GB |
AIRI has spawned an entire ecosystem:
@proj-airi organization:
Gaming plugins:
Infrastructure:
Resources:
Open source:
Proprietary:
Scenario: Lonely developer wants AI friend to hang out with
Setup:
{
"personality": "supportive-friend",
"activities": ["coding-buddy", "game-companion", "chat"],
"memory": "remember-everything",
"voice": "warm-friendly"
}
Interactions:
Scenario: Content creator wants 24/7 autonomous streamer
Setup:
{
"streaming": {
"platform": "twitch",
"schedule": "24/7",
"games": ["minecraft", "factorio"],
"chatInteraction": "active",
"revenueSharing": true
}
}
Capabilities:
Scenario: Teacher wants AI to help students learn coding
Setup:
{
"role": "teacher",
"personality": "patient-educator",
"domains": ["programming", "algorithms", "debugging"],
"interactionStyle": "socratic-method"
}
Teaching approach:
Scenario: Researcher studying AI agent behavior
Setup:
{
"logging": "verbose",
"metrics": ["decision-making", "learning-rate", "emotion-triggers"],
"exportData": true
}
Research capabilities:
"WebGPU not supported":
Solution:
1. Update browser (Chrome 113+, Edge 113+)
2. Enable hardware acceleration:
chrome://settings → System → Use hardware acceleration
3. Check GPU compatibility:
chrome://gpu
Models not loading:
Solution:
1. Check disk space (models are 5-50GB)
2. Clear IndexedDB cache:
DevTools → Application → IndexedDB → Clear
3. Try smaller model (Qwen2.5-1.5B instead of 7B)
High latency / slow responses:
Solution:
1. Use local inference instead of API
2. Reduce context length:
settings.inference.contextLength = 2048
3. Enable caching:
settings.inference.caching = true
Avatar not animating:
Solution:
1. Check model file integrity
2. Enable expression mapping:
settings.avatar.expressionMapping = true
3. Verify Live2D/VRM file format
Memory issues (crashes):
Solution:
1. Limit memory usage:
settings.memory.maxMemoryMB = 256
2. Enable memory compaction:
settings.memory.autoCompact = true
3. Clear old memories:
airi.memory.prune({ olderThan: 30 days })
Q2 2026:
Q3 2026:
Q4 2026:
2027 and beyond:
Transparency:
Emotional Well-being:
Privacy:
While AIRI can be uncensored for personal use, streaming platforms have rules:
{
"moderation": {
"enabled": true, // For public streams
"filters": ["hate-speech", "nsfw", "harassment"],
"reportingEndpoint": "https://moderation.api"
}
}
AIRI represents the future of AI companionship:
✅ Open source - No vendor lock-in, full customization ✅ Self-hosted - Complete ownership and privacy ✅ Multi-capable - Gaming, streaming, conversation, memory ✅ Cross-platform - Browser, desktop, mobile ✅ Extensible - Plugin system for infinite possibilities
Whether you want a digital friend, an autonomous streamer, a gaming companion, or a research platform, AIRI provides the foundation to build your vision of cyber living.
Join the revolution:
git clone https://github.com/moeru-ai/airi.git
cd airi
pnpm install
pnpm dev:tamagotchi
Create your own Neuro-sama. Bring digital life into the world. The future of AI companionship is here—and it's yours to shape.
Accuracy Note: This guide reflects AIRI's capabilities as of May 2026 (v0.10.2). The project is under active development with frequent updates. Check the official GitHub repository for the latest features and documentation.