{"adoption": {"forks": 407, "observed_at": "2026-08-28T04:04:33.233628+00:00", "stars": 1376}, "canonical_url": "https://ross.abutalabs.com/products/opam", "card": {"archived": false, "artifact_type": "cli-tool", "description": "opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.", "domain": ["programming-languages", "developer-tools", "version-control"], "enriched": true, "function": ["package-manager", "build-tool", "cli", "developer-tools"], "health_score": 100, "homepage": "https://opam.ocaml.org", "language": "OCaml", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["ocaml/opam"], "name": "ocaml/opam", "platform": ["windows", "bsd", "cross-platform", "cli"], "pushed_at": "2026-08-25T15:29:44+00:00", "repo": "ocaml/opam", "stars": 1376, "tags": ["ocaml", "opam", "compiler-switches", "source-based-package-manager", "dependency-solver", "command-line", "linux", "macos"], "topics": ["ocaml", "opam", "package-manager", "git"], "urls": [], "use_cases": ["install ocaml compiler and libraries", "manage multiple ocaml compiler versions side by side", "create isolated per-project ocaml environments", "pin and develop ocaml packages from git", "resolve ocaml package dependency constraints", "set up reproducible ocaml build environments", "publish ocaml packages to the opam repository"], "what_it_is": "opam is the source-based package manager for OCaml, supporting multiple simultaneous compiler installations via switches, flexible package constraints, and a Git-friendly workflow. It is the standard tool for installing OCaml compilers, libraries, and managing per-project environments.", "when_to_avoid": ["you are working in a language other than OCaml", "you want prebuilt binary packages rather than source builds", "you need a general-purpose system package manager"], "when_to_choose": ["you are developing in OCaml and need to install compilers and libraries", "you need multiple OCaml compiler versions or isolated switches per project", "you want a Git-friendly workflow for hacking on OCaml packages", "you need a mature dependency solver with flexible version constraints"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/opam", "repo": "ocaml/opam", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "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:04:33.233628+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.233628+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:31.101574+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "899fa5489dc37e9409dfc4190bfb708c3009cd8e425bc060ca242bbfc3a1c96f", "fetched_at": "2026-08-28T04:04:33.233628+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ocaml/opam"}, {"content_hash": "ea9720e4c79c9950c7509f983cc5c904e8233d4e4c02b0b6279a1b8d6ab65daf", "fetched_at": "2026-08-29T11:56:46.060369+00:00", "kind": "homepage", "missing": false, "url": "https://opam.ocaml.org"}, {"content_hash": "c36d7c8535b7052241a957d77d693eee3dd8f18366f4b95fe658fc403f572c78", "fetched_at": "2026-08-29T11:56:46.062958+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/Install.html"}, {"content_hash": "28a578c6a18c6d1aa612c001ffe16a5d9c8fdf1ee8e205a937ae8916df5b0a7c", "fetched_at": "2026-08-29T11:56:46.067599+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/about.html"}, {"content_hash": "8d8fc6c5e09e82471fd688eb386000fc6f6d6cf8a821b68527570c7c71898b1c", "fetched_at": "2026-08-29T11:56:46.065082+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/doc/FAQ.html"}, {"content_hash": "0aa69ade5b527db187aa3c2a1597a692763894dae66ceda43bd2f314c4decaf0", "fetched_at": "2026-08-29T11:56:46.069404+00:00", "kind": "site_page", "missing": false, "url": "https://opam.ocaml.org/blog/opam-2-5-0-rc1-publish"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 68}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5311, "days_push": 8, "days_rel": 55, "gap_med": 127, "n_releases_24m": 6}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}