graf — CLI Graph Visualizers tool screenshot
CLI Graph Visualizers

graf: Best CLI Graph Visualizers for Markdown Note-Takers in 2026

8 min read·

graf turns a local markdown tree into an interactive terminal knowledge graph with fast wiki-link navigation, themeable overlays, and editor handoff.

Pricing

Open-Source

Tech Stack

Rust 1.85+, terminal UI, TOML config, Markdown/MDX, YAML frontmatter

Target

Markdown note-takers, PKM users, and developers with wikilink-heavy repos

Category

CLI Graph Visualizers

What Is graf?

graf is one of the best CLI Graph Visualizers tools for Markdown note-takers and wikilink-heavy repos. Built by reekta92, it scans local .md and .mdx files, resolves [[wikilinks]], and renders a force-directed network in the terminal for developers managing personal knowledge bases. It is part of clin-rs, and the repo says the major features are already implemented, with testing and bugfixing left.

The important detail is that graf stays filesystem-native. It does not ask you to import a vault into a separate database, and it does not require an app-specific sync layer to show your graph.

Quick Overview

AttributeDetails
TypeCLI Graph Visualizers
Best ForMarkdown note-takers, PKM users, and developers with wikilink-heavy repos
Language/StackRust 1.85+, terminal UI, TOML, Markdown/MDX, YAML frontmatter
LicenseN/A
GitHub StarsN/A as of Feb 2026
PricingOpen-Source
Last ReleaseN/A

graf is terminal-first, but it is not bare-bones. The repository documents theming, overlays, search, and editor handoff, which makes it closer to a daily-use shell utility than a one-off graph demo.

Who Should Use graf?

  • Markdown-heavy developers who keep docs, research notes, or design specs in plain files and want a visual index of how those files connect.
  • PKM users who already rely on wikilinks and YAML frontmatter and need a local graph without migrating to a hosted note platform.
  • Neovim and Vim users who prefer EDITOR=nvim graf over a GUI app and want file opening to stay inside their existing terminal workflow.
  • Docs maintainers managing medium-sized repos who need a quick way to inspect link density, orphaned notes, and tag clusters.

Not ideal for:

  • People who want a full note application with sync, mobile clients, and cloud collaboration.
  • Teams that need graph analytics, backlinks dashboards, or a web-based shared knowledge base.
  • Extremely large vaults if you do not want to tune max_nodes, physics parameters, or exclusion rules.

Key Features of graf

  • Wikilink parsing — graf extracts both [[Title]] and [[Title|Display Text]] patterns from file content. That means it works with standard markdown knowledge-base syntax instead of a custom format.
  • Frontmatter and title resolution — graf reads YAML frontmatter keys like title: and tags: [], then falls back from frontmatter title to first # heading to filename stem. Link matching is case-insensitive, which lowers friction in repos with inconsistent capitalization.
  • Interactive terminal graph — graf builds a force-directed network that you can pan, zoom, and drag with keyboard or mouse. The repo advertises a minimap, a grid overlay, a help layer, and node repositioning, which gives it more control than a static ASCII map.
  • Search across the vault — pressing f opens a fuzzy search popup that matches node titles, relative paths, and tags. This is the fastest path from a broad graph to a specific note when the repo is too dense to scan visually.
  • Layered configuration — graf uses defaults, then ~/.config/graf/config.toml, then CLI args, then GRAF_* environment variables. That order is practical because it lets you ship repo-local preferences while still overriding them from CI or a shell alias.
  • Theme and color control — graf ships with 11 built-in themes, including Tokyo Night, Catppuccin Mocha, One Dark, Gruvbox, Dracula, Nord, Rose Pine, Everforest, Kanagawa, and Solarized. You can also override individual colors like node_color, edge_color, and label_color with hex values.
  • External editor handoff — double-clicking a node or pressing Enter opens the file in the editor from EDITOR, with vim as the fallback. That makes graf a navigation layer, not a replacement for your actual editing environment.

graf vs Alternatives

ToolBest ForKey DifferentiatorPricing
grafTerminal-first markdown graph navigationLocal filesystem scanning with interactive force-directed layout in the shellOpen-Source
Obsidian Graph ViewUsers already inside ObsidianPolished GUI graph tied to a larger note app ecosystemFreemium
LogseqOutliner-first PKM workflowsBlock references, daily notes, and graph view in one appOpen-Source
FoamVS Code users building a markdown wikiEditor-native workspace inside VS Code instead of a standalone terminal appOpen-Source

