Agate
Obsidian plugin · free & open source

Your Obsidian bases, visualized.

A base already gathers your notes and their properties. Agate draws that base as a live chart — maps, networks, timelines, dashboards, headline numbers — and redraws it the moment you edit a note. Under the hood it's Vega and Vega-Lite, a mature grammar with a huge public gallery, so you never run out of chart types.

Left: a base listing battle notes with date, outcome and phase columns, the Battle of Smolensk row highlighted. An arrow points to the matching mark on Minard's 1812 map on the right, where a tooltip shows that note's properties.
Left, battle notes in a base. Right, the same notes drawn as Minard's map of 1812. Each mark is a note: hover for its properties, click to open it. (full note)

how it works

01Notes with propertiesYou already keep them: trips, books, battles. A base gathers and filters them; the properties are the data.
02A spec draws themPick a built-in recipe, or hit Copy prompt for an LLM and paste the spec back. No chart library to learn.
03Live in your vaultAs a base view, embedded in a note, in Canvas or the sidebar. Edit a note and it redraws.

why agate

A real visualization grammar, not a short menu of charts.

Agate's charts are Vega and Vega-Lite specs. Vega is a visualization grammar — a declarative JSON language for describing a chart, built at the University of Washington's Interactive Data Lab. You state what the data is and how it maps to marks, scales and axes, and the grammar draws it. So one language spans a bar chart and a force-directed network alike, every chart is a plain file you can read, version and reuse, and a decade of public examples is yours to borrow. You can hand-write a static spec, adapt a gallery example, or have Agate generate one — it's the same JSON either way.

{
  "mark": "bar",
  "data": { "name": "books_base" },
  "encoding": {
    "x": { "field": "note.genre" },
    "y": {
      "aggregate": "mean",
      "field": "note.rating"
    }
  }
}
A whole Vega-Lite chart — average rating by genre. books_base is your Books base; note.* are its properties.
mature

Built on Vega & Vega-Lite

A decade-old visualization grammar from the UW Interactive Data Lab, with a large public example gallery and an online editor. Battle-tested, documented, and still growing — you inherit all of it.

expressive

One language, any chart

Statistical charts, maps and globes, force-directed networks, hierarchies, sankeys, custom layouts — all the same declarative JSON. If you can describe it, the grammar can draw it.

portable

Plain JSON, exportable

Specs are ordinary Vega. Export SVG or PNG, prototype in the online editor, reuse the same file across bases and vaults, and share with people who have never opened Obsidian.

interactive

Charts you can use

Tooltips with images, brushing, linked views, and click any mark to open the note behind it. A chart becomes a way to move around your vault, not just a picture of it.

simple to make

You don't have to write the JSON.

Open a base, add an Agate view, and Pick a recipe — Agate asks which property goes where and writes the spec. Or hit Copy prompt for an LLM: it packs your base's properties and sample rows with the rules Agate needs, so you describe the chart in words and paste back a working spec. Prefer to author it yourself? Every spec is a plain file you can edit by hand.

more it can do

It reaches past the base.

A chart isn't limited to the properties in the view. A spec can fetch from the web, load each note's own data, sum the base into headline counters, or draw on a real map. See the full gallery →

A board-game tooltip showing cover art fetched from a URL

A note can carry a URL: a cover for the tooltip, or a dataset. Remote data loads only once you allow it.

How to →
Horizon chart of twelve market series, one strip per note, each loaded from that note's own CSV

Point each note at a CSV or a URL; Agate loads one dataset per note. Here, twelve market notes, each with its own FRED series.

How to →
Rows of big headline numbers from five notes: plays, trips, practice attempts, hike miles and Napoleon's army

Counts, sums and averages over the base as big headline numbers that update with every note. Vega does the maths.

How to →
The Appalachian Trail route from Springer Mountain to Neel Gap over a colorful OpenTopoMap basemap

Real map tiles under your routes: topo, hillshade or satellite, keyless out of the box. Keyed providers read their token from Obsidian's secret storage.

How to →