About this project
Echo is a local-first, cross-platform music player for macOS, Windows, and Linux desktops. It does not rely on any account system or streaming music library. After users select the root directory of their local music library, Echo scans the music files within it, enabling playback, management, and search without requiring a network connection.
Core Capabilities
Library Management: Scans the library root directory, parses tags, cover art, and lyrics, continuously monitors directory changes, and supports manual re-scanning. When importing new songs, it copies them to the library's media/ directory, organizing them by "Artist/Artist - Song Title"; duplicate content is not imported again, and files with the same name but different content are automatically appended with a number without overwriting existing files.
Playback Experience: Provides stable playback queue, progress, volume, and shortcut key controls, along with an immersive vinyl playback interface. Lyrics support embedded parsing, same-name .lrc files, and user overlay layers, positioning with playback progress, and displaying an empty state when no lyrics are available.
System Integration: On macOS, it offers menu bar status line and Control Center "Now Playing" integration; on Windows/Linux, it provides a system tray. The playback status can be viewed and controlled even after the main window is closed. It supports being set as the system default player, allowing temporary playback by double-clicking audio files in the file manager.
Personalization: Comes with three built-in themes (Coral Rose, Deep Cobalt Blue, Turquoise Green) and remembers the user's choice. Users can set the app to exit or stay in the background when the main window is closed. Cover art, lyrics, and metadata are managed via overlay layers without modifying original files; during display and playback, the overlay takes precedence over embedded data in the file.
Technical Architecture
Rust Core handles the library, import, tag parsing, synchronization, and conflict resolution, remaining independent of the UI and player. The desktop UI uses Tauri 2 + React + TypeScript, playback utilizes mpv/libmpv, and playback capabilities are adapted per platform. The repository includes crates such as echo-core (domain models, use cases, SQLite infrastructure) and echo-desktop (desktop runtime, IPC DTO, platform adaptation), along with a React shell, Tauri shell, and native E2E directory.
Development and Verification
Environment requirements include Node.js ≥ 20, pnpm 11, Rust 1.98.1, and libmpv (vendored with the repository on macOS). The startup command is pnpm echo dev, which sequentially executes IPC type generation, frontend build, and tauri dev. Release packages are built via pnpm echo release. All tasks and scenario commands are registered in scripts/verify/manifest.json, and can be run using node scripts/verify/run-task.mjs or pnpm verify:scenario. There are 218 scenario-level manifests. Quality gates include cargo fmt, cargo clippy, cargo test, as well as frontend typecheck and tests. Specifications and change processes follow OpenSpec, with scenario IDs deterministically derived by script based on title order.
Current Status and Roadmap
The current phase is Phase 1, which is the complete desktop player. Version v0.1.0 has been released, building macOS, Windows, and Linux installers (DMG / EXE / deb / AppImage) via GitHub Actions, along with SHA256SUMS checksums. The artifacts are currently unsigned and not notarized. Verification for the macOS platform, including runtime, native E2E, and fault recovery matrices, has been completed. Native E2E and recovery matrices for Windows/Linux are being expanded. Subsequent phases plan to include library synchronization (S3 compatible), as well as Android and iOS clients. The boundary of Phase 1 is offline, no account, no network: the UI does not render synchronization entry points, the bridge has no synchronization commands, the Cargo workspace has no network client dependencies, and CSP denies remote connections; synchronization exists only as basic data shapes.
License
Echo uses a customized license based on the Business Source License 1.1, limited to personal learning and research purposes. It prohibits commercial use, unauthorized sale, resale, or redistribution. After the Change Date (December 31, 2099), it will be provided under GPL-2.0-or-later. The third-party dependency license list can be found in LICENSES.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.