Threat Tiger is an interactive, offline-first, client-side threat modeling web application designed to help developers, software architects, and security engineers design, analyze, and secure their system architectures.
Threat Tiger is a single HTML file plus a few local assets. It needs no installation, no database and no internet connection, and it never sends your data anywhere: your architecture and threat assessments stay in your browser and in the files you export.
A demo site is available here: https://jozeta.github.io/threat-tiger/threat-tiger.html

threat-tiger.html in a modern browser (Chrome, Edge, Firefox, Safari) β double-clicking the file works, everything is local.
For the full experience (e.g. opening the demo model from the welcome screen) serve the folder over http, for example with npm run serve (see below) or python3 -m http.server.All other actions (import, export, reports, History, help) are in the β° menu at the top right.
| Key | Action |
|---|---|
| Tab / Shift+Tab | Move between components and data flows on the canvas |
| Enter / Space | Select the focused item |
| Arrow keys (Shift for larger steps) | Move the selection |
| Delete / Backspace | Delete the selection (asks first if threats would be deleted) |
| Escape | Deselect |
| Ctrl/Cmd+Z, Ctrl/Cmd+Shift+Z or Ctrl+Y | Undo / redo |
| Ctrl/Cmd+C, Ctrl/Cmd+V | Copy / paste components (with the data flows between them) |
The image is built from the files in this folder and served by unprivileged nginx with security headers.
docker build -t threat-tiger .
docker run -d --name threat-tiger -p 8080:8080 threat-tiger
Then open http://localhost:8080/.
The app is threat-tiger.html (HTML, CSS and vanilla JavaScript in one file). Front-end libraries β Bootstrap 5.3.2, Bootstrap Icons 1.13.2 and Font Awesome 6.5.1 β are bundled in vendor/ (see vendor/README.md). threat_templates.json holds the threat library, including the conditions that trigger suggestions β its format and curation are described in docs/threat-templates.md.
Development tooling is optional and only needs Node.js:
npm install # installs Playwright (dev only)
npm test # end-to-end tests in your installed Microsoft Edge
npm run serve # http://127.0.0.1:4173/threat-tiger.html
npm run sync # run after editing the script or threat_templates.json
npm run sync updates the parts of threat-tiger.html that are generated: the Content-Security-Policy hash of the inline script and the embedded copy of the templates. It also verifies the vendored files against vendor/checksums.json. The tests fail if you forget to run it.
To run the tests in Chrome instead of Edge: PW_CHANNEL=chrome npm test. To test a running deployment, e.g. the Docker container: PW_BASE_URL=http://127.0.0.1:8080 npm test.
The version is APP_VERSION in threat-tiger.html (shown in Help & License and stored in exported files). Changes are listed in CHANGELOG.md.
For bug reports, feature requests, or general feedback, you can:
This project is licensed under the MIT License. See LICENSE for details. Bundled third-party assets keep their own licenses (see vendor/README.md).