Web Model Open source

Draw the system. See where it breaks.

Drag boundaries, components, and data flows onto a canvas. Give each element a class from a catalog that knows your stack, and the platform derives its exposures, scores them, maps them to MITRE ATT&CK, and lets you triage every one in place — over the same model the Dethereal plugin builds from the command line.

The Dethernety data-flow editor showing the CloudShop model: an Internet zone, a DMZ web tier with a storefront pod, an application layer holding identity and checkout service pods, and a data layer with Postgres and Redis. A component palette sits at the right, boundaries carry trust-zone pills, and a boundary’s settings panel is open showing its Kubernetes Namespace class.

The CloudShop model on the canvas — drag from the palette on the right, and open any element to configure it.

The canvas is the model

Everything you place on the canvas — every boundary, component, and flow — is a structured element the analysis engine reads. Assign a class and it inherits that technology’s known weaknesses; change an attribute and the exposures re-derive. There is no separate “security model” to keep in sync: the picture you draw is the thing that gets analyzed.

It is the same split-file model the Dethereal Claude Code plugin builds and edits. Whiteboard a system here, enrich it from the CLI, and open it back on the canvas — one model, whichever interface fits the moment.

From a drawing to
a working threat model.

Place the elements, tell the platform what each one is, and the security reasoning follows — scored exposures, ATT&CK techniques, the controls that answer them, and the trust-zone intent to judge them against.

Assign a class

Pick from a catalog that knows your stack.

Every component, flow, and boundary takes a class from a searchable catalog — filtered by category and by module, from Kubernetes and AWS to network architecture and trust boundaries. The class carries what that technology tends to get wrong, so the moment you assign it, the element inherits a curated set of exposures and controls.

  • Filter by category (Network Architecture, Trust Boundaries, Containers…) or by module (kubernetes-core, aws-compute-containers, dethernety-general…).
  • Each class explains itself — a Kubernetes Namespace is modeled as a soft multi-tenancy trust boundary, and the catalog says exactly why.
  • Load more modules and the catalog grows; you never hand-write a threat list.
The Browse classes dialog: a search box, Category and Module filter chips, and a scrollable list of 25 results — EKS Node Group, Namespace, Network Perimeter, Network Segment, and more — with a detail pane describing the selected Namespace class as a soft multi-tenancy trust boundary.
Attributes

Fill in what’s true — the platform tells you how to check.

Each class asks for the attributes that shape its security: RBAC bindings, secret handling, network reachability, resilience. Every attribute comes with a guide that names its security impact, the technique it bears on, and the exact command to confirm it — so a ticked box is a verified fact, not a guess.

  • Attributes are grouped and explained — “Default ServiceAccount Token Automount Disabled” names its impact and the ATT&CK technique (T1098) it bears on.
  • The guide hands you the command — e.g. kubectl get serviceaccount default … — and the output that means secure versus exposed.
  • Change an attribute and the exposures re-derive to match what you actually configured.
The Attributes dialog for shop-web (DMZ): grouped attribute checklists (Authorization & RBAC, Secrets & Credentials, Network & Connectivity) beside a Guide pane explaining “Default Sa Automount Token Disabled” with its value type, security impact and MITRE T1098 mapping, plus a kubectl command to verify it and the expected output.
Exposures

Every weakness, scored and mapped — then yours to triage.

Open any element and its exposures are listed with a severity score, an attack vector, and the MITRE ATT&CK techniques an attacker would chain. Right there, you act: affirm it as a confirmed live risk, dispose it with a reason, or customize it into your own editable copy.

  • Each exposure carries a score (7.2), a vector (NETWORK), and a class (misconfiguration) — no rolled-up single number hiding the detail.
  • “Exploited by” names the techniques (T1528, T1550.001, T1552.007), so a finding lines up with the frameworks you already track.
  • Affirm, Dispose, or Customize in place — your decision is recorded and survives the next re-derivation.
The Exposures dialog for shop-web (DMZ): a list of pending exposures on the left and a detail pane for “Default ServiceAccount Token Automount (Soft-Isolation Residual)” showing a Score 7.2 chip, a NETWORK vector, a misconfiguration tag, an Exploited-By list of MITRE techniques, and Affirm / Dispose / Customize actions.
Controls

