{"adoption": {"forks": 657, "observed_at": "2026-08-28T04:11:05.304355+00:00", "stars": 14009}, "canonical_url": "https://ross.abutalabs.com/products/opensnitch", "card": {"archived": false, "artifact_type": "application", "description": "OpenSnitch is a GNU/Linux interactive application firewall inspired by Little Snitch.", "domain": ["security", "networking", "privacy", "developer-tools"], "enriched": true, "function": ["security", "networking", "monitoring", "gui"], "health_score": 93, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["evilsocket/opensnitch"], "name": "evilsocket/opensnitch", "platform": ["self-hosted"], "pushed_at": "2026-07-26T23:34:20+00:00", "repo": "evilsocket/opensnitch", "stars": 14009, "tags": ["application-firewall", "outbound-filtering", "little-snitch-alternative", "nftables", "interactive-firewall", "linux", "desktop"], "topics": ["application-firewall", "firewall", "linux", "networking", "security", "data-breach"], "urls": [], "use_cases": ["block an app from phoning home on linux", "interactive outbound connection firewall like little snitch", "block ads and trackers system wide", "monitor which applications make network connections", "manage firewall rules across multiple linux machines", "integrate application firewall events into a SIEM"], "what_it_is": "OpenSnitch is a GNU/Linux interactive application firewall inspired by Little Snitch, intercepting and filtering outbound connections per application. It includes a GUI for managing rules, blocking ads/trackers/malware domains system-wide, configuring nftables, and managing multiple nodes centrally.", "when_to_avoid": ["you need a firewall on macOS or Windows", "you only need simple inbound port filtering without application awareness", "you cannot run a daemon with root privileges"], "when_to_choose": ["you run GNU/Linux and want per-application outbound traffic control with prompts", "you want a GUI to manage nftables and blocklists system-wide", "you need centralized management of firewall rules across several hosts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/opensnitch", "repo": "evilsocket/opensnitch", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "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:05.304355+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:05.304355+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:12:52.818897+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d1220365a06b3a0827fca3bb6f131792daaebb62a70273cf28a2e7dc73493e5", "fetched_at": "2026-08-28T04:11:05.304355+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/opensnitch"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 49}, "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": 3426, "days_push": 38, "days_rel": 262, "gap_med": 57, "n_releases_24m": 6}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}