REGSTAR
← All projects
MusicArk iconStable · v1.0.0

> windows / music collection management

MusicArk

Manage a local music library against a Yandex Music collection: identity matching, missing-track coverage, recording variants, metadata repair, downloads, and controlled synchronization.

MusicArk separates track identity, recording variant, and collection coverage instead of treating similar titles as a match. It combines a Flutter desktop interface with a Python backend, local SQLite state, cache-first provider access, and explicit write boundaries for local files and Yandex actions.

Windows x64FlutterPythonSQLiteRU/ENMIT
MusicArk interface
v1.0.0Real interface · open full size ↗
PlatformWindows x64
Releasev1.0.0
Published28 Aug 2026
Data modelSQLite 1.9.0
LicenseMIT

> context

A local collection is not the same thing as a streaming library

MusicArk is designed around the gap between the music a user wants to keep and the files actually present on disk. It makes uncertainty visible instead of silently assuming that similar metadata means the same recording.

01 / problem

Track identity and file presence are easy to confuse

Different releases can share similar titles and artists, censored/original versions may look almost identical, and stale provider metadata can create false matches. A destructive sync built on weak identity would be risky.

02 / approach

Identity first, actions later

MusicArk builds provider cache and local index first, runs conservative Identity Matching, keeps Variant analysis separate, derives Coverage from authoritative state, and only then enables downloads, metadata work, upload/recovery, or Controlled Sync.

> capabilities

Core capabilities

v1.0.0 packages the complete desktop MVP for Windows x64 without requiring a separate Python installation.

01YM

Yandex Music library

Sign in with a user-provided token and browse liked tracks, playlists, and liked albums through a cache-first provider layer.

02LOCAL

Local Library

Index multiple folders without modifying files during ordinary Scan; retain technical fields and searchable local metadata in SQLite.

03MATCH

Identity Matching

Conservative matching where precision is preferred over recall. Results remain MATCHED, CONFLICT, or UNMATCHED instead of forcing weak guesses.

04VAR

Recording variants

Analyze recording differences separately from identity and support user ORIGINAL / CENSORED labels with review for uncertain cases.

05COVER

Coverage & Missing

Derive covered / missing / needs_review / not_analyzed from current matching state and user triage rather than maintaining a second matching engine.

06DL

Downloads

Persistent queue with Wanted, retry, cancel, remove and bulk actions; a long-lived worker avoids rebuilding the provider client for each queued track.

07META

Metadata Editor

Explicit MP3/ID3 writes, artwork, filename changes and Yandex metadata comparison with temporary-copy validation and atomic replacement.

08SYNC

Controlled Sync

Build an immutable plan, detect staleness, require confirmation, revalidate before Apply, and enqueue only currently valid downloads.

09PLAY

Playback & recovery

Play local/prepared tracks, manually upload owned/permitted MP3 files to Yandex Music, and support recovery workflows for unavailable tracks.

> interface

Application screens

Current MusicArk screenshots from the project repository. Images keep their natural aspect ratio and can be opened at full size.

MusicArk screen 1
01MusicArk screen 1
MusicArk screen 2
02MusicArk screen 2
MusicArk screen 3
03MusicArk screen 3
MusicArk screen 4
04MusicArk screen 4
MusicArk screen 5
05MusicArk screen 5
MusicArk screen 6
06MusicArk screen 6

$ data flow

Product data flow

Desired state, actual files, identity and variant evidence stay separate. Coverage is derived only after matching state is known.

01Yandex cacheDesired collection membership
02Local indexActual files and metadata
03Matching + VariantIdentity truth + recording evidence
04Coveragecovered / missing / review / unknown

$ architecture

Application architecture

The UI and backend have explicit boundaries. Provider credentials and protected media URLs stay in the Python side rather than crossing into Flutter.

Flutter desktop

Permanent application shell, Yandex workspace, Local Library, Matching/Coverage, Downloads, Sync, Metadata, Settings/Help/About and RU/EN presentation.

Python application layer

Provider integration, local indexing, identity matching, variant analysis, coverage, downloads, metadata operations, sync planning, updates and feedback bridges.

SQLite

Cache-first Yandex collection snapshots, local library index, matching state, variant results, coverage triage, downloads, settings and sync history.

Bridge processes

Explicit JSON/process boundaries connect Flutter to Python services. Binary artwork and credentials are not passed through metadata bridges.

Credential boundary

Yandex token is stored in the system credential store through keyring; signed provider URLs and auth/cookie data are not persisted in task payloads.

Windows distribution

Flutter desktop app plus frozen Python backend runtime in both installer and portable package; user data lives separately under %LOCALAPPDATA%\MusicArk.

> engineering

Engineering decisions

MusicArk favors conservative state transitions and explicit confirmation because collection-management mistakes are more expensive than asking the user to review an uncertain track.

Matching

Precision over recall

A false automatic identity match can poison later Coverage and Sync decisions, so uncertain candidates remain conflicts or unmatched.

Coverage

Unknown is not missing

Only an authoritative current UNMATCHED state becomes Missing. Stale, conflict, or unanalyzed data remains visibly separate.

Metadata

Explicit writes only

Scan, Matching, Variant, Coverage and Sync-plan inspection do not mutate audio files. MP3 changes require a deliberate editor action.

Filesystem

No bidirectional mirror

MusicArk does not automatically delete, rename, move, or overwrite existing tracks just to make the filesystem resemble Yandex Music.

Sync

Plan, confirm, revalidate

Apply refuses stale plans and rechecks pending downloads against current Coverage and queue state before enqueueing work.

Provider failures

Keep local work available

External API/download failures should remain scoped to affected provider functions and must not block browsing cached/local collection state.

> technology

Technology stack

FlutterWindows desktop UI
DartUI runtime
Python ≥ 3.10backend runtime
SQLitelocal persistence
yandex-music 3.0.0provider integration
keyring 25.7.0credential store
mutagenaudio metadata
httpx / requestsnetwork layer
ffmpegoptional audio verification
PyInstallerfrozen backend runtime

> security

EXPLICIT BOUNDARIES

User files and credentials have explicit boundaries.

MusicArk is intentionally conservative around local files, credentials, and update execution. Normal analytical workflows are read-only, provider secrets stay outside Flutter, and installer execution is gated by manifest/size/SHA-256 verification plus user confirmation.

  • Yandex token stored through system keyring
  • Flutter does not receive the Yandex token or protected media URLs
  • Scan/Matching/Variant/Coverage are read-only for audio files
  • Metadata writes use a temporary copy and atomic replacement
  • Updater verifies size and SHA-256 before launch
  • Feedback diagnostics exclude library paths and credentials
Important: MusicArk uses an unofficial Yandex Music API through the third-party yandex-music library. It is not an official Yandex product and is not affiliated with Yandex.

$ stable_release

MusicArk v1.0.0

v1.0.0 is the first stable public Windows release. The installer and portable package both include the Flutter application and frozen Python backend runtime. No separate Python installation is required.

Installer SHA-256A94F53F01BE23033405A6BAB2909436CC4CC1B1E99B19F57DD3A1307869BD3B8
Portable SHA-256105E440C266B8EF3E9DDF2E40479FD4BEDF3ADF7253DD7A15D45127D51135D0E
Version1.0.0
PlatformWindows x64
Installer51,994,403 bytes
Portable70,071,926 bytes
SigningUNSIGNED
ChannelStable

> project links

Project resources

GitHub remains the source of truth for release notes, architecture, source boundaries, third-party licenses and issue tracking.