Skip to content

Latest commit

History

537 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Harmonia

Ἁρμονία (Harmonia): "the fitting together of disparate parts"

Unified self-hosted media platform. Rust monorepo with a server binary intended to replace the *arr stack as a full media lifecycle manager.

Architecture

Single Tokio/Axum/SQLite server with 21 workspace crates under crates/. crates/theatron/desktop is an excluded Dioxus desktop package; canonical STATE.md tracks that desktop port as the remaining Phase 3.5 scope.

LayerCratesPurpose
Coreaggelmata, apotheke, horismosShared types, SQLite storage, configuration
AuthexousiaJWT authentication, argon2 password hashing
Media opskathodos, komide, epignosis, kritikeImport/rename, library scanning, metadata enrichment, quality verification
Acquisitioneksetasis, ergasia, syntaxis, aitesisTorznab search, download execution, queue orchestration, household requests
Servingparoche, syndesmos, syndesis, prosthekeHTTP streaming, external integrations (Plex, Last.fm, Tidal), QUIC renderer transport, subtitles
Audioakouo-coreBit-perfect decode, DSP (EQ, crossfeed, ReplayGain), native audio output
UItheatron-coreDioxus desktop types and API client
Binaryarchonharmonia CLI for serve, db, play, render, migrate, and local mcp modes
Convertharmonia-convertEbook format conversion (Calibre, kepubify, pandoc)

Capability status

  • Shipped / wired to routes: auth, library scan/import (kathodos), feed scheduler (komide), torrent download engine (ergasia), queue orchestration (syntaxis), HTTP/OpenSubsonic API (paroche), external integrations (syndesmos), QUIC renderer transport (syndesis), audio pipeline (akouo-core), post-download import (archon::ImportAdapter - a completed download lands in the library for music/movie/book wants; audiobook/comic/podcast/tv_series wants have no library type yet and are deferred, #612).
  • Initialized, adapter-backed or fallback-only at HTTP layer: the live serve path wires adapter structs for search, download execution, queue management, requests, external integrations, subtitles, and renderer registry. It still uses 2 null placeholders for metadata resolution and curation. The fallback/test AppState::with_stubs path defines 9 Null* service implementations.

For current planning, blockers, and phase status, see the canonical project state maintained with the internal planning records.

Prerequisites

Linux (Debian/Ubuntu): the akouo-core audio pipeline pulls cpal -> alsa-sys, which needs the ALSA development headers at build time. Install before the first cargo check:

sudo apt-get install --no-install-recommends libasound2-dev pkg-config

macOS builds out of the box against CoreAudio.

Build

cargo check --workspace
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings

Documentation

  • CLAUDE.md: repo conventions and standards links (canonical standards live in kanon crates/basanos/standards/)
  • docs/lexicon.md: Project name registry

License

AGPL-3.0-or-later. See NOTICE for supplemental terms.

About

Media management system - library backend, format conversion, request workflows, Android playback

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages