Changelog
Every DocGraph release is listed here, newest first.
The notes for the version you are running also ship inside the app, so you can read them offline. They open in a What’s new tab once after each feature release, and you can reopen them from Help → Release Notes, ⌘K → Show Release Notes, or Settings → General → Updates. Inside the app, the tab can load the pictures for these notes from this site; that request sends nothing about you, and while automatic update checks are off it happens only when you click to load them. This page is the full history.
DocGraph checks for updates once a day. The check fetches one file from GitHub and sends nothing about you or your notes. Turn it off in Settings → General → Updates. Either way, nothing installs without your click.
v0.1.0 — 2026-10-21
Section titled “v0.1.0 — 2026-10-21”The first DocGraph release. This is a beta: things may still change and you may hit bugs, so keep a backup of your notes. Tell us what goes wrong with Help → Report a Problem….
DocGraph runs on Macs with Apple Silicon (M1 and later), macOS 13.3 or later. Macs with an Intel chip are not supported yet.
Writing
Section titled “Writing”- Edit HTML and Markdown notes directly on the page, with Markdown shortcuts, slash commands, callouts, task lists, tables, and code blocks.
- Whiteboards for diagrams, entity-relationship tables, and freeform layout.
- Tables and charts that read from your notes and update as they change.
- Sort any table by clicking a column header: data tables and saved queries keep the sort as a view, and plain tables reorder their rows with undo.
- Templates, daily notes, and Quick Capture from anywhere with a global hotkey.
- Add images by pasting, dragging, or typing
/imageto pick a file. Images are stored in your vault, fit the page width, and resize from any corner. - Voice, on your Mac: the Voice button in the page bar dictates into the note where your cursor is, and reads the page aloud. Turn it on in Settings → Voice; each part downloads its speech model the first time you use it.
From the menu bar, without opening the window
Section titled “From the menu bar, without opening the window”- Quick Capture and Quick Todo start with the text you just copied, selected: Enter keeps it, typing replaces it. Each copied text is offered once, and you can turn this off in Settings.
- End a capture or todo with
priority:high,status:todoor any property you’ve declared, and it lands as a property. “Send the deck by friday” also gets a due date, and your words stay as you wrote them. - Press ⌘P in Quick Capture to add the thought to the end of any note instead of your inbox. The notes you used last are listed first.
- The menu-bar icon has Recent Notes: your starred files, then the notes you opened last. The quick switcher lists the same notes when you haven’t typed anything yet.
- Clipboard to Today’s Note adds whatever you copied to today’s note with a timestamp, in one click from the menu bar, ⌘K, or a shortcut you choose. A notification tells you where it went.
Getting around, and working on many notes at once
Section titled “Getting around, and working on many notes at once”- Links into your notes from anywhere. Right-click a note or its tab
(or ⌘K) for Copy link to note; Copy link to block copies the
same kind of
docgraph://link — paste it into Shortcuts, a browser or another app and it opens the note, scrolled to the block. Hold ⌥ to copy it as a Markdown link. A note that moved opens its closest match; a link to another vault asks before switching. - Notes reopen where you left them, after a restart too. The chat’s empty
state offers Continue:
. - Find & Replace across the vault (⌘⇧H): each match shows the change as a redline before anything is written, you tick the ones to change, and every note gets its own undo step. Tags, links, code and front matter are left alone unless you ask.
- Select several notes in the sidebar with ⌘-click and ⇧-click, then move, tag, set a property, convert, or trash them together — or drag them all.
- Weekly and monthly notes beside your daily one, with ISO week numbers;
{{daily:list}}in a weekly template links that week’s days. - Random note and On this day in ⌘K and in the chat.
- Drag a heading in the Outline to move its whole section.
- Template slots: up to three templates on a key of your choice, each going into a new note, today’s note or the open note. Also in the menu-bar icon under New from Template.
- Pages of a type with a status or priority show them as chips in the header: click one to change it.
Markdown, the way your vault already writes it
Section titled “Markdown, the way your vault already writes it”- An Obsidian vault opens as-is.
[[wikilinks]]— with|label,#Headingand#^block— are real links: found by name anywhere in the vault, shown in backlinks and the graph, kept up to date when you rename a note, and dimmed when no note has that name yet (following one offers to create it). ![[embeds]]: an image (|300sets its width), a whiteboard preview, or another note — or just one section or block of it — shown in place.==highlight==,^[inline footnotes],$math$and%%comments%%.- Front matter:
tags:tag the note,aliases:give it other names (found by[[links]], the[[picker and ⌘K), anddir: rtlmakes it right-to-left. - Suggestions while you type
#,@,due:and@@— the same vocabulary HTML notes use. - Callouts, Mermaid and math in the slash menu; a Highlight button in the selection toolbar; click an image and Backspace to remove it.
- Convert to HTML page (right-click a Markdown note, or ⌘K) turns the note into an HTML page next to it: todos, callouts, footnotes, embeds and tags come along, links to it from other notes are updated, and the original goes to the trash.
In both kinds of note
Section titled “In both kinds of note”- Code blocks are syntax-highlighted by language.
- Math, rendered from TeX (
/math). - Copy link to block in the right-click menu, and heading and block links that open the note scrolled to the right place.
- Embed another note, a section of it or one block (
/embed); embedded content never runs scripts, and an encrypted note stays locked. - Paste a URL over selected words to link them.
- Strikethrough in the selection toolbar and right-click menu, or
⌘⇧X— written~~text~~in Markdown,<del>in HTML. ⌥↑/⌥↓move the block you’re in; a heading takes its section with it.- HTML notes get footnotes (
/footnote), numbered for you when the page is shown.
Finding things
Section titled “Finding things”- Full-text and semantic search across the vault, plus a graph view of how your notes link together.
- Saved queries that collect notes, tasks, and table rows from across the vault.
A graph you can navigate
Section titled “A graph you can navigate”- Search the graph by name, then press Return to fly to the match.
- Path: Shift-click two notes and choose Path to light the shortest
chain of links between them. Type
/pathto keep that path in an HTML note as a live list. - Orphans: one button cycles notes with no links between dimmed, shown, hidden and orphans only.
- Pins: hold Shift as you drop a note to pin it where it is.
- Topics: color the graph by topic, show one topic at a time, and Ask about a topic’s notes in chat. Similar notes draws faint edges between notes that read alike.
- Filter by folder or tag, keep a filter as a saved view, and Shift-click notes to Ask AI about N notes.
- Saved queries can sort notes by how central they are (PageRank), and embedded notes count as links.
Timeline, automations, and notes that come back
Section titled “Timeline, automations, and notes that come back”- Timeline panel: every dated thing in your vault on one axis — dates you wrote, task due dates, captures and version-history commits. Filter by person, note type, tag or topic, select a range of columns and ask the AI about exactly those notes, or Save as chart into a note.
- Automations (Settings → Organize → Automations): small automations that need no AI, such as when a note gets tag #archive, move it to Archive/. Preview shows what a rule would do, every run can be undone in one step, and a rule can never bounce a note back and forth.
- Link all in the Related tab links every unlinked mention of other notes at once, and Link everywhere links this note wherever it is named. One Undo reverts the whole run.
- Coming back, under the Calendar’s selected day: On this day from earlier years, busy notes nobody has touched in 90 days, and decisions whose review date has passed.
- Vault health is a query source listing orphans, broken links, duplicate titles, missing keys, suggested tags, out-of-date summaries, disagreements and rule runs.
Person pages
Section titled “Person pages”- Every
@namein your vault can have a page. Open the Mentions panel, pick a name, Create page —Mentions/<name>.htmlappears with three sections that fill themselves: open items assigned to them,#feedback/…lines about them, and every mention. Nothing is copied: each section is a saved query that asks about the page it sits in, so the same three queries serve every person. Click a note’s name in any section to open it. ⌘-click an@namein a note to jump to their page. - Saved queries can say
@page.title,@page.folder,@page.pathor@page:<property>as a filter value and resolve it against the page they render in. - The
peoplequery source carries the line each mention sits on and that line’s tags, so “every#feedback/winline about Omar” is one filter. - Settings → Vault → Templates & daily notes has a Mentions folder
setting. A
Templates/person.htmlof your own replaces the built-in page shape.
- New 1:1 in the Mentions panel, or ⌘K → New 1:1 with… and a name,
opens today’s 1:1 at
Mentions/<name>/1-1/<date>.html— created on first use, the same note every other time that day. - Carried over lists every unchecked task from your earlier 1:1s with that person, live. Tick one anywhere and it leaves every later meeting; nothing is copied, so nothing is counted twice.
- Recent 1:1s links the last three meetings, newest first — in the 1:1 and in the 1:1s section on the person page.
- Renaming a person moves their 1:1s with their page and re-points them.
- A
Templates/one-on-one.htmlof your own replaces the built-in shape;{{person}}is the person’s name.
Presenting
Section titled “Presenting”- Right-click a folder and choose Present to play its HTML pages as a slide deck, in the order the file tree shows them. Drag a page in the tree to move its slide. Arrow keys or Space move between slides, and Esc stops.
- A small bar at the bottom shows where you are and lists every slide. It fades away while you talk and comes back when you move the mouse.
- Press P while presenting to open the presenter view: a second window only
you see, with your speaker notes, the next slide, and a clock. It opens on your
other screen when you have one, and the arrow keys work in either window.
A slide’s notes are a section headed Speaker notes: the heading and
everything under it, up to the next heading of the same level or the end of
the slide. Choose Speaker notes from the
/menu to add one. Notes never appear on the slide itself. - Speaker notes are ordinary content, so they hold anything you type: bulleted
and numbered lists, nesting, bold, italic, code and dividers, and the presenter
view shows them that way. Keep the notes last on the slide. Beside the notes,
the presenter view shows about how long they take to read aloud, and A− /
A+ (or
[/]) change their size. - The presenter view times your talk. Set a planned length from the Talk label,
or with a
deck-minutesproperty on the folder, and give any slide its own time with aslide-minutesproperty — the other slides share what is left. Talk and slide time show as actual / planned with a small bar each, turn amber near the plan and red past it, and a band on the talk bar shows whether you are ahead or behind. Pause stops both clocks, and clicking the talk clock twice restarts it. - The Properties panel suggests names as you type a new property: the names
DocGraph reads, such as
deck-minuteson a folder andslide-minuteson an HTML page, each with a line saying what it does, and the names already used in your vault, the most used first. Any other name still works. A near miss likeslide-minuteasks whether you meant the real one. - The demo vault includes a Slide Deck folder to try it on: right-click it and choose Present.
Your vault’s vocabulary
Section titled “Your vault’s vocabulary”- Settings → Ontology lists the kinds of notes in your vault (
meeting,project,decision,person, your own), the keys each should carry, what a property points at (owner→ a person), and the link types the AI may write. Found in your vault offers what you already use but never declared. Until you change something, no file is written. - A typed note missing a key its type expects shows a hint in the Properties panel. It is only a hint: nothing is blocked or filled in.
- One person, several spellings.
@Nady,@nady_ahmedand a matching email address are grouped into one person in the Mentions panel, person pages, the graph and chat. Split undoes a grouping for good, and when DocGraph is unsure it asks Same person? instead. Your notes are never changed.
Your notes stay yours
Section titled “Your notes stay yours”- Your notes are plain
.htmlor.mdfiles in a folder you choose. No account, no sync service, nothing to sign up for. - Optional at-rest encryption, per note or per passage, using age with a passphrase only you hold. It is built into every download — there is nothing to enable — but nothing is encrypted until you lock it.
- Every off-machine request goes through one checkpoint: HTTPS only, and only to a host on the list for that purpose. Apart from the daily update check, the features that can reach the network are off until you turn them on. Requests show live in the title bar while they happen and are recorded in the Activity Ledger afterwards. That includes model downloads, the model list refresh and the Hugging Face file lookup, each with the bytes it transferred.
- Git backup only uses encrypted remotes: an
https://or SSH remote, or a folder on this computer or a drive.http://andgit://are refused.
Opening vaults safely
Section titled “Opening vaults safely”- DocGraph never opens your whole home folder, the disk root, or a system folder as a vault — it explains why and asks for your notes folder instead. This holds when you open a file from Finder with “Open With” too.
- A very large vault opens without waiting on a loading screen: the window opens right away, the sidebar says when a scan was cut short, and Keep scanning indexes the rest.
- Hold ⌥ Option while DocGraph launches to skip your last vault and pick another.
A bigger demo vault
Section titled “A bigger demo vault”- The demo vault has a Features folder: a short page for each feature the tour doesn’t cover, with the real thing to try wherever it can. That includes Obsidian wikilinks, embeds, math and footnotes, live queries over your tasks and tags, paragraph properties, an architecture diagram and a database schema, right-to-left text, people and dates, templates and daily notes, two pages that disagree so the Problems panel has a contradiction to show, and a locked line on the Encryption page that you can open with a password. A Templates folder holds a meeting-notes template to try with ⌘N.
- It also has a Launch Checklist whose todos and lines carry status, priority, owners and blocked-by links, with heading progress and a board to drag them on, and pages for the Timeline, Rules, notes that come back, your vault’s vocabulary, setting up AI, and the What’s new tab.
Extending
Section titled “Extending”- An MCP server so external tools can work with your vault. Plugins are coming in a later release.
AI, if you want it
Section titled “AI, if you want it”- Off until you turn it on. Runs on your Mac with the built-in model runtime, Ollama, or Apple’s on-device model, or through a cloud provider whose key you supply yourself.
- Chat with your vault, generate drafts, and let the agent edit files with your approval.
Local AI without installing anything else
Section titled “Local AI without installing anything else”- Set up AI walks you through it in four short steps. It first shows what your computer has — memory, free space, and any AI already on it (Ollama and its models, AI agents like Claude Code) — then lists the ways to turn AI on and lets you pick: download a model here, use Ollama, use Apple’s on-device model (where your Mac supports it), use an AI agent you already have, or use an AI provider with an API key.
- No Ollama needed. DocGraph includes its own AI runtime. Pick a model — Small, Balanced or Large, with its download size and speed shown — and DocGraph downloads it, checks it, and runs it on your computer. The one that fits your computer best is marked Suggested, using MMF; the choice is always yours.
- Already use Ollama? DocGraph finds it and lists all your models; pick one and nothing is downloaded. If Ollama is installed but not running, or has no models yet, the wizard helps with that too.
- On a Mac with Apple Intelligence, the wizard offers Apple’s own on-device model: nothing to download, and it runs on your Mac. If your Mac can run it but Apple Intelligence is off, the wizard opens the right System Settings page for you. It is best for quick questions about your notes; for bigger jobs, pick a downloaded model.
- Notes in Arabic, Hebrew, Chinese or other languages? Setup asks what language your notes are in. Many languages lets the AI find the right notes in about 94 languages — even when you ask in English about a note written in Arabic. You choose; nothing is picked for you. The choice applies to every vault, and you can change it in Settings → AI → Chat & index.
- Settings → AI → Models & providers has a Built-in AI section: your
downloaded models (use, delete, disk used), Add a model file you have
for a
.ggufyou already own, and Check for new models. - The wizard ends only after a real answer from the AI, and everything can be changed later in Settings → AI.
The AI finds the right notes more often
Section titled “The AI finds the right notes more often”- You choose the search language first. The AI can’t search your notes until you pick English only or Many languages. Setup asks; with AI on, DocGraph asks when it starts and the chat panel asks until you do. Until then nothing is downloaded and nothing is indexed for the AI; ⌘K keyword search works as always.
- A second small model double-checks what search found. It reads each found passage together with your question and puts the best first. It downloads with the search helper and runs on your computer: about 75 MB in total for English, about 270 MB for many languages. Turn it off with Rerank results in the AI Index section of Settings → AI → Chat & index.
- “Nothing in your notes matched” — with English only, when your notes have nothing on a question, the chat says so under the answer instead of handing the AI unrelated notes.
- Follow-up questions on a new topic stay on that topic instead of being mixed with the previous one.
- Agent mode works on small models. When a model’s memory is too small for every tool, DocGraph offers it fewer tools instead of letting your notes be cut from the prompt, and says so while it answers.
- ⌘K puts notes whose title matches above notes that only mention the word, and completes only the word you are still typing.
Chat that keeps up with you
Section titled “Chat that keeps up with you”- An answer is never lost. DocGraph saves each question the moment you send it and each answer as it finishes — including one you stopped (what it had written so far, marked as stopped) and one that failed. Switching to another sidebar tab mid-answer keeps it: come back and it is still arriving.
- Retry under a failed answer runs the same question again.
- The first question after opening the app is faster on Apple Silicon models: DocGraph warms the model the way your questions actually use it.
- Saved chats: search them, rename them, pin the ones you come back to, and see every chat in the vault (with a This file filter). Deleting asks first and can be undone for a few seconds.
- Point a question at a note: type @ and a note’s name, or drag a note from the file tree onto the chat box. Type / for the actions the AI can take (/create, /edit, /tag, /rename).
- ⌘⇧L opens the chat and puts the cursor in it, from anywhere. Esc stops an answer; ↑ in an empty box brings back your last question.
- Answers show italic,
strikethrough, nested lists and coloured code, and the list keeps your place when you scroll up while an answer streams. - Each step the AI takes shows how long it took, with its exact request and result one click away.
The AI follows how your notes connect
Section titled “The AI follows how your notes connect”- Search follows your links. When the AI looks for an answer it also
follows the links between notes, in both directions, so a note that cites
the one you asked about can surface too. Questions like “What depends on
the billing API?” follow your typed links (
depends-on,supersedes,cites, and the others in your vault’s vocabulary). - Narrow a question in plain words. “What did we decide about the cache,
tagged #ops, last week?” searches only those notes. Tags,
@people, dates such as last month or since 2026-09-01, note types (“what decisions…”) and page properties all work. A line above the answer shows what the search was narrowed to, and if a filter matches nothing the normal search runs instead. - Connections under an answer. When the notes an answer used link to each other, Connections lists those links, such as invoice-service ─depends-on→ billing-api.
- Summaries and earlier answers are searched too. A note you summarized can be found by what it is about, and answers that cited your notes help later questions. Your notes’ own text always ranks first.
Ask about the whole vault
Section titled “Ask about the whole vault”- “What are the main themes of my vault?” or “What do I know about pricing?” get an answer drawn from every topic, not a handful of passages. DocGraph groups closely connected notes into topics, your local model writes a short summary of each in the background, and a whole-vault question is answered from those summaries, citing the topics it used.
- DocGraph decides from the question’s wording whether it is about the whole vault. A factual question always gets the normal search.
- Turn it off with Vault topics in the AI Index section of Settings → AI → Chat & index. Summaries live in the index only, never in your notes, and are always written by the local model.
When your notes disagree
Section titled “When your notes disagree”- Turn on Find contradictions (Settings → AI → Chat & index, off by default, needs AI). Your local model reads facts from changed notes, and when two notes state the same fact differently — a soak window of 30 minutes in one, 45 in another — the note shows a strip: Another note says otherwise, with both values and the other note’s date.
- In chat, the AI is told when a passage it uses is disputed, so it gives both values instead of silently picking one.
- A note that links to the other as
supersedesorsourceis an update or a citation, not a disagreement, and is never flagged. - Tested on
qwen3.5:4b-mlx. Some smaller models find nothing.
The assistant remembers
Section titled “The assistant remembers”- Memory across chats. With Agent Mode on, the assistant can propose a
line to remember, such as a preference. Nothing is saved until you click
Remember. Everything it remembers is one ordinary note,
Memory/agent.md, that you can edit or delete.
Web search that tells you when it isn’t working
Section titled “Web search that tells you when it isn’t working”- Settings → Web search opens with a status line saying whether search works right now, and what to do when it doesn’t: nothing answering, the server’s search engines refusing, JSON output turned off, or a server that isn’t on this machine. A test that finds no results is reported as a problem, not a pass.
- Set it up for me starts a SearXNG search server in Docker, reachable only from this machine, with engines that answer. If one is already running, DocGraph finds it and offers it with one click. You can also copy the terminal command instead.
- No Docker yet? The page checks first and shows only the steps that apply: a download link for your system and three install steps if Docker is missing, an Open Docker Desktop button that waits for it to start if it’s installed but not running, and a “set it up yourself” guide.
- Setup shows its progress. Each step (download, start, wait for it to answer, test search) is ticked off as it happens, with the download counted in parts and a running clock, so a first download of a few minutes doesn’t look frozen. A failed step says what went wrong and offers Try again.
- Choose the language, SafeSearch level, date range and number of results for web searches. If your server can’t filter by date, the search runs without that filter and Settings tells you so, instead of returning nothing.
- Allow in this chat on a search card sends that search and stops asking for the rest of that conversation. It never carries over to other chats. “Approve all this session” for writes does not cover web searches; they still ask.
- Recent searches lists what the assistant searched for until you quit. The list is never saved to disk.
- A pasted results-page link is tidied to the server’s address.
Cloud AI providers — your own key, off by default
Section titled “Cloud AI providers — your own key, off by default”- Chat can use OpenAI, Anthropic, OpenRouter, or any OpenAI-compatible endpoint (LM Studio, llama.cpp) with your own API key. Set one up in the AI Providers section of Settings → AI → Models & providers: save the key (it goes into your OS keychain, never DocGraph’s files), then Allow the provider in the system dialog. Its models then appear in the chat picker, labelled off-machine.
- Nothing leaves until you choose it. Local stays the default everywhere. A cloud model is used only by a conversation whose picker names one, or by a document action (/write, or Summarize this file, Check spelling or Beautify in the ✦ AI menu) whose Run on choice names one. Tags and inline suggestions always stay local.
- You can see every call. The title-bar badge reads Cloud AI · {provider} while a cloud model is selected; a strip above the composer says where your message will go; each answer shows its tokens and cost; every call is logged in Settings → Privacy → Activity & audit.
- Secrets are blocked by default from prompts bound for a cloud provider (turn off in AI Providers).
- Set a spending limit on your API key. Calls are billed to your account by the provider. DocGraph shows each answer’s cost and stops an agent turn on a cloud model after 6 model calls, but the limit you set with the provider is the only cap DocGraph cannot bypass.