{"adoption": {"forks": 169, "observed_at": "2026-08-28T04:04:05.339493+00:00", "stars": 1237}, "canonical_url": "https://ross.abutalabs.com/products/attackgen", "card": {"archived": false, "artifact_type": "application", "description": "AttackGen is a cybersecurity incident response testing tool that leverages the power of large language models and the comprehensive MITRE ATT&CK framework. The tool generates tailored incident response scenarios based on user-selected threat actor groups and your organisation's details.", "domain": ["security", "artificial-intelligence", "large-language-models", "developer-tools"], "enriched": true, "function": ["llm-inference", "prompt-engineering", "security", "chat-interface", "mcp"], "health_score": 99, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["mrwadams/attackgen"], "name": "mrwadams/attackgen", "platform": ["python", "self-hosted"], "pushed_at": "2026-08-22T07:53:18+00:00", "repo": "mrwadams/attackgen", "stars": 1237, "tags": ["mitre-attack", "incident-response", "purple-team", "tabletop-exercise", "threat-intelligence", "streamlit", "generative-ai", "cybersecurity", "docker", "web-server"], "topics": ["ai-security", "cybersecurity", "generative-ai", "incident-response", "llm", "mitre-atlas", "mitre-attack", "purple-team", "security-tools", "streamlit", "tabletop-exercise", "threat-intelligence"], "urls": [], "use_cases": ["generate incident response tabletop exercise scenarios", "create purple team testing scenarios from MITRE ATT&CK techniques", "simulate AI insider threat incidents for response training", "tailor cyber incident scenarios to my organisation's size and industry", "generate scenarios for specific threat actor groups", "run incident response drills using LLM-generated scenarios", "create AI/ML-specific attack response exercises"], "what_it_is": "AttackGen is a Streamlit-based cybersecurity tool that uses large language models to generate tailored incident response testing scenarios based on MITRE ATT&CK and ATLAS frameworks. It lets users select threat actor groups and provide organisation details to produce downloadable tabletop exercise scenarios via multiple LLM providers.", "when_to_avoid": ["you need automated technical attack simulation rather than written scenarios", "you require a fully offline tool without any LLM API access", "you need a commercial incident response platform with ticketing and workflow"], "when_to_choose": ["you need tailored incident response or tabletop exercise scenarios quickly", "your team trains against MITRE ATT&CK, ICS, or ATLAS techniques", "you want LLM-generated security scenarios with multiple provider options", "you run purple team exercises and need scenario templates"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/attackgen", "repo": "mrwadams/attackgen", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "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:05.339493+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:05.339493+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:21:53.032850+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5378121813bcfde85fcb7f981817a40aeac257824e9e5003ca78af795a22b1a7", "fetched_at": "2026-08-28T04:04:05.339493+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrwadams/attackgen"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 80, "rhythm": 99}, "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": 1121, "days_push": 11, "days_rel": 11, "gap_med": 6, "n_releases_24m": 6}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}