{"adoption": {"forks": 295, "observed_at": "2026-08-28T04:09:42.880286+00:00", "stars": 6370}, "canonical_url": "https://ross.abutalabs.com/products/cava", "card": {"archived": false, "artifact_type": "application", "description": "Cross-platform Audio Visualizer", "domain": ["media", "cross-platform", "developer-tools"], "enriched": true, "function": ["audio-processing", "gui", "terminal-ui", "cli"], "health_score": 98, "homepage": null, "language": "C", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["karlstav/cava"], "name": "karlstav/cava", "platform": ["windows", "bsd", "cli", "cross-platform"], "pushed_at": "2026-08-18T18:33:11+00:00", "repo": "karlstav/cava", "stars": 6370, "tags": ["audio-visualizer", "spectrum-analyzer", "sdl2", "pulseaudio", "pipewire", "alsa", "ncurses", "fftw", "glsl-shaders", "terminal", "audio", "linux", "macos"], "topics": ["alsa", "audio-visualizer", "freebsd", "glsl-shaders", "linux", "macos", "ncurses", "portaudio", "pulseaudio", "sdl2", "sndio", "windows", "pipewire"], "urls": [], "use_cases": ["visualize music playing on my linux desktop", "terminal audio spectrum visualizer", "show a bar visualizer for pulseaudio output", "render audio spectrum with sdl and shaders", "run an audio visualizer over ssh", "embed a spectrum analyzer in my own app"], "what_it_is": "CAVA is a cross-platform bar spectrum audio visualizer that renders real-time frequency visualizations in the terminal or in an SDL desktop window. It captures audio from many backends (PulseAudio, PipeWire, ALSA, JACK, sndio, Core Audio, etc.) and supports GLSL shaders, ncurses output, and a cavacore library for embedding.", "when_to_avoid": ["you need scientifically accurate spectral analysis", "you need a visualizer for a web or mobile app", "you only need offline audio file analysis rather than live capture"], "when_to_choose": ["you want an aesthetic, responsive real-time spectrum visualizer on Linux, macOS, Windows, or FreeBSD", "you need terminal-based visualization over ssh or in dumb terminals", "you want flexible audio capture backends and GLSL shader customization"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cava", "repo": "karlstav/cava", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:42.880286+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:45:12.751300+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2944eee47b0aeaf1028645f1cd8be98d16094962b3baba5017c1b4e233eeab98", "fetched_at": "2026-08-28T04:09:42.880286+00:00", "kind": "readme", "missing": false, "url": "https://github.com/karlstav/cava"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 64}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4553, "days_push": 15, "days_rel": 81, "gap_med": 137.5, "n_releases_24m": 5}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}