{"adoption": {"forks": 66, "observed_at": "2026-08-28T04:03:24.786899+00:00", "stars": 1057}, "canonical_url": "https://ross.abutalabs.com/products/morph", "card": {"archived": false, "artifact_type": "cli-tool", "description": "NixOS deployment tool", "domain": ["infrastructure-as-code", "self-hosted"], "enriched": true, "function": ["deployment", "infrastructure-as-code", "configuration-management", "cli"], "health_score": 85, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["DBCDK/morph"], "name": "DBCDK/morph", "platform": ["cli"], "pushed_at": "2026-07-20T07:42:21+00:00", "repo": "DBCDK/morph", "stars": 1057, "tags": ["nixos", "nix", "multi-host-deployment", "health-checks", "stateless", "ssh", "devops", "automation", "linux"], "topics": ["nix", "nixos", "devops", "deployment", "renovate-enabled", "platform"], "urls": [], "use_cases": ["deploy nixos configurations to multiple servers", "roll out nixos updates with health checks", "push nix store closures to remote hosts over ssh", "run health checks after nixos deployment", "upload secrets to nixos hosts", "execute commands across a fleet of nixos machines", "dry-run nixos configuration changes before deploying"], "what_it_is": "Morph is a CLI tool for managing and deploying NixOS host configurations, acting as a wrapper around nix-build, nix copy, and switch-to-configuration. It supports building, pushing, and activating configurations across multiple hosts with health checks and no persistent state.", "when_to_avoid": ["you deploy non-NixOS Linux servers", "you want prebuilt binaries without a nix setup", "you need a full configuration management system like Ansible or Terraform"], "when_to_choose": ["you manage multiple NixOS hosts and want declarative multi-host deployments", "you want a stateless deployment tool built on plain nix tooling", "you need health checks to make rolling updates safer"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/morph", "repo": "DBCDK/morph", "role": "main", "score": 65}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "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:24.786899+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:24.786899+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:57:54.397840+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "52f1d58d5dc161fb4efb74b13e2ff70642c7c0aeb01ad7224d5144f49c943dfa", "fetched_at": "2026-08-28T04:03:24.786899+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DBCDK/morph"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2900, "days_push": 44, "days_rel": 679, "gap_med": null, "n_releases_24m": 1}, "score": 65, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}