ThreatMapper v2.0 / Open-source CTI platform / Published 2026-06-16

ThreatMapper v2.0: I Built a Self-Hosted AI Threat Intelligence Platform

Full 1200km mirror of the Medium article with the same walkthrough structure, screenshots, infographics, and practical guidance for deploying and using ThreatMapper v2.0.

MITRE ATT&CK CTI-to-detection Local LLM support STIX/OpenCTI DFIR examples
ThreatMapper v2.0 article cover

Threat intelligence is useful only when it becomes operational.

A report is not enough. A PDF from a vendor, an incident response write-up, a malware analysis note, or a DFIR case study still needs to be translated into practical defensive work:

That is the problem ThreatMapper was built to solve.

ThreatMapper is an open-source, self-hosted CTI-to-detection workbench. It helps analysts map threat reports to MITRE ATT&CK, review evidence, compare TTP overlap against groups and campaigns, export reports, and hand off structured outputs to detection engineering or CTI platforms.

Version 2.0 adds the features that make it much more useful in real analyst workflows:

GitHub:

https://github.com/anpa1200/threatmapper

Release v2.0.0:

https://github.com/anpa1200/threatmapper/releases/tag/v2.0.0

Full guide:

https://github.com/anpa1200/threatmapper/blob/main/docs/full-guide-v2.md

Table of Contents

What ThreatMapper Is

ThreatMapper v2.0 Medium article visual 01
ThreatMapper v2.0 walkthrough visual 01, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 02
ThreatMapper v2.0 walkthrough visual 02, mirrored from the original Medium article.

ThreatMapper is not a SIEM.

It is not an EDR.

It is not an attribution engine.

It is a workbench for the middle part of CTI work: the place where an analyst takes narrative reporting and turns it into ATT&CK mappings, evidence, similarity leads, detection gaps, and structured exports.

The core workflow is:

report -> ATT&CK mapping candidates -> analyst review -> group/campaign/report comparison -> detection gaps -> exports

This matters because most threat intelligence still arrives as prose. Someone has to read it, extract behaviors, map them to ATT&CK, check the evidence, and make the result useful for detection teams.

ThreatMapper helps automate the repetitive parts while keeping analyst review in the loop.

Architecture

ThreatMapper v2.0 Medium article visual 03
ThreatMapper v2.0 walkthrough visual 03, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 04
ThreatMapper v2.0 walkthrough visual 04, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 05
ThreatMapper v2.0 walkthrough visual 05, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 06
ThreatMapper v2.0 walkthrough visual 06, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 07
ThreatMapper v2.0 walkthrough visual 07, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 08
ThreatMapper v2.0 walkthrough visual 08, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 09
ThreatMapper v2.0 walkthrough visual 09, mirrored from the original Medium article.

ThreatMapper runs as a self-hosted Docker Compose stack:

The Docker deployment is the full version. It supports private report analysis, configured LLM providers, local LLM gateways, report storage, API workflows, and exports.

The public browser workspace is for exploration and manual ATT&CK work. Do not upload private reports into public demos.

Installation

ThreatMapper v2.0 Medium article visual 10
ThreatMapper v2.0 walkthrough visual 10, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 11
ThreatMapper v2.0 walkthrough visual 11, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 12
ThreatMapper v2.0 walkthrough visual 12, mirrored from the original Medium article.

Clone the repository:

git clone https://github.com/anpa1200/threatmapper.git
cd threatmapper

Create the environment file:

cp .env.example .env

Configure at least one AI provider:

ANTHROPIC_API_KEY=
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4.1
GEMINI_API_KEY=

Start the stack:

docker compose up -d --build

Open the UI:

http://localhost:3000

Open the API docs:

http://localhost:8000/docs

Check health:

curl http://localhost:8000/api/health

Expected result:

{"status":"ok","version":"2.0.0"}

On first startup, ThreatMapper ingests MITRE ATT&CK STIX data into PostgreSQL. This can take a few minutes.

Local LLM Support

ThreatMapper v2.0 Medium article visual 13
ThreatMapper v2.0 walkthrough visual 13, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 14
ThreatMapper v2.0 walkthrough visual 14, mirrored from the original Medium article.

ThreatMapper v2.0 supports local LLMs through OpenAI-compatible APIs.

This is important if you want to analyze sensitive reports without sending them to a public cloud provider.

Supported patterns include:

Example with Ollama:

ollama pull llama3.1:8b
ollama serve

Then configure:

LOCAL_LLM_BASE_URL=http://host.docker.internal:11434/v1
LOCAL_LLM_API_KEY=local
LOCAL_LLM_MODEL=llama3.1:8b

In the UI, select Local as the LLM provider.

Use a capable model. Small models may fail to produce clean JSON or may produce weak ATT&CK mappings.

Discover Page

