Repository navigation
soundcli finally puts the cli in soundcli. In 1.6.0 it downloads without the dashboard, answers to scripts, and keeps your library current by itself.
Headless downloads: sndcli add <link> downloads a song, a playlist, your likes, or an artist's uploads and exits. An open soundcli takes the links instead, and opening one mid-run carries the downloads on.
Made for scripts: --json prints one event per line with nothing else on stdout, and the exit code says how it ended: done, worth a retry, wrong command, or stopped early with its place saved.
Watch a link: sndcli watch notes what a link holds today, and sndcli sync downloads only what appears after. --into files it in a folder of your own. Put sync on a schedule and the library keeps up by itself.
Self-maintaining: songs gone for good are remembered and left alone, a run that is cut off resumes where it stopped, long YouTube playlists pace themselves across runs, and yt-dlp follows its nightly builds.
One song, one id: songs and accounts are known by id, never by name. Songs that share a name each keep their own file, and renaming your account no longer downloads your library again.
A calmer Downloads screen: failed and unavailable are counted apart, failures group by reason in plain words, the screen says when it is retrying or pacing YouTube, and the source picker comes back by itself when a batch ends. F retries everything.
Settings and shuffle, tidied: Format and Convert are one setting that confirms what it saved, and the shuffle row stays during a search, worded the same in every list.
npx sndcli