{"adoption": {"forks": 206, "observed_at": "2026-08-28T04:07:15.986896+00:00", "stars": 2729}, "canonical_url": "https://ross.abutalabs.com/products/docker-socket-proxy", "card": {"archived": false, "artifact_type": "service", "description": "Proxy over your Docker socket to restrict which requests it accepts", "domain": ["security", "self-hosted"], "enriched": true, "function": ["proxy", "security", "api-gateway", "http-server"], "health_score": 97, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Tecnativa/docker-socket-proxy"], "name": "Tecnativa/docker-socket-proxy", "platform": ["self-hosted"], "pushed_at": "2026-07-27T09:28:09+00:00", "repo": "Tecnativa/docker-socket-proxy", "stars": 2729, "tags": ["docker-socket", "haproxy", "container-security", "api-restriction", "containers", "devops", "docker", "linux"], "topics": ["docker", "hacktoberfest"], "urls": [], "use_cases": ["let CI or monitoring containers react to Docker events without giving them root on the host", "expose a restricted Docker API to Traefik or Portainer over a private network", "block destructive Docker API endpoints like container exec or image push", "replace mounting /var/run/docker.sock directly into untrusted containers", "secure Docker socket access in a swarm cluster"], "what_it_is": "A security-enhanced HAProxy-based proxy that sits in front of the Docker socket and restricts which Docker API requests are allowed. It returns HTTP 403 for API sections blocked via environment variables, limiting the blast radius of services that need partial Docker access.", "when_to_avoid": ["you need TLS-encrypted Docker API access, since this proxy intentionally speaks plain HTTP", "you can avoid socket access entirely by using a less privileged integration", "you need fine-grained per-request authorization beyond API-section blocking"], "when_to_choose": ["you must give a container access to the Docker socket but want to whitelist only the API sections it needs", "you want a simple, battle-tested HAProxy-based socket guard with no TLS complexity"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/docker-socket-proxy", "repo": "Tecnativa/docker-socket-proxy", "role": "main", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "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:07:15.986896+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:15.986896+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:14:41.894955+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bbec5e83274dc16350462f78b6f5806656e9545f8c82cd226f1091f144cf8cdb", "fetched_at": "2026-08-28T04:07:15.986896+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tecnativa/docker-socket-proxy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 100, "rhythm": 71}, "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": 3444, "days_push": 37, "days_rel": 37, "gap_med": 162.5, "n_releases_24m": 5}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}