{"adoption": {"forks": 167, "observed_at": "2026-08-28T04:04:50.150229+00:00", "stars": 1475}, "canonical_url": "https://ross.abutalabs.com/products/nohost", "card": {"archived": false, "artifact_type": "service", "description": "基于 Whistle 实现的多账号多环境远程配置及抓包调试平台", "domain": ["developer-tools", "web-development", "networking", "self-hosted"], "enriched": true, "function": ["http-server", "proxy", "developer-tools", "middleware", "plugin-system", "webhook"], "health_score": 20, "homepage": "https://nohost.pro", "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["Tencent/nohost"], "name": "Tencent/nohost", "platform": ["self-hosted", "cli", "cross-platform"], "pushed_at": "2025-01-09T03:12:56+00:00", "repo": "Tencent/nohost", "stars": 1475, "tags": ["http-debugging", "packet-capture", "proxy-server", "environment-management", "whistle", "multi-user", "traffic-interception", "mock-server", "debugging", "nodejs", "web-server"], "topics": [], "urls": [], "use_cases": ["capture and inspect HTTP/HTTPS traffic from browsers and mobile devices through a shared proxy", "share backend/frontend environment configurations across a team without local setup", "remotely debug requests on phones via a domain-based proxy", "save and replay historical capture sessions and environment configs", "integrate environment switching into CI or release systems via its API", "extend debugging capabilities with Whistle plugins like inspect and autosave"], "what_it_is": "Nohost is a multi-user, multi-environment remote configuration and HTTP packet-capture debugging platform built on top of Whistle. It is designed to be deployed on a shared server so a whole team can debug requests, share environment configs, and inspect HTTPS traffic without each person configuring environments locally.", "when_to_avoid": ["you only need simple local HTTP debugging for one person (plain Whistle or browser devtools suffice)", "you cannot deploy a dedicated server with a domain and TLS certificates", "you need a lightweight proxy without a web admin UI or multi-user accounts"], "when_to_choose": ["a team needs a shared remote debugging proxy for web and mobile development", "you want Whistle's rule-based traffic manipulation with multi-account support", "you need to switch between multiple backend environments without reconfiguring each developer's machine", "you want to persist and share captured request data via links"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nohost", "repo": "Tencent/nohost", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "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:04:50.150229+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:50.150229+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:34:30.122844+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "423394398c90178c8494a587b8ee8c27b3d3278eca767439129c5b6d4bcc1d0e", "fetched_at": "2026-08-28T04:04:50.150229+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tencent/nohost"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2474, "days_push": 601, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}