{"adoption": {"forks": 104, "observed_at": "2026-08-28T04:08:15.162569+00:00", "stars": 3709}, "canonical_url": "https://ross.abutalabs.com/products/panicparse", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Crash your app in style (Golang)", "domain": ["developer-tools", "performance"], "enriched": true, "function": ["developer-tools", "logging", "error-handling", "cli", "http-server", "middleware"], "health_score": 85, "homepage": "https://maruel.ca", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["maruel/panicparse"], "name": "maruel/panicparse", "platform": ["go", "cli", "cross-platform", "windows"], "pushed_at": "2026-07-13T15:57:10+00:00", "repo": "maruel/panicparse", "stars": 3709, "tags": ["stack-trace-parsing", "panic-analysis", "goroutine-deduplication", "crash-debugging", "deadlock-diagnosis", "race-detector", "pprof-alternative", "html-export", "http-middleware", "go-runtime", "command-line", "debugging", "concurrency", "linux", "macos"], "topics": ["go", "stack-traces", "panic", "crash"], "urls": [], "use_cases": ["make Go panic stack traces readable and compact", "deduplicate hundreds of similar goroutine stacks after a server crash", "debug deadlocks in heavily parallelized Go processes", "parse race detector output from go test -race", "pipe go test output through pp to catch panics automatically", "serve a readable live snapshot of goroutines instead of net/http/pprof", "export crash dumps as HTML for sharing"], "what_it_is": "panicparse is a Go tool and library that parses Go panic stack traces, densifies and deduplicates goroutines with similar stacks, and renders more compact, readable crash output. It ships as the `pp` CLI for piping crash dumps, plus a Go package with HTTP handler middleware and a web snapshot server.", "when_to_avoid": ["your project is not written in Go", "you need a general-purpose debugger or profiler rather than panic trace formatting", "you need to parse stack traces from languages other than Go", "you want a GUI-based crash analysis tool"], "when_to_choose": ["you debug Go crashes or deadlocks with many goroutines", "you want a CLI you can pipe stderr through to prettify panics", "you want a library to embed panic parsing or an HTTP middleware in a Go service", "you need cross-platform support (Windows, macOS, Linux) with Go modules"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/panicparse", "repo": "maruel/panicparse", "role": "main", "score": 64}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "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:08:15.162569+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.162569+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:30:56.148298+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e53a5675d682b05d3d3bd82898c2dc7963aeb3dfbef99beb032c651ef1a0e0fe", "fetched_at": "2026-08-28T04:08:15.162569+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maruel/panicparse"}, {"content_hash": "4d226c68873e04850607dc80560abc5dd863de6d2c22cff4df8a3a7a781b4c78", "fetched_at": "2026-08-29T09:24:24.544729+00:00", "kind": "homepage", "missing": false, "url": "https://maruel.ca"}, {"content_hash": "db9f79f3770a1106dd99602e784def8834f4c5c99c7466d47d112cd61798d6ca", "fetched_at": "2026-08-29T09:24:24.547296+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/page/about"}, {"content_hash": "8acfc21669b65e29a1563e82427be4e2eaf6a864365a7568e446239f823f9806", "fetched_at": "2026-08-29T09:24:24.548957+00:00", "kind": "site_page", "missing": false, "url": "https://maruel.ca/post/2016/tinyssh-1"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 8}, "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": 4231, "days_push": 51, "days_rel": 643, "gap_med": null, "n_releases_24m": 1}, "score": 64, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}