- Category
- AI Agents
- Pricing
- Open Source
- Type
- APP
- Builder
- moeru-ai
- GitHub
- 48.9k stars
- Latest release
- v0.12.0-beta.5
- Date
About
A self-hosted AI companion inspired by Neuro-sama that can engage in real-time voice chat, play games like Minecraft and Factorio, and interact with your desktop activities. It's designed as a "soul container" for AI waifus and virtual characters that can function as digital companions with gaming capabilities.
What it does
AIRI runs an animated character that talks, listens, and acts. A local channel server sits at the center: speech capture, memory, chat connectors, and screen control each attach as separate modules over a websocket, announce themselves to a registry, and receive routed events. The character renders in a browser, in an Electron desktop shell made of many small windows, or in a mobile build. Language models are pluggable providers rather than one hardcoded vendor. Connectors for Discord, Telegram, Minecraft, and Twitter let the same character appear outside the app.
Why it's ranked here
Ambition here is real, and so is the unevenness. The channel server does serious work: constant-time token comparison, heartbeat liveness with automatic peer removal, consumer groups for spreading events across workers. The desktop process wires dozens of windows and services through a dependency-injection container instead of scattered globals. Against that, the plugin kit prints a warning at import time that its APIs may change without notice, the character package exports nothing at all, and the memory module registers a configure handler with an empty body. Read it as a fast-moving companion platform, not a stable foundation.
What's good
Distribution is unusually well covered. Desktop installers exist for Windows, macOS, and Linux, alongside a browser build, mobile builds through Capacitor, and package-manager recipes for winget, Scoop, and Homebrew Cask. The project is MIT licensed. Contributor guidance is long and specific, down to which validation library to use and how to treat circular imports. Tests run under Vitest with coverage and a separate browser project. The readme ships in seven languages with a translation workflow behind it, and the agent-facing guide maps the workspace layout honestly, including the parts marked legacy.
Tradeoffs
The surface is huge and the depth is inconsistent. Several published packages are placeholders: one exports an empty object, another only prints a redirect notice when imported. The desktop status memo admits the computer-control lane is macOS only and Chrome first, with an overlay lifecycle step still unproven in a live window, and it leaks absolute paths from a developer machine. Event routing still carries branches flagged as legacy for unindexed modules. The readme also warns that no official token or cryptocurrency belongs to the project, which says something about the attention it draws.
How to use it well
For people who want a local companion character with an actual body: rendering, voice, and hooks into chat platforms or a game. Worth ten minutes if you are building any animated avatar, since the rendering and lip-sync layers sit behind their own packages and stay separate from the language model. The desktop build also exposes a computer-control server over the Model Context Protocol, so an agent can drive a Mac. It is not a general agent framework, not a serving stack, and it will not hand you a working long-term memory.
Technical notes+
package.json declares a private pnpm workspace under MIT with turbo-driven builds across packages, plugins, integrations, services, engines, apps, and server. packages/server-runtime/src/index.ts builds an H3 websocket app: peers authenticate against an environment token through a constant-time comparison, peer and module registries live in in-memory Maps, a heartbeat with a derived health-check interval evicts silent peers, and events pass through routing middleware plus a consumer orchestrator that supports groups and priorities. apps/stage-tamagotchi/src/main/index.ts composes the Electron main process with injeca providers for tray, settings, chat, spotlight, caption, and an environment-gated desktop overlay window, and appends Wayland and WebGPU command-line switches on Linux. services/computer-use-mcp/src/server.ts registers accessibility, display, pty, VSCode, CDP, desktop-grounding, and Chrome-session tools onto a stdio MCP server with explicit shutdown of every bridge. packages/core-agent/src/index.ts exports a chat orchestrator runtime, a context registry, a streaming response categoriser, and message sanitisers. Placeholders are visible: packages/core-character/src/index.ts exports an empty object, packages/plugin-protocol/src/index.ts only logs a redirect, packages/plugin-sdk/src/index.ts warns that its APIs may change, packages/model-driver-lipsync/src/index.ts is a single re-export, and packages/memory-pgvector/src/index.ts opens a client then handles configuration with an empty callback. plugins/airi-plugin-claude-code/src/cli.ts reads Claude Code hook payloads from stdin and forwards prompt-submit events into the channel server as text input. AGENTS.md documents workspace ownership and the pnpm filter commands, while docs/desktop-lane-status.md scopes the computer-use lane to macOS and Chrome and lists the open overlay validation.
Observed
- License
- MIT
- Language
- TypeScript with Vue 3 and Electron
- Packaging
- Private pnpm workspace monorepo, turbo build graph over packages, apps, plugins, integrations, services, and server
- Install surface
- Desktop installers for Windows, macOS, and Linux, a hosted browser build, mobile builds via Capacitor, plus winget, Scoop, and Homebrew Cask
- Interfaces
- Websocket channel server, stdio MCP server for computer use, plugin SDK, and bot connectors for Discord, Telegram, Minecraft, Satori, and Twitter
- Testing
- Vitest with coverage plus separate browser and package-level configs
- Auth on the channel server
- Optional shared token compared in constant time, with heartbeat-based peer eviction
- Placeholder modules
- packages/core-character/src/index.ts and packages/plugin-protocol/src/index.ts contain no implementation
- Computer-use scope
- docs/desktop-lane-status.md limits the desktop control lane to macOS and Chrome
- Localisation
- Readme translations in seven languages with a Crowdin workflow
Read from README.md, package.json, AGENTS.md, packages/core-agent/src/index.ts, packages/core-character/src/index.ts, packages/plugin-protocol/src/index.ts, packages/plugin-sdk/src/index.ts, packages/server-runtime/src/index.ts, apps/stage-tamagotchi/src/main/index.ts, packages/memory-pgvector/src/index.ts, services/computer-use-mcp/src/server.ts, packages/model-driver-lipsync/src/index.ts, plugins/airi-plugin-claude-code/src/cli.ts, docs/desktop-lane-status.md.
What it can do
Engage in real-time voice conversations
User voice input → AI-generated voice responses
Play Minecraft with users
Minecraft game environment and user interactions → Game actions and responses within Minecraft
Play Factorio with users
Factorio game environment and user interactions → Game actions and responses within Factorio
Monitor and interact with desktop activities
Desktop screen content and user actions → Contextual responses and interactions based on desktop activity
Host AI companion personalities
AI character configuration and user interactions → Personalized AI companion responses and behaviors
Process text-based chat conversations
User text messages → AI-generated text responses
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