ThreatMapper v2.0 Medium article visual 15
ThreatMapper v2.0 walkthrough visual 15, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 16
ThreatMapper v2.0 walkthrough visual 16, mirrored from the original Medium article.

The Discover page is the starting point.

It shows:

It also gives quick entry points:

This page is for orientation. It helps you decide where to start.

AI Analysis

ThreatMapper v2.0 Medium article visual 17
ThreatMapper v2.0 walkthrough visual 17, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 18
ThreatMapper v2.0 walkthrough visual 18, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 19
ThreatMapper v2.0 walkthrough visual 19, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 20
ThreatMapper v2.0 walkthrough visual 20, mirrored from the original Medium article.

The AI Analysis page accepts:

The workflow:

  1. Select ATT&CK domain: Enterprise, Mobile, or ICS.
  2. Select provider: Claude, OpenAI, Gemini, or Local.
  3. Paste text or upload a report.
  4. Run analysis.
  5. Watch the streamed response.
  6. Review extracted techniques.
  7. Inject reviewed TTPs into Navigator.
  8. Export PDF or STIX/OpenCTI output.

Each extracted technique includes:

The evidence field is the most important part.

If the evidence does not show behavior, the mapping should not be accepted.

For example, an actor name in a report does not automatically prove the techniques associated with that actor. A tool name does not automatically prove every technique that tool can perform. ThreatMapper helps generate candidates, but the analyst decides what is defensible.

Review Status

ThreatMapper v2.0 Medium article visual 32
ThreatMapper v2.0 walkthrough visual 32, mirrored from the original Medium article.

ThreatMapper supports analyst review states:

This makes the tool more useful than a simple “AI says these are TTPs” output.

You can separate raw model suggestions from reviewed findings.

That distinction matters when the output is sent to another analyst, a SOC team, a detection engineer, or OpenCTI.

ThreatMapper v2.0 Medium article visual 21
ThreatMapper v2.0 walkthrough visual 21, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 22
ThreatMapper v2.0 walkthrough visual 22, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 33
ThreatMapper v2.0 walkthrough visual 33, mirrored from the original Medium article.

Navigator is the ATT&CK matrix workspace.

You can:

After AI Analysis, you can inject extracted techniques into Navigator and continue working manually.

This is important because ATT&CK analysis is rarely finished after one model response. Analysts need to add, remove, correct, compare, and explain.

ATT&CK Group Library

ThreatMapper v2.0 Medium article visual 23
ThreatMapper v2.0 walkthrough visual 23, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 24
ThreatMapper v2.0 walkthrough visual 24, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 25
ThreatMapper v2.0 walkthrough visual 25, mirrored from the original Medium article.

ThreatMapper v2.0 improves the ATT&CK Group Library.

Actor pages now include:

This makes the actor pages more useful for real CTI review.

Instead of only seeing a name and a list of techniques, you can inspect the supporting context and understand where the profile comes from.

Group And Campaign Comparison

ThreatMapper v2.0 Medium article visual 26
ThreatMapper v2.0 walkthrough visual 26, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 27
ThreatMapper v2.0 walkthrough visual 27, mirrored from the original Medium article.
ThreatMapper v2.0 Medium article visual 28
ThreatMapper v2.0 walkthrough visual 28, mirrored from the original Medium article.

ThreatMapper compares selected TTPs against:

The comparison uses Jaccard overlap.

This is useful for investigation, but it is not attribution.

A high overlap means:

this TTP set shares behavior with this profile

It does not mean:

this actor definitely did it

That difference matters.

Attribution needs more evidence: infrastructure, malware, victimology, timing, tooling, procedures, and external intelligence.

ThreatMapper helps you find overlap worth investigating.

Compare Modes

ThreatMapper v2.0 Medium article visual 29
ThreatMapper v2.0 walkthrough visual 29, mirrored from the original Medium article.

The Compare page has three modes.

Groups

Compare your selected TTPs against ATT&CK group profiles.

Use this for:

Campaigns

Compare against named ATT&CK campaigns.

This can be more specific than group comparison because group profiles often span years of activity, while campaigns represent narrower operations.

Reports

Compare against previous AI analyses stored in the local database.

Use this for:

Group vs Group

ThreatMapper v2.0 Medium article visual 30
ThreatMapper v2.0 walkthrough visual 30, mirrored from the original Medium article.

The Group vs Group page compares multiple ATT&CK group profiles at once.

It includes:

This is useful when you want to understand which behaviors are shared across actors and which techniques may be more distinctive.

DFIR Examples

ThreatMapper v2.0 Medium article visual 31
ThreatMapper v2.0 walkthrough visual 31, mirrored from the original Medium article.

ThreatMapper v2.0 adds DFIR Examples.

The page indexes public DFIR Report metadata:

ThreatMapper does not mirror third-party report content. It stores metadata only.

