Skip to main content

EchoVault CLI

A terminal (TUI) music player for your EchoVault library, built with Textual and pygame.


Requirements

EchoVault CLI doesn't manage its own music library — it reads the same local database that the main EchoVault desktop app builds when you add folders to your library. Install and run EchoVault at least once first, so ~/.config/EchoVault/sonicbox.db exists and has tracks in it.

Installation

pip install EchoVault-CLI

Requires Python >= 3.8.

Usage

Run the player from a terminal:

echovault

Select a track in the list and use these keys to control playback:

Key Action
space Play / Pause
n Next track
p Previous track
s Toggle shuffle
r Toggle repeat
+ Volume up
- Volume down
q Quit

CLI Preview

  • EchoVault CLI theme 1

  • EchoVault CLI theme 2

Development

  1. Clone and install in editable mode (picks up code changes immediately, no reinstall needed per edit):

    git clone https://github.com/EchoVaultHQ/EchoVault-CLI.git
    cd EchoVault-CLI
    pip install --user -e .
    
  2. Run it:

    echovault
    

    or directly via module: python -m echovault.app

  3. Live-reload dev mode — Textual can watch app.tcss and hot-reload styles without restarting, plus stream logs to a separate console. This needs the textual-dev package (not a runtime dependency, install it separately):

    pip install --user textual-dev
    

    Then, in two terminals:

    # terminal 1 — devtools console (shows logs/errors)
    textual console
    
    # terminal 2 — run the app in dev mode
    textual run --dev echovault.app:EchoVault
    

    Note: pass the module path as module:AppClass (echovault.app:EchoVault), not a file path — textual run --dev src/echovault/app.py runs the file standalone and breaks its relative imports (from .database import ...).

    Edit src/echovault/app.tcss while the app is running and the styling updates live.

  4. Run the test suite:

    pip install --user pytest
    pytest tests/
    

Deployment

Releases publish to PyPI automatically via GitHub Actions (.github/workflows/publish.yml) whenever a v* tag is pushed.

  1. Bump the version in src/echovault/__about__.py:
    __version__ = "X.Y.Z"
    
  2. Commit the bump:
    git add src/echovault/__about__.py
    git commit -m "Bump version to X.Y.Z"
    git push origin main
    
  3. Tag and push the tag to trigger the release:
    git tag vX.Y.Z
    git push origin vX.Y.Z
    
  4. Watch the run under the repo's Actions tab. On success, the new version appears on PyPI.

Notes:

  • Publishing uses PyPI Trusted Publishing (OIDC) — no API token is stored in the repo. The trusted publisher on PyPI must point at the current GitHub owner/repo/workflow (Settings → Actions → Publishing on the PyPI project page); update it there if the repo is ever renamed or transferred.
  • Re-running a release requires a new tag or a re-pushed tag (delete + recreate) — pushing an unchanged existing tag will not retrigger the workflow.
  • EchoVault — the main desktop music player this CLI complements.

License

EchoVault-CLI is distributed under the terms of the MIT license.

Release files for EchoVault-CLI 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for EchoVault-CLI 0.0.5
File Size Uploaded
echovault_cli-0.0.5.tar.gz 11.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for EchoVault-CLI 0.0.5
File Interpreter ABI Platform
echovault_cli-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 24.7 kB

Release files / echovault_cli-0.0.5.tar.gz

Download URL echovault_cli-0.0.5.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4a752f442a7c5a1b190cfe8fc61697919b3a6168088e477d71eef754afc38028
BLAKE2b-256 checksum
How to use checksums
37f52afa66473b092341c1b8810964459eb29a1060f0ed2e6b40e23e288a0752
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 13, 2026.

Transparency log

Release files / echovault_cli-0.0.5-py3-none-any.whl

Download URL echovault_cli-0.0.5-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4583f04fe4192ebcfa71f509d1058f67014ab49b778db36adf359a85e85599e3
BLAKE2b-256 checksum
How to use checksums
e1fbd9c167e37ac539940609c5e396f842c98bcd244e0edb7a6f796905012f0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

0.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page