Credit the defenses you actually have.

Attach security controls to your model and each derives its countermeasures — what it prevents, and the defensive techniques it implements. Mark a control in place and it steps down the residual risk on what it covers; leave a gap and the model points to the class of control that would close it.

  • Countermeasures map to D3FEND and MITRE — Network Traffic Filtering (D3-NTF), Network Segmentation (M1030) — not just prose.
  • A control states its own limits: a NetworkPolicy is inert without an enforcing CNI, and the model says so plainly.
  • Controls come from a shared catalog, so a policy you define once applies everywhere it belongs.
The Countermeasures tab of a control: a table with “shop-web NetworkPolicy micro-segmentation” marked In place (preventive) and “Enforcing CNI actually applies the policy” (misconfiguration), each with a description and D3FEND / MITRE technique chips such as Network Traffic Filtering (D3-NTF) and Network Segmentation (M1030).
Trust zones

Declare how the system is meant to be segmented.

Place each boundary on a trust gradient — Internet-facing through Restricted — give it a business function and role, and declare the approved channels it may use to reach its peers. It captures the segmentation you intended, so analysis can flag any flow that breaks it.

  • A consequence line restates each tier — “reachable only through a public edge” — so the choice is unambiguous, and zones inherit down the tree.
  • Approved channels are picked from your actual boundaries, with a direction and an optional reason — a flow outside them becomes a finding.
  • Zoning is recorded design intent, not enforced traffic; the panel says so, and leaves enforcement to analysis.
The Zoning tab on the shop-web (DMZ) boundary: a Trust zone set to “Behind the front door (DMZ)” with the consequence “reachable only through a public edge”, a Role of Workload, and an Approved channels section, beside an Add-approved-channel dialog listing every boundary with its zone and a direction toggle.
Issues

Turn a finding into tracked work — and keep the thread.

Raise any exposure into an issue and it carries the finding’s detail, its associated elements, and a comment trail. Work them on a filterable board by class, status, severity, or likelihood, and sync each out to Jira, ServiceNow, or GitHub through a module.

  • An issue raised from a finding auto-links the analysis, the model, and the components it touches.
  • Filter the board with a query — status:open, severity:critical, name:… — to surface what needs attention.
  • Bidirectional sync keeps status and comments aligned with your external tracker.
The Issues board filtered to Open: a list including “Privileged / capability container breakout Issue on storefront pod” tagged Configuration Error, expanded to an Issue detail with General / Attributes / Associated Elements / Comments tabs and the exposure’s description carried into the ticket.

Built for the work,
not just the picture.

The canvas is where you run the model, not just draw it — record decisions that stick, re-check them as the model moves, and carry work in and out without re-keying.

Findings lifecycle

Pending, confirmed, or disposed — each element shows a count of how many findings still await a first look.

Customize a finding

Take over a system-generated finding as an editable copy; the original stays on the record, marked superseded.

Stale-aware decisions

Change an attribute and any decision it affects is flagged to re-review — never silently kept as if nothing moved.

Model references

A component can represent another model, so a system-of-systems nests on one canvas without duplication.

Portable model

Export any model as a split-file ZIP and re-import it — the same format the Dethereal plugin reads and writes.

Reusable controls

Define a control once in the catalog and apply it across every model where that defense belongs.

One model, every interface

Draw it here, or drive it from the CLI.

The canvas, the Dethereal plugin, and the analyses all read and write one model. Sketch a system on the canvas, enrich it from your terminal, and report on it in Threat Report — nothing is re-keyed, and the two views never disagree.

Nothing is a black box

Every finding traces back to a choice you made.

An exposure exists because of the class you assigned and the attributes you set. Change an input and watch the findings move; open any one to read its description, its score, its ATT&CK techniques, and the sources behind it. There is no hidden number you can’t take apart.

Open a canvas and start modeling.

The Interactive GUI is the browser home of your threat model — draw the system, configure it by class, and work every finding it surfaces. Prefer the command line? The same model is a few slash commands away.