{"adoption": {"forks": 284, "observed_at": "2026-08-28T04:06:11.989227+00:00", "stars": 2086}, "canonical_url": "https://ross.abutalabs.com/products/nemo_go", "card": {"archived": false, "artifact_type": "application", "description": "Nemo是用来进行自动化信息收集的一个简单平台，通过集成常用的信息收集工具和技术，实现对内网及互联网资产信息的自动收集，提高隐患排查和渗透测试的工作效率。", "domain": ["security", "penetration-testing", "osint", "developer-tools"], "enriched": true, "function": ["security", "osint", "web-scraping", "search-engine", "mcp", "agent-framework", "workflow-automation", "scheduling"], "health_score": 96, "homepage": null, "language": "JavaScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["hanc00l/nemo_go"], "name": "hanc00l/nemo_go", "platform": ["self-hosted", "cli"], "pushed_at": "2026-08-15T12:05:30+00:00", "repo": "hanc00l/nemo_go", "stars": 2086, "tags": ["reconnaissance", "attack-surface-management", "asset-discovery", "subdomain-enumeration", "fingerprinting", "vulnerability-scanning", "nuclei", "distributed-tasks", "pentest-platform", "automation", "linux", "docker", "web-server"], "topics": [], "urls": [], "use_cases": ["automate reconnaissance for penetration tests", "collect subdomains and map external attack surface", "scan internal network assets and open ports", "fingerprint web services and validate vulnerabilities with nuclei", "run distributed scheduled asset discovery tasks", "generate recon reports with LLM APIs", "collaborate with a team on asset management during engagements"], "what_it_is": "Nemo is an automated information-gathering platform for penetration testing that integrates common recon tools (Masscan, Nmap, Subfinder, Httpx, Nuclei, etc.) to collect internal and internet-facing asset data. It provides distributed task execution, asset management with MongoDB storage, fingerprint and PoC validation, team collaboration, and an MCP Server for AI integration.", "when_to_avoid": ["you only need a single lightweight scanner like nmap or subfinder", "you need a compliant vulnerability management product rather than offensive tooling", "you cannot self-host a MongoDB-backed server with workers"], "when_to_choose": ["you need an integrated recon platform instead of chaining tools manually", "you want distributed workers for large-scale asset collection", "you need team collaboration with multi-workspace asset isolation", "you want fingerprint-driven PoC validation and weak-password brute forcing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nemo_go", "repo": "hanc00l/nemo_go", "role": "main", "score": 88}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "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:11.989227+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.989227+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:55:48.244255+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8deb7e0bd82e6a02cf0e27a74bf427d241dc85fb79866aaeeb4dcf11e4df8129", "fetched_at": "2026-08-28T04:06:11.989227+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hanc00l/nemo_go"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 69}, "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": 1861, "days_push": 18, "days_rel": 205, "gap_med": 20.5, "n_releases_24m": 7}, "score": 88, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}