Pick Obsidian Graph View if you want a richer GUI and you are already committed to Obsidian. graf wins when you want the graph to live next to your shell, not inside a proprietary app container.

Pick Logseq if your workflow is block-oriented and you want daily notes plus backlinks in one UI. graf is narrower, but that narrow scope is why it is easier to drop into an existing repo without restructuring your notes.

Pick Mnemosyne if your goal is note retention or review rather than live graph traversal. The overlap is knowledge management, but graf is specifically optimized for scanning the current working directory and jumping straight into files.

For more terminal-native tools, see browse all CLI tools. If your workflow is mostly markdown and local files, it also helps to browse all markdown tools.

How graf Works

graf starts with a recursive scan of the current working directory and builds a graph from plain files, not from a separate database. It collects nodes from .md and .mdx files, parses [[wikilinks]], reads YAML frontmatter, and resolves titles using a fallback chain that prefers title:, then the first heading, then the filename stem.

That parsing step creates the data model the UI depends on: nodes represent files, edges represent links, and tags or folders can be used for coloring and filtering. The physics layer then uses parameters like ideal_distance, damping, gravity, timestep, and prevent_overlapping from the TOML config to keep the graph readable instead of collapsing into one tight ball.

The interaction model is intentionally direct. You can pan the canvas, drag nodes, zoom with the keyboard or mouse, search with f, refresh with r, and open a file with Enter or double-click. That design makes graf fit the same mental model as less, fzf, and other shell-first tools: inspect, filter, jump, and return to editing.

cd ~/docs/my-wiki
EDITOR=nvim graf

That command launches graf from a directory full of markdown files, then opens selected notes in Neovim instead of the default vim. After startup, graf renders the graph, applies your theme and overlay settings, and uses hot-reloaded config so visual tweaks do not require a full rebuild of the workflow.

Pros and Cons of graf

Pros:

  • Filesystem-native workflow — graf reads local markdown directly, so there is no import step and no sync dependency.
  • Strong editor integrationEDITOR support means graf works with Vim, Neovim, VS Code CLI, or any editor that can open a file path.
  • Useful terminal ergonomics — pan, zoom, drag, search, minimap, status bar, and help overlay make the graph usable at scale.
  • Flexible configuration — the four-layer override model gives you repo-local control without blocking per-shell overrides.
  • Theme depth — 11 presets plus hex overrides are enough to match most terminal color schemes without patching source.
  • Rust delivery model — the tool ships as a compiled binary, which is a good fit for developers who prefer a single fast executable over a Node or Python runtime.

Cons:

  • Not a full note app — graf is a graph view, not a replacement for Obsidian, Logseq, or a sync-backed PKM platform.
  • Large vaults need tuning — the sample config exposes max_nodes, physics controls, and exclusion rules because dense repos can get noisy fast.
  • Unknown packaging story — the page points to Cargo, source build, and GitHub releases, but it does not document a distro-agnostic installer.
  • Graph quality depends on note hygiene — if your titles, tags, and wikilinks are inconsistent, the visualization gets harder to trust.

Getting Started with graf

cargo install graf-rs
cd ~/docs/my-wiki
EDITOR=nvim graf

If you prefer source builds, the repo also documents git clone <repo-url>, cd graf, and cargo install --path .. graf expects Rust 1.85+ and Edition 2024, so make sure your toolchain is current before building from source.

On first run, graf scans the current directory for markdown files, resolves titles and links, then draws the graph in your terminal. If you want a different look, create ~/.config/graf/config.toml, set a theme or color overrides, and let hot reloading handle the rest.

Verdict

graf is the strongest option for terminal-first markdown graph navigation when you already keep notes as local files and want zero database migration. Its biggest strength is direct, interactive access to wikilink structure; its main caveat is that it is a visual navigator, not a full knowledge-base platform. If your workflow lives in the shell, graf is worth adopting now.

Frequently Asked Questions

Looking for alternatives?

Compare graf with other CLI Graph Visualizers tools.

See Alternatives →

You Might Also Like