No description
Find a file
Andre482 f09015e70f Remove cl-contigo example bowtie from repository.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 15:05:00 +03:00
.github/workflows Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
examples Remove cl-contigo example bowtie from repository. 2026-06-12 15:05:00 +03:00
src Remove Presight OpenRisk attribution from README and help modal. 2026-06-12 15:02:57 +03:00
.gitignore Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
deploy.mjs Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
deploy.ps1 Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
esbuild.config.mjs Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
LICENSE Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
manifest.json Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
package-lock.json Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
package.json Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
README.md Remove Presight OpenRisk attribution from README and help modal. 2026-06-12 15:02:57 +03:00
styles.css Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
tsconfig.json Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
version-bump.mjs Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00
versions.json Initial release v1.0.0: O-Tie bowtie diagram plugin for Obsidian. 2026-06-12 14:59:23 +03:00

O-Tie

Build and edit risk bowtie diagrams in Obsidian with an interactive visual editor. O-Tie stores diagrams as .bowtie JSON files in your vault and auto-saves as you work.

Features

  • Interactive bowtie editor with fan-in/fan-out layout
  • Threats, prevention barriers, top event, mitigation barriers, consequences, and hazard
  • Escalation factors and escalation barriers
  • Per-barrier analysis stacks (type, effectiveness, criticality, and custom rows)
  • Toolbar: add elements, undo/redo, fit, zoom, PNG export, help
  • Inspector panel for label, notes, and delete
  • Pan and zoom on the canvas
  • Auto-save to .bowtie files

Bowtie structure

Threats → Prevention Barriers → Top Event → Mitigation Barriers → Consequences
                                      ↑
                                   Hazard

Installation

From Obsidian Community Plugins

  1. Open Settings → Community plugins.
  2. Turn off Restricted mode if needed.
  3. Click Browse, search for O-Tie, and install.
  4. Enable the plugin.

Manual installation

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Copy them into <vault>/.obsidian/plugins/o-tie/.
  3. Reload Obsidian and enable O-Tie under Settings → Community plugins.

Usage

  1. Click the bowtie ribbon icon or run O-Tie: Create new bowtie.
  2. Enter a name — a .bowtie file opens in the editor.
  3. Edit on the diagram:
    • Toolbar: add threat, consequence, or barrier; fit; zoom; export; help
    • Double-click a node or title to rename
    • Click a node to inspect it in the bottom panel
    • Right-click for context menus
    • Hover nodes for quick add/delete buttons
    • Drag empty canvas space to pan; scroll to zoom
    • Delete removes the selected node
    • Ctrl+Z / Ctrl+Y for undo and redo
  4. Changes save automatically.

Settings

Open Settings → O-Tie to configure:

  • Default folder for new bowties
  • Column gap, row gap, node width, and node height

Commands

Command Description
Create new bowtie Create a new .bowtie file
Open bowtie file Open the active .bowtie file in the editor
Export bowtie as image Export the diagram as PNG

File format

.bowtie files are JSON. Example:

{
  "name": "Defective Steamcracker",
  "hazard": "High pressure ethylene",
  "topEvent": "Loss of containment",
  "threats": [{ "label": "Corrosion", "preventionBarriers": [] }],
  "consequences": [{ "label": "Fire", "mitigationBarriers": [] }],
  "view": { "zoom": 1, "panX": 0, "panY": 0 }
}

See examples/steamcracker.bowtie.

Development

npm install
npm run dev    # watch mode
npm run build  # production build

Third-party licenses

This plugin bundles html-to-image (MIT) for PNG export.

License

MIT — see LICENSE.