The workflow is:

  1. Open an indexed DFIR example.
  2. Go to the original report page.
  3. Save the source page as a local PDF.
  4. Upload the PDF to ThreatMapper AI Analysis.
  5. Extract ATT&CK candidates.
  6. Review evidence.
  7. Compare against groups, campaigns, and stored reports.

This gives analysts a practical way to test the workflow with public material while respecting the original source.

Reference Sync

ThreatMapper v2.0 Medium article visual 34
ThreatMapper v2.0 walkthrough visual 34, mirrored from the original Medium article.

ATT&CK changes over time.

ThreatMapper includes Reference Sync for:

The sync page shows:

Scheduled sync runs through Celery Beat.

This matters because a report analyzed today may need to be compared again after ATT&CK changes.

STIX 2.1 Export For OpenCTI

This is one of the most important v2.0 additions.

ThreatMapper can export a completed analysis as a STIX 2.1 bundle:

GET /api/export/analysis/{session_id}/stix

The UI also includes:

↓ STIX/OpenCTI

The bundle contains:

The custom metadata includes:

Important: this is not an IOC export.

ThreatMapper is not mainly about indicators.

It is about reports, TTPs, ATT&CK mapping, evidence review, and detection handoff.

The OpenCTI export reflects that. It moves report and behavior context into a CTI platform without pretending that similarity equals attribution.

PDF Export

ThreatMapper can export a completed AI analysis as a PDF report.

The PDF includes:

This is useful for analyst handoff, internal review, and detection backlog discussions.

ATT&CK Navigator Export

Navigator layers can be exported in ATT&CK Navigator-compatible JSON format.

This is useful when your team already uses ATT&CK Navigator and wants to continue analysis there.

You can also import existing Navigator layers into ThreatMapper.

API

ThreatMapper exposes API endpoints for integration.

Common endpoints:

GET  /api/health
GET  /api/attack/versions
GET  /api/attack/techniques
GET  /api/attack/techniques/{attack_id}
GET  /api/apt/groups
GET  /api/apt/groups/{group_id}
POST /api/apt/compare
GET  /api/apt/campaigns
POST /api/apt/campaigns/compare
POST /api/analyze
POST /api/analyze/stream
GET  /api/analyze/sessions
GET  /api/analyze/{session_id}
PATCH /api/analyze/sessions/{session_id}/techniques/{attack_id}/review
GET  /api/export/analysis/{session_id}
GET  /api/export/analysis/{session_id}/stix
POST /api/export/layer
GET  /api/sync/status
POST /api/sync/trigger

The API makes it possible to connect ThreatMapper to internal workflows, report pipelines, or CTI tooling.

Security And Privacy Notes

ThreatMapper should be deployed in controlled environments.

For private work:

Do not upload confidential reports into public demos.

What ThreatMapper Is Not

ThreatMapper is not:

It is a focused workbench for CTI-to-detection workflows.

Its job is to help analysts move from report text to reviewed ATT&CK evidence and useful handoff artifacts.

The workflow I recommend is:

  1. Start with a public or authorized report.
  2. Run AI Analysis.
  3. Review every extracted mapping.
  4. Accept only evidence-backed TTPs.
  5. Inject accepted TTPs into Navigator.
  6. Compare against groups.
  7. Compare against campaigns.
  8. Compare against previous reports.
  9. Review detection gaps.
  10. Export PDF for analyst handoff.
  11. Export STIX/OpenCTI if promoting to a CTI platform.
  12. Document uncertainty.

The most important rule:

ATT&CK overlap is not attribution.

Use similarity as a lead. Use evidence for conclusions.

Release Evidence

ThreatMapper v2.0.0 includes:

Verification for v2.0.0:

Backend tests: 76 passed
Frontend build: passed

GitHub:

https://github.com/anpa1200/threatmapper

Release:

https://github.com/anpa1200/threatmapper/releases/tag/v2.0.0

Full guide:

https://github.com/anpa1200/threatmapper/blob/main/docs/full-guide-v2.md

Project hub:

https://1200km.com/threatmapper/

Public ATT&CK workspace:

https://1200km.com/threat-matrix/

External validation:

https://1200km.com/external-validation.html

Final Thoughts

The goal of ThreatMapper is simple: make threat intelligence easier to operationalize.

It does not replace analysts. It gives analysts a structured place to work.

Reports become ATT&CK candidates.

Candidates become reviewed mappings.

Mappings become comparison sets.

Comparison sets become detection questions.

And reviewed results can move into PDF, Navigator, JSON, or OpenCTI.

That is the part of CTI work I wanted to improve.

Follow My Work

I publish practical cybersecurity research, CTI workflows, detection engineering notes, malware analysis projects, OpenCTI work, cloud and Kubernetes security research, AI-assisted security tooling, labs, and technical guides.

Portfolio / Knowledge Base: https://1200km.com/

Medium: https://medium.com/@1200km

GitHub: https://github.com/anpa1200

LinkedIn: https://www.linkedin.com/in/andrey-pautov/

Andrey Pautov