Catego

approvedunreviewed

by huricanee

Argument-mapping canvas: typed nodes and relations, logical operators, regions, and notes-as-nodes. A richer alternative to core Canvas.

↓ 61 downloadsUpdated 14d agoMIT

Catego

An argument-mapping canvas for Obsidian. Where core Canvas gives you boxes and lines, Catego gives every box a role and every line a meaning — so a board is not a picture of an argument but the argument itself, laid out so you can check it.

Boards are ordinary files in your vault (.catego), like Excalidraw drawings. No account, no server. Desktop only.

What you can express

Nodes carry a role — thesis, premise, assumption, belief, fact, conclusion, objection, response, definition, axiom, postulate, question, source, scope. A node can also be negated (¬), carry a probability, and an epistemic status: accepted, challenged, disputed, unsolvable.

Arrows carry a relation, in two groups:

Math logicReality
AND, OR, XORtherefore (→), because (←), but, in order to
implies (⇒), equivalently (⇔)supports, contradicts, presupposes
necessary / sufficient condition for
refines, generalizes, is example of, counter-example of
analogous to, identical
increases / decreases the probability (weighted)

AND / OR / identical fold into n-ary groups, and an arrow can attach to another arrow's operator pill, so compound statements stay one object.

Also: regions (grouping, lockable), figures, text labels, freehand pen, Markdown and LaTeX (KaTeX) inside nodes.

Any file as a node

Drag a file from the file explorer onto a board, right-click it → Add as Catego node, or run the command Add this file as a node in the open board. Works for notes, PDFs, images, audio, other boards — anything in the vault. The node shows the file name; its link button opens the file in a new tab. Renaming the file renames the node, and vice versa.

Keyboard-first

Every toolbar button and every type in the properties panel shows its hotkey. The essentials:

KeysAction
Nnew node
Entertoggle command / edit mode (type into the selected node)
Tab / .tap: next node / next arrow
W A S Dmove the selected node
Cmd + WASDjump to the nearest node in that direction
. + WASDjump to the nearest arrow in that direction
Option + WASDresize
I J K Lpull an arrow out of the selected node
Shift + letterset the node / arrow type
Shift + 1…0color
`properties panel
?full cheat-sheet

Directional jumps start from whatever is selected, so Cmd and . move freely between nodes and arrows.

Export

Print whole board renders the entire board at full scale to a lossless PNG — text stays crisp however far out you are zoomed. JPEG / PDF export the current viewport.

File format

A .catego file has two parts:

n1 : premise "Socrates is a man" @200,100
n2 : conclusion "Socrates is mortal" #accepted @320,300
n1 -> n2 : supports

%%catego:extras
{"version":2,"notes":{…},"full":{…}}
  • The DSL block on top is a readable projection of the logic — good for diffs, search, and for handing a board to an AI.
  • The full snapshot in the extras block is the lossless source of truth the plugin loads: it also holds what the DSL grammar does not express (pen strokes, text labels, arrow curves and colors, fonts, file links).

Boards can also be created from text: the DSL import dialog parses the grammar above and lays the graph out automatically.

Privacy

The plugin makes no network requests and collects no telemetry. Everything stays in your vault.

Development

npm install
npm run build     # production build → main.js, styles.css
npm run dev       # watching build

This plugin shares its canvas, logic model and DSL with the Catego web app. src/shared/ is vendored from that project by its release script, so please send changes to those files upstream.

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.