Downloads
Artefacts and interop contracts
TIR-CMM is published as an open model with open tooling: a specification, a machine-readable definition of every domain, sub-capability, lattice axis and constraint, and a single-file client-side assessment tool. Some of it exists today. The rest is sequenced for v0.2, and the sequence is published so that nobody has to guess.
This is v0.1, a draft for review. Anything marked Planned below is committed work with a stated dependency, not an aspiration.
The artefacts
Six artefacts, in build order. Each depends on the ones above it, which is why the sequence is what it is: nothing downstream of the machine-readable model can be built until the model is settled.
Model specification v0.1 Available
The full specification: the three response failure modes, the position within UTIOM, the Containment Lattice, the two headline metrics, the six maturity bands, the eight domains and 58 sub-capabilities, the scoring mathematics, the six integrity constraints, prioritisation, the standards crosswalk, the TID-CMM bridge, the assessment flow, the data model and the open questions.
Reviewed and settled, it is the dependency for everything else. Status: draft for review.
Machine-readable model Available YAML export planned
Definitions of domains, sub-capabilities, lattice axes and constraints, published alongside the tool so that anyone can build their own instrument against the same structure without transcribing tables from a document.
Published today as assets/model.js, which is what this site and the assessment tool both read. A YAML export (tir-cmm-model.yaml) is planned, carrying identical content in a form that is easier to diff, review and consume outside a browser.
Worked example In the specification Practitioner version planned
The full constraint trace exists today as the numerical validation in §8.8 of the specification — the “Meridian Group” run: a self-assessed 2.69 falling to an adjusted 2.32, a Validated Response Score of 45.5%, an engineered rate of 40.6% against a proven rate of 3.1%, one blind Tier-1 cell, a Tempo Ratio of 5.08, and a final band of L1.
That is a validation trace, not a published worked example. The practitioner-facing version — the full 58-item score sheet and the complete lattice, matching the presentation of TID-CMM’s — is planned for v0.2.
Assessment tool Available
Single-file and entirely client-side: the ten-step wizard, live domain scoring, the lattice, the constraint engine with independent and marginal effects, the tempo calculation and the ranked roadmap. No server calls, no analytics, no transmission.
Run the assessment, or read the assessment guide first.
Excel workbook Planned
Offline parity: a workbook with live formulas mirroring the tool exactly, for organisations whose assessment process runs in a spreadsheet and for evidence packs that have to survive without a browser.
Depends on the machine-readable model and the worked example, so that the formulas and the reference numbers are verified before they are duplicated.
White paper Planned
The argument rather than the reference: why decision latency is the most under-measured variable in incident response, why response maturity expires faster than detection maturity, and why an engineered rate that vastly exceeds a proven rate is the normal condition of the market.
Depends on the settled specification and the worked example.
Build sequence
Published in full, with dependencies, so the order is auditable.
| # | Artefact | Depends on | Status |
|---|---|---|---|
| 1 | This specification, reviewed and settled | — | Available |
| 2 | Machine-readable model (tir-cmm-model.yaml) | 1 | Available YAML planned |
| 3 | Worked example with full constraint trace | 2 | Trace in spec §8.8 Practitioner version planned |
| 4 | Assessment tool — single-file, client-side | 2, 3 | Available |
| 5 | Excel workbook with live formulas | 2, 3 | Planned |
| 6 | White paper | 1, 3 | Planned |
| 7 | Sites: tir-cmm.com (model) + tir-cmm.xyz (tool) | 4, 6 | Planned |
| 8 | TID-CMM v1.3 bridge update | 1 | Planned |
| 9 | UTIOM roadmap tool integration | 4, 8 | Planned |
Interop contracts
Two JSON contracts bond the three models. TIR-CMM imports from TID-CMM so that scope, adversaries and detection maturity are inherited rather than re-declared, and exports to UTIOM so that response gaps join detection and governance gaps in one improvement plan.
Both are plain JSON files that you produce and consume yourself. Nothing moves over a network on your behalf.
Import from TID-CMM
Produced by TID-CMM and read at step 1 of the assessment.
{
"schema": "tid-cmm/export/1.3",
"assessed_at": "2026-08-16",
"detection_score_pre_substitution": 2.34,
"domains": { "TI": 2.6, "TM": 2.4, "DC": 2.1, "DE": 2.5,
"AV": 1.9, "AA": 2.4, "IR": 2.2, "GV": 2.5 },
"crown_jewels": [ { "id": "CJ-01", "name": "...", "asset_classes": ["A1","A7"] } ],
"attack_paths": [ { "id": "AP-01", "actor": "...", "stages": ["S1","S3","S4","S7"],
"asset_classes": ["A2","A1","A3","A7"] } ],
"actors": [ { "id": "TA-01", "name": "...", "breakout_minutes": 62 } ],
"in_scope_techniques": [ { "id": "T1078", "status": 2, "mitigations": ["M1032"] } ]
}
What each field does:
- schema — identifies the producing model and version. The bridge requires TID-CMM v1.3, which is the version that adds the substitution rule and this export field set.
- assessed_at — the date of the detection assessment. Response validation expires at twelve months; a detection score older than that is a stale input and should be flagged as one.
- detection_score_pre_substitution — the load-bearing field. It supplies D for constraint R4, which caps RE, CE and FI at D + 1: you cannot respond to what you never saw. It is deliberately the pre-substitution score, because TID-CMM substitutes the TIR-CMM overall into its own IR domain once a response assessment exists. Using the post-substitution figure would feed the response score back into the constraint that governs it. There is no circular inflation, and this ordering is stated in both specifications.
- domains — the eight TID-CMM domain scores, carried for reporting context and for the open question of whether R4 should use the overall score or the lower of overall and DC.
- crown_jewels — each with the asset classes that host it. This assigns criticality tier T1 to the cells that are or host a crown jewel, and drives the weighted Validated Response Score and the blind-cell gate.
- attack_paths — modelled paths, each as a sequence of stages and the asset classes they traverse. A lattice cell is in scope only where the asset class exists and at least one modelled path traverses that stage on that class. Cells on a path to a crown jewel become tier T2.
- actors — priority adversaries with breakout times in minutes. Each one produces its own Containment Margin and Tempo Ratio; the priority actor drives constraint R5.
- in_scope_techniques — techniques scoped by TID-CMM with their coverage status and ATT&CK mitigation M-codes. The M-codes are the traceability bridge: they map to lattice cells, so the response scope derives from the detection scope automatically rather than being re-argued.
Running without an import is supported. Detection maturity is then declared by the assessor, R4 uses that declaration, the report states plainly that the response score rests on an unaudited detection claim, and the overall band is capped at L3.
Export to UTIOM
Produced at step 10 and consumed by UTIOM’s roadmap tool.
{
"schema": "tir-cmm/export/0.1",
"overall": 2.31,
"band": "L2",
"band_capped_by": ["R5"],
"domains": { "RP": 2.8, "RA": 1.9, "RE": 2.4, "CE": 2.5,
"AO": 2.2, "FI": 2.0, "RV": 1.6, "RG": 2.3 },
"vrs_cj": 0.41,
"engineered_rate": 0.55,
"proven_rate": 0.16,
"blind_cells_t1t2": [ { "stage": "S3", "asset_class": "A1", "tier": "T1" } ],
"tempo": [ { "actor": "TA-01", "breakout_min": 62,
"mttd_min": 180, "mttdecide_min": 95, "mttc_min": 40,
"containment_margin_min": -253, "tempo_ratio": 5.08 } ],
"constraint_adjustments": [
{ "constraint": "R1", "domains": ["RP","CE","AO"], "effect": -0.31 },
{ "constraint": "R2", "domains": ["AO","CE"], "effect": -0.12 }
],
"roadmap": [ { "rank": 1, "id": "RA-1", "impact": 480, "horizon": "90d" } ]
}
What each field does:
- overall — the constraint-adjusted overall maturity, 0.00 to 5.00. This is the figure TID-CMM v1.3 substitutes into its IR domain, annotated with the model version and assessment date.
- band and band_capped_by — the reported band and the constraints that capped it. The honest shock in TIR-CMM arrives in the band rather than the decimal, so the cap is exported explicitly rather than left to be inferred from the number.
- domains — the eight domain scores after constraints, for the radar that superimposes on TID-CMM’s.
- vrs_cj — the crown-jewel weighted Validated Response Score, the reported coverage figure.
- engineered_rate and proven_rate — the proportion of cells at status 2 or better against the proportion at status 3. The gap between them is the headline finding: what an organisation believes it can do, against what it has shown it can do.
- blind_cells_t1t2 — the named list of stage-and-asset-class combinations on a path to a crown jewel where no response option exists at all. A single T1 entry caps the band at L2 under R6.
- tempo — per priority actor: breakout time, the three measured durations, the signed Containment Margin in minutes and the Tempo Ratio. A negative margin means containment lands after the adversary has already moved.
- constraint_adjustments — which constraint touched which domains, and by how much. Because R1 is applied last and is usually the tightest ceiling, the tool computes each constraint’s independent effect as well as its marginal one; without that, R2 and R4 read as “no effect” in exactly the organisations they were written for.
- roadmap — the merged, normalised, dependency-sequenced improvement list: rank, item, impact score and horizon of 90 days, 180 days or 12 months. It names capabilities and authorities required, never products.
UTIOM’s roadmap tool consumes both exports. Its roadmap.html reads the TID-CMM export and the TIR-CMM export together and produces one unified improvement plan across all three pillars — so that a detection gap and a response gap compete for the same budget on the same scale, which is the point of having a single operating model.
Licence
TIR-CMM is free to use, including commercially:
- The model — CC BY-ND 4.0. The domains, sub-capabilities, lattice, constraints, mathematics and crosswalks may be used, shared, quoted and taught with attribution. Derivative or rebranded versions of the model may not be published.
- The schemas and machine-readable model — CC BY 4.0. The JSON Schemas and the JSON and YAML exports may be built against freely, including commercially, with attribution.
- The tooling — source-available, all rights reserved. The assessment tool and the reference server may be run, self-hosted and audited, including on an air-gapped network, but not redistributed as your own product.
Nothing to buy, nothing to install, not vendor-aligned. The model names capabilities and authorities, never products.
Direct downloads
Every published artefact, linked. The model specification and the tooling are covered by the TIR-CMM licence; the schemas and the machine-readable model are CC BY 4.0 so you may build against them freely.
| File | Format | Size | What it is |
|---|---|---|---|
| Model specification v0.2 | Markdown | 73 KB | The complete written model: domains, lattice, constraints, scoring, worked example. |
| Machine-readable model | JSON | 72 KB | Every domain, sub-capability, action, stage, constraint, tier and scenario. CC BY 4.0. |
| Machine-readable model | YAML | 60 KB | The same data in YAML. CC BY 4.0. |
| Export schema | JSON Schema | 9 KB | The assessment result contract. Build reporting and GRC integrations against this. CC BY 4.0. |
| TID-CMM import schema | JSON Schema | 3 KB | What TIR-CMM consumes from a TID-CMM assessment. CC BY 4.0. |
| Library (ES module) | JavaScript | 100 KB | The scoring engine and model data. No dependencies, browser or Node. |
| Library (classic script) | JavaScript | 100 KB | The same library exposing window.TIRCMM. |
| REST reference server | JavaScript | 7 KB | Self-hostable scoring API. Node 18+, no dependencies. You run it; data stays with you. |
| Standalone assessment tool | HTML | 247 KB | The whole tool in one file. Opens from disk, zero external requests. For air-gapped use. |
| llms.txt | Text | 4 KB | Machine-readable index for AI systems. |
| llms-full.txt | Text | 267 KB | Every page as plain text, for citation and offline reading. |