Skip to content

ScopeCreep-zip/SpiritStream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpiritStream

Multi-destination streaming application that allows you to stream to multiple platforms simultaneously at different bitrates.

Features

  • Stream to YouTube, Twitch, Kick, Facebook, and custom RTMP servers
  • Multiple output groups with independent encoding settings
  • Hardware encoder support (NVENC, QuickSync, AMF, VideoToolbox)
  • Profile management with encrypted stream keys
  • Real-time stream statistics
  • Cross-platform: macOS, Windows, Linux

Documentation

Comprehensive technical documentation is available in the docs/ directory.

Quick Links

Document Description
Getting Started Installation and first run guide
System Overview Architecture and component diagrams
FFmpeg Integration Relay architecture and process management
State Management Zustand stores and data flow
Services Layer Rust backend services
Glossary Technical terms and definitions

Reading Paths

Quick Start

One-Command Setup

Run the setup script to install all prerequisites automatically:

macOS / Linux:

git clone https://github.com/ScopeCreep-zip/SpiritStream.git
cd SpiritStream
./setup.sh

Windows (PowerShell):

git clone https://github.com/ScopeCreep-zip/SpiritStream.git
cd SpiritStream
.\setup.ps1

The setup script installs: Rust, FFmpeg, platform build tools, and pnpm dependencies.

After setup completes, restart your terminal and run:

pnpm dev       # Development mode (all workspaces)
pnpm build     # Production build

Download Pre-built Binaries

Download the latest release from Releases:

Platform File
macOS spiritstream_x.x.x_aarch64.dmg
Windows spiritstream_x.x.x_x64-setup.exe
Linux spiritstream_x.x.x_amd64.AppImage, spiritstream_x.x.x_amd64.deb, or spiritstream-x.x.x-1.x86_64.rpm

Note: FFmpeg must be installed separately:

  • Windows: Download from https://github.com/BtbN/FFmpeg-Builds/releases and add to PATH (or set the path in Settings).
  • Linux: Use your package manager (apt/dnf/pacman) or download a static build from the same BtbN link.
  • macOS: brew install ffmpeg

Manual Build from Source

Prerequisites

Requirement Installation
Node.js 20.19+ or 22.12+ nodejs.org
pnpm 8+ npm install -g pnpm
Rust 1.70+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
FFmpeg See above
Platform tools Tauri Prerequisites

Build Steps

git clone https://github.com/ScopeCreep-zip/SpiritStream.git
cd SpiritStream
pnpm install
pnpm build

Build output: apps/desktop/src-tauri/target/release/bundle/

Usage

  1. Create a Profile: Set up your incoming RTMP URL and configure output groups
  2. Add Stream Targets: Add your streaming platforms with server URLs and stream keys
  3. Configure Encoding: Choose video encoder, resolution, bitrate, and audio settings
  4. Start Streaming: Click "Start Stream" to begin broadcasting to all targets

Development

This is a pnpm monorepo with multiple workspaces:

  • apps/web - React frontend (@spiritstream/web)
  • apps/desktop - Tauri desktop wrapper (@spiritstream/desktop)
  • server - Standalone Rust HTTP server

Development Modes

Mode Command Description
Desktop pnpm dev Tauri app with embedded webview + server sidecar. The full desktop experience.
Web + Server pnpm backend:dev then VITE_BACKEND_MODE=http pnpm dev:web Browser-based UI connecting to standalone HTTP server. For remote access or Docker development.
Frontend Only pnpm dev:web Just the React frontend (no backend). For UI-only work.

Quick Commands

pnpm dev             # Desktop app (recommended for most development)
pnpm dev:web         # Frontend only (localhost:5173)
pnpm dev:desktop     # Same as pnpm dev
pnpm backend:dev     # Standalone HTTP server (localhost:8008)
pnpm build           # Production build (all workspaces)
pnpm typecheck       # Check TypeScript types
cargo check --manifest-path server/Cargo.toml  # Check Rust server

Backend Server (HTTP/WebSocket)

Run the standalone backend server for browser-based or Docker usage:

pnpm backend:dev

Environment variables:

  • SPIRITSTREAM_HOST (default: 127.0.0.1)
  • SPIRITSTREAM_PORT (default: 8008)
  • SPIRITSTREAM_DATA_DIR (default: ./data)
  • SPIRITSTREAM_LOG_DIR (default: ./data/logs)
  • SPIRITSTREAM_THEMES_DIR (default: ./themes)
  • SPIRITSTREAM_UI_DIR (default: ./dist)
  • SPIRITSTREAM_API_TOKEN (optional; single shared token for HTTP auth)
  • SPIRITSTREAM_UI_ENABLED (optional; 1 to serve the web UI from the host)
  • SPIRITSTREAM_UI_URL (launcher-only; default: http://localhost:1420 in dev, http://HOST:PORT in release)
  • SPIRITSTREAM_SERVER_PATH (launcher-only; absolute path to the host binary)
  • SPIRITSTREAM_LAUNCHER_HIDE_WINDOW (launcher-only; 1 to hide launcher window)
  • SPIRITSTREAM_LAUNCHER_OPEN_EXTERNAL (launcher-only; 1 to open the UI in your browser)

Sample values live in .env.example.

Frontend configuration for the web UI:

VITE_BACKEND_MODE=http
VITE_BACKEND_URL=http://127.0.0.1:8008
VITE_BACKEND_WS_URL=ws://127.0.0.1:8008/ws
VITE_BACKEND_TOKEN=

Then start the frontend with:

VITE_BACKEND_MODE=http pnpm dev:web

Launcher (Desktop Host)

The Tauri desktop binary now starts the host server and can open the UI URL in your default browser. Use SPIRITSTREAM_UI_URL to point it at a local Vite dev server or a cloud UI, and SPIRITSTREAM_SERVER_PATH to override the host binary location.

License

GPL-3.0 License - See LICENSE for details.

Acknowledgements & Support

SpiritStream was inspired by streamer SpiritArtLife. We are grateful for the idea and for her testing.

We're a team of queer devs who love making cool things for awesome people. We appreciate your support!

About

Guerrilla Live Streaming App: Deplatform & own your brand

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6