wax
wax is a Rust CLI for digging through public music discovery signals from Bandcamp and SoundCloud.
Give it a URL and it will detect the platform automatically:
- Bandcamp album URLs use collector overlap
- SoundCloud track URLs use public likers and nearby likes in each liker feed
wax keeps the same entrypoint across providers:
Install
Build and install the binary into Cargo's bin directory:
To install from crates.io:
That usually installs wax to ~/.cargo/bin/wax.
If ~/.cargo/bin is not on your PATH, add:
For a local build without installing:
The binary will be at target/release/wax.
Quick Start
Bandcamp:
SoundCloud:
Inspect the available commands:
Commands
wax dig <url>
Runs the recommendation flow for a supported URL.
Examples:
Useful flags:
--max-collectors <n>: maximum source nodes to sample during discovery--max-depth <n>: reserved crawl-depth flag, currently defaults to1--limit <n>: maximum recommendations to print--sample top|random: keep sources in discovery order or shuffle before truncating--min-overlap <n>: minimum overlap count required for a recommendation--exclude-artist: drop records by the same artist as the seed--exclude-label: drop records on the same label as the seed--tag <tag>: require matching tags on candidate records--sort score|overlap: sort recommendations by score or raw overlap
Provider notes:
- Bandcamp
diguses public collectors and their public libraries - SoundCloud
digcurrently supports track URLs - SoundCloud playlist URLs are not supported for
digyet
wax resolve <url>
Resolves a supported URL and prints canonical seed metadata.
Examples:
wax collectors <album-url>
Lists public collectors discovered for a Bandcamp seed album.
This command is Bandcamp-only.
wax library <fan-url>
Prints albums from a public Bandcamp fan page.
This command is Bandcamp-only.
wax cache stats
Prints the cache directory, entry count, and cache size in bytes.
wax cache clear
Clears the local fetch cache.
Global Flags
These flags are available across commands:
--config <path>: load settings from a TOML config file--cache-dir <path>: override the cache directory--json: print JSON output--csv: print CSV output where supported--user-agent <value>: override the HTTP user agent--rate-limit-ms <n>: delay between requests in milliseconds--concurrency <n>: request concurrency setting--timeout-ms <n>: per-request timeout-v,--verbose: enable debug logging--quiet: only print errors
Output Modes
By default, wax prints readable table output.
Use --json for structured output:
Use --csv for CSV output:
Notes
waxonly uses publicly visible Bandcamp and SoundCloud data- SoundCloud support currently focuses on track resolution and a prototype
digflow - private or unavailable public data is skipped when possible
- repeated runs are faster when the cache is warm
Hacking
Developer-facing notes live in HACKING.md.