{"adoption": {"forks": 234, "observed_at": "2026-08-28T04:08:37.841181+00:00", "stars": 4164}, "canonical_url": "https://ross.abutalabs.com/products/kubefwd", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Bulk port forwarding Kubernetes services for local development.", "domain": ["developer-tools", "cloud-computing", "networking"], "enriched": true, "function": ["networking", "proxy", "developer-tools", "cli", "terminal-ui", "http-server", "mcp"], "health_score": 98, "homepage": "http://kubefwd.com/", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["txn2/kubefwd"], "name": "txn2/kubefwd", "platform": ["windows", "cli", "go"], "pushed_at": "2026-08-21T18:39:34+00:00", "repo": "txn2/kubefwd", "stars": 4164, "tags": ["kubernetes", "port-forwarding", "local-development", "k8s", "bulk-forwarding", "etc-hosts", "tui", "rest-api", "mcp-server", "multi-cluster", "devops", "containers", "command-line", "macos", "linux", "docker"], "topics": ["kubernetes", "devtools", "developer-tools", "networking", "port-forwarding", "port-forward", "k8s", "kubernetes-namespace", "devops-tools", "devops", "proxy", "kubefwd", "kubernetes-clusters", "api-rest", "mcp-server"], "urls": [], "use_cases": ["forward all services in a Kubernetes namespace to my laptop for local development", "access cluster services by their in-cluster hostnames like db:5432 without changing config", "avoid port conflicts when forwarding many services that use the same port", "keep local development connections alive across pod restarts and rescheduling", "script or automate port forwarding via a REST API", "let an AI assistant manage Kubernetes port forwards through MCP"], "what_it_is": "kubefwd is a Go CLI utility that bulk port-forwards Kubernetes services to a local workstation, assigning each service a unique 127.x.x.x loopback IP and updating /etc/hosts so in-cluster connection strings work unchanged. It offers an interactive TUI, a REST API, and an MCP server, with auto-reconnect, multi-namespace and multi-cluster support.", "when_to_avoid": ["you only need to forward a single pod or service occasionally (kubectl port-forward suffices)", "you cannot run with sudo/admin privileges on your workstation", "you need to expose local services into the cluster rather than the reverse", "you are on a network where modifying /etc/hosts or loopback interfaces is restricted"], "when_to_choose": ["you develop locally against services running in a Kubernetes dev cluster", "you need many services forwarded simultaneously without port conflicts", "you want zero environment-specific connection configuration in your code", "you need automatic reconnection as pods churn", "you want TUI, API, or AI-assistant-driven control of forwards"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/kubefwd", "repo": "txn2/kubefwd", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "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:08:37.841181+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:37.841181+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:47.698347+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "539330b23982d0f0316752967a33ec329b2c5b2cc00f571416b8256296be72c0", "fetched_at": "2026-08-28T04:08:37.841181+00:00", "kind": "readme", "missing": false, "url": "https://github.com/txn2/kubefwd"}, {"content_hash": "43fda0ee65622773d79cac3102279ece2406cc2e68eafc14ecd0ebf0b6e9c0f2", "fetched_at": "2026-08-29T09:13:29.427408+00:00", "kind": "homepage", "missing": false, "url": "http://kubefwd.com/"}, {"content_hash": "afa83aac3a20a13eeae45512bedc09ca686f93852b23e0b6264c1b43d12dc8d6", "fetched_at": "2026-08-29T09:13:29.433069+00:00", "kind": "site_page", "missing": false, "url": "https://kubefwd.com/getting-started"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 89}, "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": 2950, "days_push": 12, "days_rel": 75, "gap_med": 1.0, "n_releases_24m": 21}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}