{"adoption": {"forks": 183, "observed_at": "2026-08-28T04:06:57.518193+00:00", "stars": 2513}, "canonical_url": "https://ross.abutalabs.com/products/sup", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Super simple deployment tool - think of it like 'make' for a network of servers", "domain": ["developer-tools"], "enriched": true, "function": ["deployment", "configuration-management", "cli", "developer-tools"], "health_score": 20, "homepage": "https://pressly.github.io/sup", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["pressly/sup"], "name": "pressly/sup", "platform": ["windows", "cross-platform", "cli", "go"], "pushed_at": "2023-12-24T11:13:37+00:00", "repo": "pressly/sup", "stars": 2513, "tags": ["remote-execution", "parallel-ssh", "yaml-config", "rolling-update", "server-fleet", "deployment-tool", "devops", "automation", "command-line", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["run commands on multiple servers in parallel", "restart docker containers across a fleet of hosts", "rolling update deployments with serial execution", "tail logs from all production servers at once", "build an image on one host and distribute it to all servers", "fetch dynamic host lists from an inventory endpoint", "simple make-like remote task runner over ssh"], "what_it_is": "Stack Up (sup) is a simple deployment tool written in Go that runs defined shell commands on multiple hosts in parallel, configured via a YAML Supfile. It supports host networks, serial (rolling) execution, once-only commands, local commands, and dynamic host inventories.", "when_to_avoid": ["you need templating, idempotent modules, or complex orchestration like Ansible", "you need full CI/CD pipelines rather than remote command execution", "you require agent-based or container-native deployment tooling", "the project is in maintenance mode with infrequent releases"], "when_to_choose": ["you want a lightweight, single-binary alternative to Ansible or Fabric", "you need parallel or throttled (serial) command execution across server groups", "your deployment is shell-command based and YAML config is enough", "you prefer a make-style tool for a network of servers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sup", "repo": "pressly/sup", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "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:06:57.518193+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:57.518193+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:26:18.857128+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "43c1db4214ff57e130e1557301662991924e56d77bf6fa3f388d2cb88d81f76b", "fetched_at": "2026-08-28T04:06:57.518193+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pressly/sup"}, {"content_hash": "ea44e756c31f0afece3077f9d6d3f6c78bf628269313c9c77bf21cf9da3ae75b", "fetched_at": "2026-08-29T10:08:29.037312+00:00", "kind": "homepage", "missing": false, "url": "https://pressly.github.io/sup"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 4209, "days_push": 983, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}