Build-time typed interface contracts (proto3) for the vtuber- program — generates a Rust crate, Mojo bindings (via Pixi + Python interop), and TypeScript declarations consumed by every other vtuber- repo to prevent contract drift across 17 services.**
[ English | ภาษาไทย | 日本語 | 简体中文 ]
vtuber-contracts is the build-time source of truth for all inter-service typed boundaries in the vtuber-* program. It defines proto3 schemas for messages such as ConversationDirective, VoiceProfile, and Persona, then runs codegen to publish three consumer surfaces — a Rust crate (via tonic-build), a Mojo binding package (via Pixi + Python interop, see ADR-004), and TypeScript declarations (via ts-proto) — consumed by every other vtuber-* repo and by the public SDK shipped through vtuber-api.
- 🚀 Feature 1 — proto3 schema for all inter-service messages (ConversationDirective, VoiceProfile, Persona, StreamEvent, ToolCall) under stable package paths
- 🛡️ Feature 2 — Multi-language codegen pipeline producing a Rust crate, Python typed stubs (.pyi via mypy-protobuf), and TypeScript declaration files (via ts-proto)
- 📊 Feature 3 — Semver enforcement per .proto package with buf breaking-change linter wired into CI as a hard gate
# Install Rust toolchain (rustup) and the buf CLI (https://buf.build/docs/installation), then run cargo build && buf generate to produce Rust, Python, and TypeScript bindings under generated/.- 🏗️ Architecture — Core design and components.
- 📅 Roadmap — Project timeline and milestones.
- 🤝 Contributing — How to join and help.
- 🌳 Project Structure — Full file map.