{"adoption": {"forks": 473, "observed_at": "2026-08-28T04:11:09.886233+00:00", "stars": 15453}, "canonical_url": "https://ross.abutalabs.com/products/monolith", "card": {"archived": false, "artifact_type": "cli-tool", "description": "⬛️ CLI tool and library for saving complete web pages as a single HTML file", "domain": ["web-development", "developer-tools", "files"], "enriched": true, "function": ["http-client", "cli", "developer-tools"], "health_score": 82, "homepage": "https://crates.io/crates/monolith", "language": "Rust", "license": "CC0-1.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Y2Z/monolith"], "name": "Y2Z/monolith", "platform": ["windows", "cross-platform", "cli", "rust"], "pushed_at": "2026-05-25T19:56:03+00:00", "repo": "Y2Z/monolith", "stars": 15453, "tags": ["web-archiving", "single-file-html", "offline-browsing", "data-hoarding", "page-saver", "command-line", "linux", "macos"], "topics": ["save-the-internet", "procrastination", "its-mine", "no-more-404", "tab-rehab", "e-hoarding", "make-the-internet-great-again", "come-and-take-it"], "urls": [], "use_cases": ["save a complete web page as a single HTML file for offline reading", "archive web pages so they never 404", "replace dozens of open browser tabs with local HTML files", "bundle a page with all its CSS, images, and JS into one shareable document", "scrape and snapshot pages without a network connection later", "back up articles and documentation before they disappear"], "what_it_is": "Monolith is a Rust CLI tool and library that saves complete web pages as a single self-contained HTML file, embedding CSS, images, and JavaScript assets as data URLs. It enables offline rendering of pages exactly as they appeared online, making it popular for archiving and replacing open browser tabs.", "when_to_avoid": ["you need to archive entire websites with link structure preserved rather than single pages", "you need a browser extension or GUI-based saving workflow", "you need dynamic/JS-rendered content captured exactly as executed in a browser", "you need MHTML or PDF output formats"], "when_to_choose": ["you need fully self-contained single-file page archives that render offline", "you want a fast, cross-platform CLI alternative to 'Save page as' or wget -mpk", "you prefer a Rust tool installable via cargo, brew, choco, snap, and more", "you want to embed assets as data URLs rather than a folder of files"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/monolith", "repo": "Y2Z/monolith", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "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:11:09.886233+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.886233+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:05:50.926452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "809aa8d503dd4a476f53a5dd3bc1872e3753cbfc6a363fc2c72a98936bbd76ad", "fetched_at": "2026-08-28T04:11:09.886233+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y2Z/monolith"}, {"content_hash": "81bf24d22cc6567d859b242baa5ef3e82b3cd823b6103972c8ac98718ce54c96", "fetched_at": "2026-08-29T08:03:57.660242+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/monolith"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 84, "longevity": 100, "rhythm": 40}, "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": 3481, "days_push": 100, "days_rel": 521, "gap_med": 9.0, "n_releases_24m": 5}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}