maintenance
updating
Section titled “updating”desktop app
Section titled “desktop app”- download new release for your platform
in-app/over-the-wire updates coming soon(ish)!
- download new binary from releases
- replace old binary
- restart server
database migrations run automatically on startup.
database health
Section titled “database health”check status
Section titled “check status”freqhole database infoshows:
- database size
- table counts (songs, albums, etc.)
- blob storage usage
vacuum
Section titled “vacuum”SQLite databases grow fragmented over time. vacuum reclaims space:
freqhole maintenance vacuumrun occasionally (monthly or after large deletions).
integrity check
Section titled “integrity check”verify database isn’t corrupted:
freqhole maintenance integrity-checkrun if you experience crashes or suspect disk issues.
cleaning up orphans
Section titled “cleaning up orphans”what are orphans?
Section titled “what are orphans?”- missing files: database entries for files that no longer exist
- orphan blobs: blob data not referenced by any entity
- orphan images: album art with no album
finding orphans
Section titled “finding orphans”freqhole maintenance find-orphansshows summary without modifying anything.
cleaning orphans
Section titled “cleaning orphans”freqhole maintenance cleanup-orphansremoves unreferenced data. run find-orphans first to see what will be deleted.
backup
Section titled “backup”database backup
Section titled “database backup”the SQLite database contains all your metadata, accounts, and settings:
cd /path/to/your/freqhole-install/cp data/grimoire.db data/grimoire-backup.dbor use SQLite’s backup command:
cd /path/to/your/freqhole-install/sqlite3 data/grimoire.db ".backup data/grimoire-backup.db"blob backup
Section titled “blob backup”cover art and other blobs are in data/blobs/. copy this directory to back up artwork.
data backup
Section titled “data backup”cd /path/to/your/freqhole-install/tar -czf freqhole-backup.tar.gz data/restore
Section titled “restore”stop server, replace data directory, start server.
clearing caches
Section titled “clearing caches”search index
Section titled “search index”if search results seem stale:
freqhole maintenance rebuild-search-indexcover art cache
Section titled “cover art cache”thumbnail regeneration (rarely needed):
freqhole maintenance regenerate-thumbnailslog location
Section titled “log location”depends on how you run freqhole:
- CLI: stderr (redirect to file if needed)
- desktop app: application logs directory
log levels
Section titled “log levels”set in environment:
RUST_LOG=info freqhole serveRUST_LOG=debug freqhole serve # verboseRUST_LOG=warn freqhole serve # quietperformance tuning
Section titled “performance tuning”for large libraries (10k+ songs)
Section titled “for large libraries (10k+ songs)”- use NVMe or SSD for data directory
- increase OS file descriptor limits
- consider dedicated machine (not shared server)
for many concurrent users
Section titled “for many concurrent users”- NVMe or SSD essential
- sqlite WAL mode (default) handles contention mostly ok, but postgres would be better (node: there’s no pg adaptor right now)
settings
Section titled “settings”most tuning is automatic. SQLite is configured with:
- WAL mode (write-ahead logging)
- 100MB cache by default
- proper locking for concurrency
troubleshooting
Section titled “troubleshooting”server won’t start
Section titled “server won’t start”- check config file exists and is valid TOML
- check data directory writable
- check port not in use
- run
freqhole serve --verbosefor details
database locked
Section titled “database locked”SQLite can’t handle too many concurrent writes. freqhole handles this automatically, but external tools accessing the database can cause issues.
out of disk space
Section titled “out of disk space”- vacuum database:
freqhole maintenance vacuum - clean orphan blobs:
freqhole maintenance cleanup-orphans - delete old backups
- add disk space
can’t connect via p2p
Section titled “can’t connect via p2p”- make sure your router has UPnP universal plug and play enabled
audio stutters / xruns (linux)
Section titled “audio stutters / xruns (linux)”if playback in the desktop app crackles, stutters, or drops samples on linux — especially under load, in a vm, or on a low-power board (raspberry pi, etc.) — bump the cpal output buffer:
[audio]linux_buffer_frames = 4096 # or 8192 if 4096 still glitchesdefault is 2048 (~43ms latency @ 48kHz). doubling roughly doubles latency but adds proportional headroom against pipewire/pulseaudio scheduler jitter. restart the app for the change to take effect.
see the audio config section for details.