Skip to main content
A desktop application and Docker container for automatically recording live streams from Twitch, YouTube, and Kick. Set up your favorite channels, configure quality preferences, and let Battles Record capture streams whenever they go live.

Features

Multi-Platform

Record from Twitch, YouTube, and Kick with a single application

Automatic Recording

Detect when channels go live and start recording automatically

Quality Control

Choose from source quality down to 360p per channel

Post-Processing

Re-encode, copy, or concatenate recordings with FFmpeg

Storage Management

Set quotas and retention policies to manage disk space

Media Server Integration

Automatic Jellyfin library updates with NFO metadata

Notifications

Discord, Telegram, or webhook alerts for recording events

API Access

REST API and WebSocket for real-time status and control

Architecture

Battles Record consists of two main components:
  1. br-daemon - Rust backend service that monitors channels, captures streams, and exposes a REST API + WebSocket for real-time updates
  2. br-ui - Tauri 2 + SvelteKit desktop application for managing the daemon
The application can run as:
  • Desktop App (Windows, Linux) - Tauri-based native application with system tray, sidecar daemon management, and auto-reconnect
  • Docker Container - Headless server deployment with REST API access (standard and NVIDIA GPU images)

Installation

Get started with desktop or Docker deployment

Add Channels

Set up Twitch, YouTube, and Kick channels

Configure Storage

Set up recording directories and quotas

Troubleshooting

Common issues and solutions

System Requirements

Desktop Application

ComponentMinimumRecommended
OSWindows 10, Ubuntu 20.04Latest version
RAM2 GB4 GB+
Storage10 GB free100 GB+ for recordings
CPUDual-coreQuad-core for post-processing

Docker Container

ComponentMinimumRecommended
Docker20.10+Latest stable
RAM512 MB1 GB+
StorageVolume mount requiredSSD recommended

Privacy

All data stays local. Recordings, configuration, and credentials are stored on your device or server. No data is sent to TeamBattles. View Privacy Policy

Changelog

Added

  • Automatic update checking for daemon and desktop app via GitHub Releases API (every 6 hours)
  • Update notification banners in UI (dismissible, persisted across sessions)
  • Client-daemon compatibility validation with min_client_version and max_client_version fields
  • Incompatibility warning banner when client version is outside the supported range
  • check_for_updates daemon config option (default: true)
  • BR_CHECK_FOR_UPDATES Docker environment variable
  • update field in /api/status response with latest version info

Fixed

  • Buttons becoming non-interactable in release builds after using the server selector dropdown
  • CSP blocking inline styles in release builds, preventing dropdown and menu positioning
  • CSP blocking Tauri IPC protocol, forcing slower postMessage fallback
  • CSP blocking remote server health checks and data URI images
  • Titlebar drag region race condition caused by duplicate drag handlers

Changed

  • Tray icon “Exit” now uses the same close flow as the X button (instant UI hide, saved preference check, confirmation dialog)
  • Removed DropdownMenu.Portal from server selector to avoid WebView2 hit-test corruption on Windows
  • Added select-none to button base styles to prevent text selection on click
  • Updated CSP to properly allow inline styles, Tauri IPC, remote connections, and data URIs
  • Toast notifications no longer overflow when message contains long unbreakable strings
Initial release of Battles Record.

Core Features

  • Multi-platform live stream recording (Twitch, YouTube, Kick)
  • HLS segment downloading with crash recovery and atomic writes
  • Post-processing with three output formats (re-encode, copy, concatenate)
  • GPU-accelerated encoding (NVIDIA NVENC, Intel Quick Sync, AMD AMF)
  • Global and per-channel storage quotas with retention policies
  • Per-channel schedules with day/time windows and timezone support
  • Content filters for titles, games, and minimum viewer count
  • Jellyfin integration with TV show structure and rich image generation
  • OAuth 2.0 authentication for Twitch, YouTube, and Kick with bundled credentials
  • YouTube cookie authentication as OAuth alternative
  • Discord, Telegram, and generic webhook notifications
  • JWT authentication with Admin and Viewer roles
  • Tauri 2 desktop application with system tray and sidecar daemon
  • Full REST API and WebSocket for real-time event streaming
  • Docker deployment with standard and NVIDIA GPU images
  • TOML configuration with hot-reload