-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the Grimnir Radio documentation. Grimnir Radio is a modern, production-ready broadcast automation system built in Go with multi-instance scaling, comprehensive observability, and flexible deployment options.
- Getting Started - Install and run Grimnir Radio in minutes
- Installation Guide - Docker, Nix, and source installation
- Architecture Overview - System design and components
- API Reference - Complete REST API documentation
- Configuration Guide - Configure Grimnir Radio
- Production Deployment - Deploy to production
- Migration Guide - Migrate from AzuraCast/LibreTime
- Smart Blocks - Rule-based playlist generation with criteria filtering and artist separation
- Clock Scheduling - Hour templates with slot-based repeating patterns
- Live Broadcasting - DJ handover with priority system and graceful fallback
- Webstream Relay - Built-in HTTP stream relay with ICY metadata, HLS support, and automatic failover
- Multi-Mount Support - Multiple output streams per station
- Media Management - Local filesystem or S3-compatible storage
- Multi-Instance Scaling - Horizontal scaling with Redis/NATS
- Leader Election - Automatic leader election for scheduler
- Health Monitoring - Prometheus metrics and OpenTelemetry tracing
- Event Bus - Distributed events with Redis or NATS JetStream
- 5-Tier Priority System - Emergency, Live Override, Live Scheduled, Automation, Fallback
Grimnir Radio uses a two-binary architecture. The control plane handles scheduling, the REST API, and stream relay. The media engine handles all audio processing via GStreamer and exposes its own HTTP stream output.
┌─────────────────┐ ┌──────────────────────────────┐
│ Control Plane │────▶│ Media Engine │
│ (REST API) │gRPC │ (GStreamer + HTTP output) │
│ Webstream Relay│ └──────────────────────────────┘
└─────────────────┘
│
├──────────────┐
▼ ▼
┌────────┐ ┌──────────┐
│ RDBMS │ │ Redis │
└────────┘ └──────────┘
-
Control Plane (
cmd/grimnirradio): Go HTTP API, scheduler, executor, authentication, webstream relay -
Media Engine (
cmd/mediaengine): GStreamer-based audio processing with built-in HTTP stream output; controlled via gRPC - Storage: PostgreSQL/MySQL/SQLite for metadata, filesystem/S3 for media files
- Event Bus: Redis or NATS for multi-instance coordination
The media engine provides its own HTTP stream output directly — there is no Icecast dependency. The control plane's webstream relay can additionally proxy and rebroadcast external streams with automatic failover, ICY metadata forwarding, and HLS support.
- Architecture Overview
- Scheduling Guide
- Smart Blocks
- Clock Scheduling
- Priority System
- Live Broadcasting
- Configuration Reference
- Production Deployment
- Docker Deployment
- Multi-Instance Setup
- Monitoring & Observability
- Database Optimization
- GitHub: friendsincode/grimnir_radio
- Issues: Report bugs or request features
- License: AGPL-3.0-or-later
- Current Version: 1.18.64
- Latest Update: 2026-03-02
- Status: Production Ready ✅
- OpenAPI Spec: api/openapi.yaml
- Python Client: grimnir_client.py
See CHANGELOG for version history and Roadmap for upcoming features.
- Language: Go 1.24+
- Media Processing: GStreamer 1.0 (built-in HTTP stream output, no Icecast required)
- Database: PostgreSQL 12+ (or MySQL 8+, SQLite 3.35+)
- Event Bus: Redis 6+ or NATS 2.9+
- Object Storage: S3-compatible (AWS S3, MinIO, Spaces, B2)
- Stream Relay: Built-in ICY + HLS support with auto-detection (added HLS metadata polling in v1.18.62)
- Observability: Prometheus, OpenTelemetry
- API Reference - Complete REST API documentation
- Engineering Spec - Detailed technical specification
- Sales Spec - Feature comparison and positioning
- CHANGELOG - Version history and release notes
Getting Started
Core Concepts
Scheduling
Deployment
Integration
Operations
Development
Reference