Help us shape the future of Go! Take the 2026 Go Developer Survey

skaldi

module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2026 License: AGPL-3.0

README

Skaldi

CI Release Go Report Card

Self-hosting network jukebox. Single Go binary, web UI, auto-provisions dependencies.

Install

# macOS
brew install mpv ffmpeg

# Arch
sudo pacman -S mpv ffmpeg avahi

# Debian/Ubuntu
sudo apt install mpv ffmpeg avahi-utils

Build & Run

go build -o skaldi ./cmd/skaldi
./skaldi

First run auto-installs uv, bun, yt-dlp to ~/.cache/skaldi/.

Features

  • Queue: YouTube URLs, direct file uploads (drag-drop or paste)
  • Search: YouTube + YouTube Music with autocomplete
  • Sync: Real-time SSE state updates
  • Discovery: Auto-registers as skaldi.local via mDNS
  • Audio: Dynamic range compression via dynaudnorm

API

Method Path Description
GET / Web UI
GET /events SSE stream
GET /suggest?q={query} Autocomplete suggestions
GET /search?q={query} Search YouTube/Music
POST /queue Add URL {"url":"..."}
DELETE /queue/{index} Remove item
POST /playback Control `{"action":"pause
POST /upload File upload (multipart/form-data)

Security

No authentication. Exposing to the internet allows arbitrary uploads and RCE via media parsers. Run only on trusted networks.

Development

make all    # lint, test, build
make lint   # golangci-lint, go vet
make test   # go test -v ./internal/...
make vuln   # govulncheck

See AGENTS.md for architecture guidelines.

License

AGPL-3.0 - See LICENSE

Directories

Path Synopsis
cmd
skaldi command
internal
bootstrap
Package bootstrap handles dependency provisioning and configuration management.
Package bootstrap handles dependency provisioning and configuration management.
discovery
Package discovery handles mDNS service registration for local network discovery.
Package discovery handles mDNS service registration for local network discovery.
player
Package player manages the mpv media player process and IPC communication.
Package player manages the mpv media player process and IPC communication.
resolver
Package resolver extracts media metadata using yt-dlp.
Package resolver extracts media metadata using yt-dlp.
server
Package server provides HTTP handlers and SSE broadcasting for the jukebox API.
Package server provides HTTP handlers and SSE broadcasting for the jukebox API.
Package web embeds the frontend UI assets.
Package web embeds the frontend UI assets.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL