{"adoption": {"forks": 34, "observed_at": "2026-09-03T02:15:17.308813+00:00", "stars": 1092}, "canonical_url": "https://ross.abutalabs.com/products/raskrebs-sonar", "card": {"archived": false, "artifact_type": "cli-tool", "description": "CLI tool for inspecting and managing services listening on localhost ports", "domain": ["developer-tools"], "enriched": true, "function": ["cli", "developer-tools", "monitoring", "container-runtime"], "health_score": 100, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["raskrebs/sonar"], "name": "raskrebs/sonar", "platform": ["windows", "cli"], "pushed_at": "2026-09-02T09:29:42+00:00", "repo": "raskrebs/sonar", "stars": 1092, "tags": ["port-scanner", "localhost", "docker-integration", "process-management", "go", "command-line", "containers", "devops", "macos", "linux", "docker"], "topics": ["cli", "developer-tools", "docker", "golang", "linux", "localhost", "macos", "portscanner", "powershell"], "urls": [], "use_cases": ["find out what process is using port 3000", "see which docker container is listening on a localhost port", "kill the process occupying a port", "list all services running on my machine", "tail logs for a dev server by port", "shell into the container behind a port", "figure out why a port is already taken"], "what_it_is": "Sonar is a Go-based CLI tool that shows all services listening on localhost ports, enriched with Docker container names, Compose projects, images, and resource usage. It lets developers kill processes, tail logs, and shell into containers directly by port number.", "when_to_avoid": ["you need remote or network-wide port scanning rather than localhost", "you need a GUI-based port management tool", "you are on a platform without Docker and only need basic lsof functionality"], "when_to_choose": ["you frequently debug port conflicts during local development", "you work with Docker Compose and want port-to-container visibility", "you want a friendlier alternative to lsof/netstat for listening ports"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/raskrebs-sonar", "repo": "raskrebs/sonar", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:17.308813+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:49:19.489147+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7cb4e702b77a98670d7999529d37577144873877574497690f2dfcddc6da403a", "fetched_at": "2026-09-03T02:15:17.308813+00:00", "kind": "readme", "missing": false, "url": "https://github.com/raskrebs/sonar"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 13, "rhythm": 100}, "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": 182, "days_push": 0, "days_rel": 0, "gap_med": 0.0, "n_releases_24m": 21}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}