{"adoption": {"forks": 1231, "observed_at": "2026-08-28T04:10:28.805177+00:00", "stars": 9189}, "canonical_url": "https://ross.abutalabs.com/products/pwnagotchi", "card": {"archived": false, "artifact_type": "application", "description": "(⌐■_■) - Deep Reinforcement Learning instrumenting bettercap for WiFi pwning.", "domain": ["security", "penetration-testing", "machine-learning", "hardware", "networking"], "enriched": true, "function": ["machine-learning", "reinforcement-learning", "security", "penetration-testing", "agent-framework"], "health_score": 79, "homepage": "https://pwnagotchi.ai/", "language": "Python", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["evilsocket/pwnagotchi"], "name": "evilsocket/pwnagotchi", "platform": ["python", "embedded", "iot"], "pushed_at": "2026-08-19T09:02:11+00:00", "repo": "evilsocket/pwnagotchi", "stars": 9189, "tags": ["wifi", "wpa-handshake", "bettercap", "raspberry-pi", "a2c", "hashcat", "e-ink-display", "hacking", "linux"], "topics": ["ai", "deep-reinforcement-learning", "wpa-psk", "handshakes", "bettercap", "deep-learning", "deep-neural-network"], "urls": [], "use_cases": ["capture WPA handshakes and PMKIDs for offline cracking with hashcat", "learn reinforcement learning by deploying an AI agent in a real environment", "build a portable WiFi auditing device on a Raspberry Pi Zero W", "automate WiFi reconnaissance and deauthentication attacks", "extend a hacking gadget with a plugin system", "monitor nearby WiFi access points and client stations"], "what_it_is": "Pwnagotchi is an A2C deep reinforcement learning agent built on bettercap that learns from its surrounding WiFi environment to maximize capture of crackable WPA key material (handshakes and PMKIDs). It typically runs on a Raspberry Pi Zero W with an e-ink display, presenting a Tamagotchi-style face while it autonomously sniffs, deauthenticates, and associates to collect PCAP files usable with hashcat.", "when_to_avoid": ["you need a compliant, authorized-only enterprise WiFi auditing tool with reporting", "you cannot use monitor-mode WiFi hardware or run on GNU/Linux", "you expect plug-and-play without soldering, flashing SD cards, and configuration", "deauthentication attacks are illegal or unethical in your context"], "when_to_choose": ["you want an autonomous, learning WiFi penetration-testing companion device", "you have compatible hardware (monitor-mode WiFi, ideally Raspberry Pi Zero W)", "you want a fun, hackable platform to learn RL and WiFi security", "you need PCAP handshake captures compatible with hashcat"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pwnagotchi", "repo": "evilsocket/pwnagotchi", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "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:10:28.805177+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.805177+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:23:20.011957+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e4a5d9cb246cef4426fbef924a3c00618b9289478aac760acf0e462b0d740bee", "fetched_at": "2026-08-28T04:10:28.805177+00:00", "kind": "readme", "missing": false, "url": "https://github.com/evilsocket/pwnagotchi"}, {"content_hash": "7c26993ddf1409cf57795630c44a41ba930385e4a44eda4497ef32b3c6a6370e", "fetched_at": "2026-08-29T08:23:19.753384+00:00", "kind": "homepage", "missing": false, "url": "https://pwnagotchi.ai/"}, {"content_hash": "25c2ed73066cbf11aa5579f04ef832f0d5dc7afb0d6b19221eee686bde96681b", "fetched_at": "2026-08-29T08:23:19.762556+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/installation"}, {"content_hash": "d04a54517d7b254fe95182898d8394b961e74d08287da33d3ba0e38fe7d92f21", "fetched_at": "2026-08-29T08:23:19.765085+00:00", "kind": "site_page", "missing": false, "url": "https://pwnagotchi.ai/faq"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2540, "days_push": 14, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}