explaingit

ganten7/navi

Analysis updated 2026-06-24

12RustAudience · developerComplexity · 3/5Setup · moderate

TLDR

Native Rust desktop graph viewer for org-roam notes that reads org-roam.db directly, draws an interactive node graph, and jumps Emacs to the right file via emacsclient on double click.

Mindmap

mindmap
  root((navi))
    Inputs
      org-roam.db SQLite
      Running Emacs process
      Config JSON
    Outputs
      Interactive graph window
      emacsclient jumps
      Age heatmap view
    Use Cases
      Browse a notes graph
      Find orphan notes
      Open a note in Emacs
    Tech Stack
      Rust
      SQLite
      macOS
      emacsclient
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Browse an org-roam knowledge base as an interactive graph without opening Emacs

USE CASE 2

Spot orphan notes or weakly connected clusters using the age heatmap and hop limit views

USE CASE 3

Double click a node in Navi to jump straight to the heading inside a running Emacs session

USE CASE 4

Customise the config at ~/.config/navi/config.json to point at a non-standard org-roam.db location

What is it built with?

RustSQLitemacOSemacsclient

How does it compare?

ganten7/navibigsaltyfishes/wallpaper-engine-for-macoshl9565/codexpilot
Stars121212
LanguageRustRustRust
Setup difficultymoderatehardhard
Complexity3/54/54/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

macOS Apple Silicon is the primary target, Linux needs extra glue to render and Windows is not supported.

In plain English

Navi is a desktop graph viewer for org-roam, a popular note-taking system that runs inside the Emacs editor. The program shows your notes as an interactive web of connected dots, similar to how Obsidian draws its graph view. It opens in its own native window, so you do not need to install any Emacs package or open Emacs itself to browse the graph. The tool is written in Rust. It reads the org-roam.db file directly, which is the SQLite database where org-roam stores all the links between notes. When you double-click a note in the graph, Navi sends a message to your running Emacs process through a helper program called emacsclient, which then jumps to the right file or heading inside Emacs. macOS on Apple Silicon is the primary supported platform. A pre-built Navi.app ships with each release, you download a zip from the Releases page, unzip it, and double-click. On first start, Navi tries to find your org-roam.db automatically by checking common locations used by vanilla Emacs, Doom, Spacemacs, and XDG layouts. It then writes a small config file at ~/.config/navi/config.json that you can edit later. Linux builds compile but need a bit of extra glue before the renderer works correctly. Windows is not supported. The interface offers many keyboard and mouse controls: drag to pan, scroll to zoom, click to select a node, press T to cycle colour themes, A to switch to an age heatmap, L to limit the view to nodes within one to three hops of the selection, slash to search by title, and so on. The README also documents a hand-built frame pacer for macOS that ties painting to the display vsync signal, reaching about 4.17 ms per frame on a 240 Hz panel and dropping CPU usage close to zero when the window sits idle. The repository ships as a source release with no LICENSE file included, the author notes that one should be added before redistributing binaries.

Copy-paste prompts

Prompt 1
Walk me through downloading Navi.app from Releases on an Apple Silicon Mac and getting it to find my Doom Emacs org-roam.db.
Prompt 2
Explain how Navi reads org-roam.db and what schema fields it pulls to build the graph layout.
Prompt 3
Help me compile Navi from source on Ubuntu and add the extra renderer glue so the graph window paints correctly.
Prompt 4
List the keyboard shortcuts in Navi for cycling themes, switching to the age heatmap, and limiting the view to one hop.
Prompt 5
Show me how the macOS frame pacer in Navi syncs to vsync and how to disable it for debugging.

Frequently asked questions

What is navi?

Native Rust desktop graph viewer for org-roam notes that reads org-roam.db directly, draws an interactive node graph, and jumps Emacs to the right file via emacsclient on double click.

What language is navi written in?

Mainly Rust. The stack also includes Rust, SQLite, macOS.

How hard is navi to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is navi for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.