Project · code
suno-web
A library browser for a local archive of Suno music.
- Kind
- code
- Tags
- music, go, homelab
suno-web browses a local archive of music generated with Suno: about 19,000 clips, each a WAV file, a cover image and a JSON file of metadata. It is one Go binary using only the standard library, with the interface embedded. It needs no database, build step or outside service, and it never writes to the archive. Downloading from Suno is a separate program’s job.
Index
The archive lives on a NAS with a 1.6 GHz Opteron and 7.8 GB of memory, 5 GB of which is the ZFS cache. Both facts shaped the index.
It reads every clip’s own meta.json and ignores the downloader’s combined index, because a clip’s file is written once and never changes, while the combined index is rewritten after every download. The parsed result is cached to disk compressed, so a restart does not parse 117 MB of JSON again, and rescans every five minutes pick up only what is new.
In memory it keeps one lowercased search string per clip, about 1.5 KB, and none of the raw metadata. A larger index would push the NAS’s file cache out of memory.
Playlists are the only thing it writes. They go in a separate directory, one JSON file each, written to a temporary file and renamed.
Lineage
The part that makes it more than a file list is the family tree of each clip: covers, edits, extensions, stems and personas. How that data is shaped is in How Suno clips relate to each other.
Code
- suno-web Library browser for a local Suno archive: search, metadata filters, persona browsing, the clip derivation graph, playlists and playback
- jupiter-os Project
- Aquila Project
- Linux companion agent Project