SpiritStream is a multi-destination streaming application that lets you stream to YouTube, Twitch, Kick, Facebook, and custom RTMP servers simultaneously. Built with Tauri 2.x, Rust, and React.
| I Need To... | Start Here |
|---|---|
| Install and run SpiritStream | Getting Started |
| Understand the architecture | System Overview |
| Learn about backend services | Services Layer |
| Understand frontend state | State Management |
| Configure streaming | FFmpeg Integration |
| Reference the API | Commands API |
| Deploy with Docker | Building |
| Look up a term | Glossary |
| Metric | Value |
|---|---|
| Framework | Tauri 2.x + Axum |
| Backend | Rust (10,000+ lines) |
| Frontend | React 19 + TypeScript (8,700+ lines) |
| Tauri Commands | 30+ |
| UI Components | 40+ |
| Supported Platforms | Windows, macOS, Linux |
| Deployment Modes | Desktop, Docker, Cloud (future) |
| Supported Languages | 5 (en, es, fr, de, ja) |
New to desktop apps or streaming? Start here:
- Glossary — Learn key terminology
- Getting Started — Install and first run
- First Stream — Set up your first stream
- System Overview — High-level concepts
Comfortable with React and TypeScript? Go deeper:
Ready for implementation details and security?
- Technical Glossary — 50+ terms and definitions
- Section Overview
- System Overview — High-level architecture with diagrams
- Component Architecture — Detailed component breakdown
- Data Flow — Data flow and sequence diagrams
- Security Architecture — Security model, encryption, Tauri permissions
- Section Overview
- Rust Overview — Crate structure, dependencies
- Services Layer — ProfileManager, FFmpegHandler, Encryption
- Models Reference — Profile, OutputGroup, StreamTarget
- Tauri Commands — All 30+ command signatures
- Encryption Implementation — AES-256-GCM + Argon2id
- Section Overview
- React Architecture — Component hierarchy and patterns
- State Management — Zustand stores (profile, stream, theme)
- Component Library — UI components with props and usage
- Tauri Integration — IPC patterns and api wrapper
- Theming and i18n — Theme system and internationalization
- Section Overview
- FFmpeg Integration — Process management, relay architecture
- RTMP Fundamentals — Protocol basics for streaming
- Multi-Destination — Output groups and target management
- Encoding Reference — Codecs, presets, hardware acceleration
- Section Overview
- Commands API — Complete Tauri command reference
- Events API — Event system documentation
- Types Reference — TypeScript and Rust type definitions
- Error Handling — Error codes and recovery patterns
- Section Overview
- Getting Started — Installation on all platforms
- First Stream — Basic streaming setup
- Multi-Platform — Streaming to multiple services
- Custom Encoding — Advanced encoding configuration
- Contributing — Development setup and code style
- Section Overview
- Building — Build process documentation
- Platform Guides — Windows, macOS, Linux specifics
- Distribution Strategy — Desktop, Docker, Cloud
- Release Process — Versioning and distribution
┌─────────────────────────────────────────────────────────────────────┐
│ CLIENT LAYER │
│ ┌──────────────────────────┐ ┌──────────────────────────┐ │
│ │ Tauri Desktop │ │ Web Browser │ │
│ │ (Embedded Webview) │ │ (Remote Access) │ │
│ └────────────┬─────────────┘ └────────────┬─────────────┘ │
│ │ │ │
│ └──────────────┬──────────────┘ │
│ │ │
├──────────────────────────────┼──────────────────────────────────────┤
│ API LAYER│ │
│ HTTP/WebSocket API (Axum) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ POST /api/* │ │ WS /ws │ │ Static UI │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────────────┤
│ APPLICATION LAYER │
│ Rust Services │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ProfileManager│ │FFmpegHandler │ │ Encryption │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────────────┤
│ INFRASTRUCTURE │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ FFmpeg │ │ File System │ │ Crypto │ │
│ │ Processes │ │ (Profiles) │ │ (AES-256) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
| Mode | Use Case | Setup |
|---|---|---|
| Desktop | Local streaming with GPU acceleration | Download installer |
| Docker | Self-hosted on your server | docker pull + compose |
| Cloud | Managed service (future) | Sign up |
See Distribution Strategy for details.
All Mermaid diagrams use a dark theme:
- Background:
#0F0A14(deep purple-black) - Primary:
#7C3AED/#A78BFA(violet) - Text:
#F4F2F7(off-white)
Source code links use the format: filename.rs:line
See Contributing Guide for documentation style and review process.