Samind 3D Graph

by Samuel Bangslund
5
4
3
2
1
Score: 50/100

Description

Reviews

No reviews yet.

Stats

0
stars
379
downloads
0
forks
25
days
6
days
6
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
72
commits

Latest Version

7 days ago

Changelog

Fixed

  • Cluster physics jitter: nodes never settled and kept visibly vibrating after the previous release's force tuning - the cluster force recomputed each cluster's centroid from its members' current, still-moving positions every tick, then pulled members toward it, creating a feedback loop between the moving target and the nodes chasing it. The centroid is now smoothed with an EMA instead, which removes most of the oscillation; force caps were also dialed back and damping/alpha-decay tuned so any remaining settle-in wobble resolves quickly
  • Cluster hover/click hit-testing raycast an invisible, padded axis-aligned bounding box instead of the actual rendered shape - for convex-hull clusters (or just elongated ones) that invisible hitbox extended well past the visible outline into a neighboring cluster's space, so hovering near one cluster's outline often highlighted the wrong one. Now raycasts the actual rendered mesh directly

Changed

  • Cluster physics settings simplified from 6 raw force-tuning sliders down to 3 plain-language ones (cluster tightness, cluster separation, explode spread), each 0-10 - the underlying physics values are now derived internally instead of exposed directly, since fine-tuning six interacting raw parameters was confusing and easy to leave in an unstable combination
  • Settings sliders now show a live numeric tooltip while dragging

README file from

Github

Samind 3D Graph

Mostly done by Claude!

⚠️ Disclaimer: I built this for my own use at work, on top of a POC I already had lying around. It's not a polished, general-purpose release — expect rough edges, and use it at your own judgment.

A 3D force-directed graph view for Obsidian, with AI-driven topic clustering and gap-insight analysis layered on top.

Forked from Obsidian 3D Graph by Alexander Weichart, extended with:

  • AI cluster visualization — notes are colored and sized by an AI-generated topic clustering, with dashed boundary boxes and labels drawn around each cluster
  • Cluster physics — a tunable spatial force pulls notes in the same cluster together and pushes different clusters apart, with live sliders for target radius, force strength, and inter-cluster separation
  • Explode interaction — double-click a cluster to spread it apart and frame the camera on it
  • Gap insights — surfaces AI-found structural gaps between clusters (e.g. two topics that should probably reference each other but don't), with a "show in graph" button that highlights and frames the relevant clusters
  • Cluster legend — a collapsible panel listing each cluster's color, note count, and share of the vault
  • MCP server (optional, off by default) — lets an MCP-compatible AI tool (e.g. OpenCode) query the graph and drive highlights/snippet cards while talking to you

Installation

To install manually:

  1. Download main.js, manifest.json, and styles.css from the latest release (see CHANGELOG.md for what's changed)
  2. Copy them into <vault>/.obsidian/plugins/samind-graph/
  3. Reload Obsidian and enable "Samind 3D Graph" under Community Plugins

Usage

Open the graph via the ribbon icon, the command palette ("Open Global 3D Graph" / "Open Local 3D Graph"), or a note's file menu. The settings panel (gear icon, top-right of the graph) has sections for filters, groups, display, and cluster physics — and, once an analysis.json exists, a cluster legend and gap-insight list. Double-click a cluster's box or title to explode it apart; right-click a note to pin it and its neighbors.

How clustering works

This plugin does not call out to any AI backend itself. Instead, it reads a local, vendor-neutral file at <vault>/.samind-3d-graph/analysis.json containing cluster assignments, colors, importances, and gap insights. That file can be generated by any AI assistant. Without this file, the graph falls back to plain, unclustered rendering — the graph view shows a "Set up" prompt in this case.

Setting up AI clustering

  1. Open this vault's folder with an AI assistant that can read and write files — Claude Code, Claude Desktop with filesystem access, or similar.
  2. Point it at skills/samind-graph-analysis/SKILL.md and ask it to follow those instructions against this vault — either by installing the file as a proper Claude Skill, or just pasting its contents into the conversation and asking Claude to follow them.
  3. Once it reports .samind-3d-graph/analysis.json has been written, run the "Reload AI Graph Analysis" command (or reopen the graph) to see the clusters.

Re-run the same skill any time your vault changes enough that the clustering feels stale.

MCP server (optional)

Off by default. Enabling it (Settings panel → MCP Server) starts a local server at http://127.0.0.1:27184/mcp that lets an MCP-compatible AI tool query the graph's structure and drive highlights/snippet cards. It only accepts connections from this machine and only exposes read access to your vault plus the same highlight actions available in the UI — see src/mcp/McpServer.ts for exactly what it does. Configure a client (e.g. OpenCode) with:

"mcp": { "samind-graph": { "type": "remote", "url": "http://127.0.0.1:27184/mcp" } }

Privacy

This plugin reads no files outside your vault and makes no network requests - it never connects out to anywhere, local or remote. The one exception is the optional MCP server above: when you turn it on, the plugin listens on 127.0.0.1 for incoming local connections (it doesn't request anything itself), and is off by default.

License

MIT — see LICENSE. Includes original work by Alexander Weichart under the same license.