Welcome to the AITuber OnAir monorepo! This repository contains various packages and tools that power AI-driven virtual streaming and related features.
Currently, the primary packages available are:
-
@aituber-onair/core A TypeScript library for generating text and audio responses in AI Tuber streaming scenarios. It provides seamless integration with various AI and speech APIs, as well as memory and conversation context management.
npm install @aituber-onair/core
-
@aituber-onair/voice An independent voice synthesis library supporting multiple TTS engines (VOICEVOX, VoicePeak, OpenAI TTS, NijiVoice, MiniMax, AIVIS Speech, etc.). Can be used standalone or integrated with the core package for full AITuber functionality.
npm install @aituber-onair/voice
-
@aituber-onair/manneri A conversation pattern detection library that identifies repetitive dialogue patterns and provides topic diversification prompts. Features simple configuration with customizable intervention messages for maintaining engaging conversations.
npm install @aituber-onair/manneri
-
@aituber-onair/bushitsu-client WebSocket client library for chat functionality with React hooks support. Provides WebSocket client and React hooks for real-time chat communication with auto-reconnection, rate limiting, mention support, and voice synthesis integration. Works in both browser and Node.js environments.
npm install @aituber-onair/bushitsu-client
-
@aituber-onair/chat Chat and LLM API integration library for AITuber OnAir. Provides a unified interface for interacting with various AI chat providers including OpenAI, Claude (Anthropic), and Google Gemini. Features streaming responses, tool/function calling, vision support, and emotion detection.
npm install @aituber-onair/chat
-
Clone the repository
git clone https://github.com/shinshin86/aituber-onair.git cd aituber-onair
-
Install dependencies
This monorepo uses npm workspaces. Simply run:npm install
-
Build all packages
npm run build
- This runs the build script for each package in the
packages/
directory.
- This runs the build script for each package in the
-
Test all packages
npm run test
- Runs the test suite for each package.
-
Format all packages
npm run fmt
- Runs the format for each package.
aituber-onair/
├── packages/
│ ├── core/
│ │ ├── src/
│ │ ├── test/
│ │ └── package.json
│ ├── voice/
│ │ ├── src/
│ │ ├── test/
│ │ └── package.json
│ ├── chat/
│ │ ├── src/
│ │ ├── test/
│ │ └── package.json
│ ├── manneri/
│ │ ├── src/
│ │ ├── test/
│ │ └── package.json
│ └── bushitsu-client/
│ ├── src/
│ ├── test/
│ └── package.json
├── package.json
├── README.md
└── ...
- packages/core: The main library (
@aituber-onair/core
) providing AITuber core functionality. - packages/voice: The voice synthesis library (
@aituber-onair/voice
) supporting multiple TTS engines. - packages/chat: The chat and LLM API integration library (
@aituber-onair/chat
) for AI provider interactions. - packages/manneri: The conversation pattern detection library (
@aituber-onair/manneri
) for identifying repetitive dialogue patterns. - packages/bushitsu-client: The WebSocket client library (
@aituber-onair/bushitsu-client
) for chat functionality with React hooks support.
This project uses Changesets for version management and automated releases.
-
Create a changeset for your changes
npm run changeset
- Select the packages that were modified
- Choose the appropriate version bump (patch/minor/major)
- Write a clear description of the changes
-
Commit the changeset file
git add .changeset/ git commit -m "Add changeset for [your feature]"
-
Push to GitHub and create a PR
- After merging to main, the GitHub Action will automatically create a "Version Packages" PR
- This PR will include all pending changesets
-
Merge the Version PR
- Review and merge the "Version Packages" PR
- This will automatically:
- Update package versions
- Update CHANGELOG.md files
- Create git tags
- Publish packages to npm
For a complete manual release workflow:
Option 1: Using Changesets
-
Create changeset for your changes
npm run changeset
-
Update package versions
npm run changeset:version
-
Release (build, test, and publish)
npm run release
Option 2: Manual Version Management If changeset interactive mode fails:
-
Update CHANGELOG.md: Add entry to
packages/[package]/CHANGELOG.md
## 0.x.x ### Patch Changes - Your change description here
-
Update package.json: Increment version in
packages/[package]/package.json
-
Commit changes: Commit both CHANGELOG.md and package.json updates
-
Build and test:
npm run build && npm run test
-
Publish:
npm run changeset:publish
orcd packages/[package] && npm publish
Alternative individual operations:
# Check what would be published
npm run changeset:publish -- --dry-run
# Manually publish packages (after changeset:version)
npm run changeset:publish
Note: npm run release
executes build → test → publish
in sequence. If any step fails, the process stops and packages won't be published.
This project is open-sourced under the MIT License.
This project is based on the work referenced below. Without the contributions of these pioneers, I would not have been able to create it.