Skip to content

Repository files navigation

Version Electron Python Platform License


[ CHARON ]
Catalog Harvester & Automated Ripper for Organized Navidrome

Your music doesn't belong to a corporation. Take it back.

OLED-black. Styx Cyan. Digital rain. Tidal catalog → your Navidrome library in lossless. Zero compromise.

AETHER


CHARON — Home Screen



> WHAT IS THIS

CHARON is a desktop application that rips music from Tidal and deposits it directly into your self-hosted Navidrome server. Search Tidal's entire catalog — artists, albums, tracks — queue what you want, pick your quality, and CHARON ferries it across the digital river into your personal library.

It's the companion app to AETHER — AETHER plays, CHARON harvests. Two halves of the same system.

Built on Electron with a Python bridge to tiddl and tidalapi. Every pixel matches the Styx Cyan design language — OLED black backgrounds with a monochromatic cyan/teal palette. A multi-layered Tron-style canvas (perspective grid, energy streams, circuit traces, floating particles) drifts behind frosted-glass panels.


> FEATURES

 SEARCH & BROWSE
  ├─ Full Tidal catalog search (artists, albums, tracks)
  ├─ Tabbed search type switcher (Artists / Albums / Tracks)
  ├─ Artist pages (discography, top tracks, download all)
  ├─ Album pages (track listing, metadata, artwork)
  ├─ One-click download entire artist discography
  └─ Real-time search with result categorization

 DOWNLOAD ENGINE
  ├─ Quality tiers: Master (MQA/HiRes), Lossless (FLAC CD), High (AAC 320), Normal (AAC 96)
  ├─ Download queue with per-track progress tracking
  ├─ Batch operations (queue entire albums/discographies)
  ├─ Automatic metadata, lyrics & artwork embedding
  ├─ Downloads continue in background when window is closed
  └─ Downloads directly to your Navidrome music directory

 NAVIDROME INTEGRATION
  ├─ Auto-detect running Navidrome instance
  ├─ Server management (start/stop/restart from within CHARON)
  ├─ One-click Navidrome installation wizard
  ├─ Trigger library scan after downloads complete
  ├─ Server health monitoring & stats
  └─ Configuration editor (TOML)

 AUTHENTICATION
  ├─ Tidal OAuth session (via tiddl)
  ├─ Auto-detect existing tiddl credentials
  ├─ Token refresh handling
  └─ Session status indicator

 INTERFACE
  ├─ OLED-optimized (true #000000 black)
  ├─ Monochromatic cyan palette (Styx Cyan — 12 shades)
  ├─ Tron-style canvas background (perspective grid, energy streams, circuit traces)
  ├─ Glassmorphism panels with frosted-glass layering
  ├─ Frameless window with custom titlebar
  ├─ System tray (minimize-to-tray, background downloads)
  ├─ Animated micro-interactions & card entrance stagger
  └─ Responsive layout

> HOW IT WORKS

                    ┌──────────────────────────────────────────────┐
                    │               CHARON (Electron)              │
                    │                                              │
  ┌─────────┐      │  ┌────────────┐    IPC     ┌─────────────┐  │
  │  Tidal   │◄────┼──│  Python    │◄──────────►│  Electron   │  │
  │  API     │────►┼──│  Bridge    │   stdin/   │  Main       │  │
  │          │      │  │ (tidalapi) │   stdout   │  Process    │  │
  └─────────┘      │  └────────────┘    JSON     └──────┬──────┘  │
                    │                                    │         │
  ┌─────────┐      │  ┌────────────┐              ┌─────┴──────┐  │
  │  tiddl   │◄────┼──│  Download  │◄─────────────│  Renderer  │  │
  │  CLI     │────►┼──│  Queue     │   preload    │  (UI)      │  │
  │          │      │  └─────┬──────┘   bridge     └────────────┘  │
  └─────────┘      │        │                                      │
                    └────────┼──────────────────────────────────────┘
                             │
                             ▼
                    ┌──────────────────┐
                    │   Music Library  │──► Navidrome Scan
                    │   (FLAC/MQA)     │──► Your Library
                    └──────────────────┘

> TECH STACK

Layer Technology
Runtime Electron 33
Renderer Vanilla HTML/CSS/JS (single file)
Bridge Python 3.10+ (JSON IPC over stdin/stdout)
Tidal Auth tiddl (OAuth session management)
Tidal API tidalapi (search, browse, metadata)
Download tiddl CLI (MQA, FLAC, AAC support)
Server Navidrome (Subsonic API)
Build electron-builder (NSIS installer)
Design Canvas 2D Tron background + glassmorphism

> ARCHITECTURE

 CHARON/
  ├── main.js                # Electron main process — IPC, bridge, queue, Navidrome mgmt
  ├── preload.js             # Context bridge — 19 invoke channels, 3 send channels
  ├── ripper.html            # THE APP — search, browse, queue, settings, digital rain
  ├── index.html             # Website / landing page
  ├── python/
  │   └── charon_bridge.py   # Python bridge — tidalapi session, search, metadata
  ├── package.json           # Electron + builder config
  ├── icon.ico               # App icon (cyan on black)
  └── .gitignore             # Security-first exclusions

IPC Architecture

  Renderer (ripper.html)
       │
       │  contextBridge (preload.js)
       │  19 invoke channels / 3 send channels
       ▼
  Main Process (main.js)
       │
       ├──► Window controls (minimize, maximize, close)
       ├──► Settings (get/set, persisted JSON)
       ├──► Download queue (add, remove, get, clear)
       ├──► Navidrome (scan, start, stop, install, config, stats)
       ├──► System (check-deps, open-folder, open-url)
       │
       └──► Python Bridge (stdin/stdout JSON)
              │
              ├──► search (query, type, limit)
              ├──► get_artist / get_album / get_track
              ├──► get_artist_albums / get_artist_top_tracks
              ├──► auth_status / auth_login
              └──► download (url, quality, path)

> DESIGN SYSTEM

CHARON follows the Styx Cyan design language — AETHER's twin, shifted from purple to cyan:

/* Backgrounds — true OLED black */
--bg-void:      #000000
--bg-surface:   #060B0F
--bg-raised:    #0A1419
--bg-elevated:  #0C1820

/* Cyan scale — single hue, 8 stops */
--cyan-dim:     #0D2B36
--cyan-muted:   #0E4D64
--cyan-core:    #06B6D4
--cyan-bright:  #22D3EE
--cyan-vivid:   #67E8F9
--cyan-hot:     #A5F3FC
--cyan-white:   #ECFEFF

/* Tron canvas — perspective grid, energy streams, circuit traces */
/* Floating particles, scanlines, vignette */
/* All panels use glassmorphism (backdrop-filter: blur) */

Fonts: Orbitron (display) / Rajdhani (body) / JetBrains Mono (technical)


> PREREQUISITES

  • Node.js 18+
  • Python 3.10+
  • tiddlpip install tiddl
  • tidalapipip install tidalapi
  • A Tidal account (HiFi or HiFi Plus for lossless/MQA)
  • Navidrome (optional — for auto-scan after download)

> QUICK START

Install & Run

git clone https://github.com/GeneralDussDuss/charon.git
cd charon
npm install
npm start

Authenticate with Tidal

# First, authenticate tiddl with your Tidal account
tiddl
# Follow the OAuth prompts — this creates your session token

Configure

  1. Launch CHARON
  2. Open Settings (gear icon)
  3. Set your music download directory
  4. Set your Navidrome server URL (if using)
  5. Select default quality (Master / Lossless / High / Normal)
  6. Start searching and ripping

Build Installer

npm run dist

Outputs to dist/ — NSIS installer for Windows x64.


> QUALITY TIERS

Tier Format Bitrate tiddl Flag
Master MQA / HiRes FLAC Up to 9216 kbps master
Lossless FLAC 16-bit/44.1kHz ~1411 kbps high
High AAC 320 kbps normal
Normal AAC 96 kbps low

> COMPANION APP

CHARON is one half of a two-app ecosystem:

AETHER CHARON
Purpose Play your library Build your library
Color Tron Purple Styx Cyan
Backend Navidrome (Subsonic API) Tidal (tidalapi + tiddl)
Repo GeneralDussDuss/aether You're here
Website aether-player.netlify.app charon-ripper.netlify.app

AETHER plays. CHARON harvests. Your music, your server, your rules.


> ROADMAP

  • Tidal search (artists, albums, tracks)
  • Artist/album/track detail pages
  • Download queue with progress
  • Quality selection (Master/Lossless/High/Normal)
  • Navidrome server management (start/stop/restart/install)
  • Auto-scan Navidrome after downloads
  • Styx Cyan design system + Tron background
  • Batch artist discography download
  • Per-track download progress
  • Background downloads (minimize to tray)
  • macOS & Linux builds
  • Playlist import (Tidal → local)
  • Download history & duplicate detection
  • Scheduled downloads
  • Auto-updater

> LICENSE

MIT License. Do whatever you want. Credit appreciated but not required.



Built for OLED. Engineered for digital river crossings. Designed from 2077.

[ CHARON v1.1.0 ]

About

CHARON — Catalog Harvester & Automated Ripper for Organized Navidrome. Tidal ripper with Navidrome integration. Companion to AETHER.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages