{"adoption": {"forks": 88, "observed_at": "2026-08-28T04:06:02.833669+00:00", "stars": 1987}, "canonical_url": "https://ross.abutalabs.com/products/servy", "card": {"archived": false, "artifact_type": "application", "description": "Enterprise-Grade Windows Service Wrapper with Real-Time Monitoring", "domain": ["windows", "developer-tools", "self-hosted"], "enriched": true, "function": ["monitoring", "configuration-management", "cli", "gui", "logging", "alerting"], "health_score": 100, "homepage": "https://servy-win.github.io", "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["aelassas/servy"], "name": "aelassas/servy", "platform": ["windows", "cli", "dotnet"], "pushed_at": "2026-08-26T19:14:34+00:00", "repo": "aelassas/servy", "stars": 1987, "tags": ["windows-service-wrapper", "service-manager", "watchdog", "nssm-alternative", "winsw-alternative", "process-monitoring", "powershell-module", "auto-restart", "devops", "automation", "desktop"], "topics": ["servy", "service-wrapper", "service-manager", "watchdog", "nssm", "winsw", "windows-service"], "urls": [], "use_cases": ["run a node.js app as a windows service", "keep a python script running in the background after reboot", "auto-restart a crashed process on windows", "nssm alternative for wrapping apps as services", "monitor cpu and memory of a windows service", "manage windows services via powershell or cli", "run a background worker before user logon"], "what_it_is": "Servy is an enterprise-grade Windows service wrapper that runs any application (Node.js, Python, .NET, Java, etc.) as a native Windows service with automatic restart, health checks, and real-time CPU/RAM and stdout/stderr monitoring. It ships as a desktop GUI app, a CLI, and a PowerShell module for managing services interactively or in CI/CD pipelines.", "when_to_avoid": ["you need a service wrapper for Linux (systemd) or macOS (launchd)", "you only target non-Windows platforms", "you need cross-platform containerized service management rather than Windows services"], "when_to_choose": ["you need to run any executable as a native Windows service without rewriting it", "you want automatic recovery from crashes, hangs, or stops with health checks and alerts", "you need GUI, CLI, and PowerShell interfaces for scripting and CI/CD deployment", "you want real-time monitoring of CPU/RAM and stdout/stderr streaming", "you need enterprise features like gMSA/AD accounts, lifecycle hooks, and log rotation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/servy", "repo": "aelassas/servy", "role": "main", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "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:02.833669+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:02.833669+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:02:59.834126+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1eb60db39f5fe7cdbcbdbc55341b183e96b633f6fc281632ddecd62741525aeb", "fetched_at": "2026-08-28T04:06:02.833669+00:00", "kind": "readme", "missing": false, "url": "https://github.com/aelassas/servy"}, {"content_hash": "ba9f29474e93308518c72da262221591447f16c346cce81823b9e1e654d2df22", "fetched_at": "2026-08-29T10:42:43.492744+00:00", "kind": "homepage", "missing": false, "url": "https://servy-win.github.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 28, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 396, "days_push": 7, "days_rel": 9, "gap_med": 1.5, "n_releases_24m": 89}, "score": 81, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}