{"adoption": {"forks": 95, "observed_at": "2026-08-28T04:03:27.163975+00:00", "stars": 1067}, "canonical_url": "https://ross.abutalabs.com/products/graphenex", "card": {"archived": false, "artifact_type": "framework", "description": "Automated System Hardening Framework", "domain": ["security", "self-hosted"], "enriched": true, "function": ["security", "cli", "configuration-management", "developer-tools"], "health_score": 33, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["grapheneX/grapheneX"], "name": "grapheneX/grapheneX", "platform": ["windows", "python", "cli"], "pushed_at": "2025-03-06T03:34:31+00:00", "repo": "grapheneX/grapheneX", "stars": 1067, "tags": ["system-hardening", "security-automation", "web-interface", "hardening-modules", "server-security", "devops", "automation", "linux", "docker"], "topics": ["hardening", "hardening-commands", "security", "hacktoberfest"], "urls": [], "use_cases": ["automate security hardening of a linux server", "harden windows workstation settings", "secure a web server by disabling unnecessary services", "run hardening presets across firewall, kernel, and user namespaces", "manage custom hardening commands via a web interface", "reduce attack surface by automating configuration changes"], "what_it_is": "grapheneX is an automated system hardening framework that secures Linux and Windows systems by running predefined hardening commands organized into modules and namespaces. It offers an interactive shell and a web interface, supports custom modules and presets, and can be used to harden web servers and applications.", "when_to_avoid": ["you need compliance auditing or reporting rather than hardening execution", "you require hardening for macOS or embedded systems", "you need fine-grained change management or rollback beyond what presets provide"], "when_to_choose": ["you want automated, repeatable system hardening on linux or windows", "you need both CLI and web interfaces for managing hardening tasks", "you want to organize hardening commands into reusable modules and presets"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/graphenex", "repo": "grapheneX/grapheneX", "role": "main", "score": 27}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "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:03:27.163975+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:27.163975+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:10.143943+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8a5714e48e3b84b4a885e3beb5f2d9b30ebda06a4ab8f01bacbcdc11a9d8687a", "fetched_at": "2026-08-28T04:03:27.163975+00:00", "kind": "readme", "missing": false, "url": "https://github.com/grapheneX/grapheneX"}, {"content_hash": "c9745b210bddbda6390df5bb1262c2583a13c1f1037075e2798026c78ab8c605", "fetched_at": "2026-08-29T12:57:15.054003+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/graphenex/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 10, "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": 2718, "days_push": 545, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 27, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}