Graph + Canvas Unified

I’m looking for a solution (an existing plugin, a combination of plugins, or a development path) for Obsidian (the Markdown note-taking app, extensible via TypeScript/JS plugins) that combines capabilities from three tools that currently exist separately.

TOOL 1 — Graph View (native to Obsidian):

- Automatically generates a network of nodes based on [[wikilink]] links between notes, with no manual drawing of connections.

- Each node always corresponds to a real file (note, canvas, PDF); never to a smaller unit (heading, block, or an element with no underlying file).

- Does not allow deep individual node styling (custom color/shape per specific node via CSS).

TOOL 2 — Advanced Canvas (third-party Obsidian plugin):

- Inside a .canvas file, lets you create free-text “cards” (Text Nodes) that aren’t real notes — they function as fully editable “fake nodes.”

- Lets you customize the shape and style (CSS) of each card individually, plus create flowchart shapes.

- As of a recent update, it registers each individual canvas node in Obsidian’s metadataCache, allowing a specific node to be linked to or embedded via wikilink ([[file.canvas#nodeId]]) from any real note, and vice versa.

- Limitation: connections (edges) between cards on the canvas are all drawn manually by dragging; there’s no automatic connection generation based on content/link/metadata the way Graph View does it.

TOOL 3 — K-Plex (successor to the ExcaliBrain plugin, same author):

- Creates “ghost nodes” / “virtual nodes”: nodes in the graph that represent unresolved links ([[Note]] with no corresponding .md file created) — i.e., “fake notes” that exist only visually in the graph, with no real file behind them.

- A single click on these fake nodes just re-centers the view on them; a double-click creates the corresponding Markdown file.

- Deterministic, configurable spatial layout driven by a relationship “ontology” (frontmatter fields defining Parent/Child/Friend/Challenger), rather than a generic force-directed layout.

- Reported limitations: no rectangular “lasso” selection (dragging a box to select multiple nodes at once); doesn’t generate connections from tags, only from notes/files; doesn’t have the wikilink-per-node-id system that Advanced Canvas has for its cards.

WHAT I WANT (the ideal combination of all three):

  1. Automatic generation of connections (edges) based on real links between notes AND between tags, like Graph View, but with tags included as fully connectable nodes.

  2. “Fake” nodes (with no real file behind them) that are visually and functionally equivalent to real nodes in the same graph — not just unresolved-link “ghost nodes,” but elements customizable in shape/color/CSS, like Advanced Canvas’s cards.

  3. Real addressability for every node, fake or real: its own ID/wikilink, referenceable and embeddable from any note, the way Advanced Canvas solved this for Canvas cards.

  4. Multi-selection via a rectangular lasso (dragging a selection box), capturing fake and real nodes together.

  5. Configurable/deterministic spatial layout (as K-Plex offers), as an alternative to native Graph View’s pure force-directed layout.

RESEARCH QUESTIONS:

  1. Does any Obsidian plugin, fork, or documented combination of plugins already implement this combination, even partially?

  2. Is there an open issue, pull request, forum thread (forum.obsidian.md), or Discord/Reddit thread requesting or developing exactly this combination of features?

  3. Does any personal-knowledge tool outside Obsidian (Tana, Logseq, Roam Research, Anytype, Heptabase, TheBrain, whether Obsidian-adjacent or not) already natively solve these 5 requirements, serving as an architectural reference?

  4. Given the current state of the three tools mentioned, what would be the most viable technical path today: an existing third-party plugin I’m not aware of, contributing a PR to one of the three projects (Advanced Canvas, K-Plex, or an extended Graph View plugin), or building a new plugin from scratch — and in that last case, which specific Obsidian APIs (metadataCache, Canvas API, Workspace API) and APIs from these plugins (if they expose a public one) would be needed?