Your notes, as a real graph.

Typed Graph is an Obsidian plugin that turns links into typed, signed, labeled edges with properties, lets you query them with openCypher, and draws them as a graph that looks like what it means.

Write edges like you write notes

One line per edge, right where it belongs. Plain type:: [[Target]] lines from Graph Link Types keep working; add a sign and properties when you need them.

---
type: Person
role: research lead
---
knows:: [[Bob]] {since: 2020, label: "met at NeurIPS"}
works_at:: [[Acme]]
-distrusts:: [[Mallory]] {id: "alice-mallory"}

Ask it questions

A graph-query block runs openCypher and shows a graph or a table, live, as the vault changes.

```graph-query
MATCH (p:Person)-[c:contributes]->(proj:Project)
RETURN p.title AS person, proj.title AS project,
       c.hours AS hours
ORDER BY hours DESC
```

Screenshots

Rendered by the plugin's own engine and renderer — the same ones you can poke at in the live demo.

Typed, signed graph with schema colors
Typed nodes, labeled and signed edges, schema-driven colors and shapes, a faded stub.
Query result as a table
Scalar results become tables; edge properties are first-class.
Variable-length paths
Variable-length paths and path variables.
Per-block styling
Per-block styling overrides on top of schema notes.

Everything a graph needs

From a quick typed link to RAG-ready storage for agents.

↗

Typed, signed edges

type:: [[X]], a - prefix for negative edges, properties in braces, stable or pinned ids.

◆

Typed nodes & schemas

Frontmatter type gives labels; schema notes declare properties, allowed edges, templates and looks.

⌕

openCypher

MATCH, OPTIONAL MATCH, WITH, aggregation, variable-length paths — read-only, with clear errors.

◎

Graph view

A full-pane explorer that follows the active note, expands neighbors and explains every style.

{}

Edge property embeds

{{edge: Alice -knows-> Bob . since}} shows a value in prose and warns about unstable references.

🐞

LadybugDB mirror

An optional sidecar mirrors the graph into LadybugDB for full Cypher, verified against the built-in engine.

≈

Vector search

Local Ollama embeddings over note chunks and edge sentences; combine hits with graph traversal.

⚙

GraphRAG & MCP

Cited retrieval over hits and their neighbors, served to agents through an MCP server.

How it fits together

Markdown stays the only source of truth. Everything else is derived and rebuildable.

core TypeScript

Edge parser, graph model, schemas, styles, openCypher engine, chunking. No Obsidian APIs.

plugin Obsidian

Query blocks, graph view, embeds, diagnostics. Works on desktop and mobile.

sidecar optional

Headless service over a read-only vault: REST, MCP, LadybugDB mirror, vectors.

Install

  1. From Obsidian (once listed): Settings → Community plugins → Browse → search Typed Graph.
  2. Before that, with BRAT: install the BRAT plugin, then Add beta plugin → Volland/obsigraph.
  3. Manually: download main.js, manifest.json and styles.css from the latest release into <vault>/.obsidian/plugins/typed-graph/ and enable it.

For agents

Run the sidecar next to your vault and give your agent the graph:

claude mcp add typed-graph \
  -e OBSIGRAPH_VAULT=/path/to/vault \
  -e OBSIGRAPH_DATA=/path/to/data \
  -- node packages/sidecar/dist/server.mjs --stdio

Tools: cypher_query, vector_search, graphrag_retrieve. See the sidecar docs.