Obsidian made “your notes are plain Markdown files on your disk” a mainstream position. The app is free on Windows, macOS, Linux, iOS and Android — including commercial use, since February 20, 2025 — and it has been carried since 2020 by a bootstrapped team of about ten people, funded by users rather than investors. Canvas is Obsidian’s spatial surface: a core plugin that arranges text cards, vault notes, media and live web embeds on an infinite board, saved as .canvas files in JSON Canvas, the open format Obsidian published under an MIT license.
Acres is a local-first, infinite-canvas note app for macOS and Windows. Notes are Markdown cards, boards are readable JSON, and both live in a folder you pick — the files are the product; the app is a view over them. The same card can sit on many boards. The app is a one-time purchase — a 14-day trial, then $59 once — with no account, no telemetry, and everything working offline. It’s built for people who think on a board, and for people whose AI agents work in their notes.
This is the friendliest page in our comparison series, because these two apps agree on everything that usually divides note tools. “File over app” is Obsidian CEO Steph Ango’s 2023 essay — “Apps are ephemeral, but your files have a chance to last” — and it could be Acres’ founding document. Obsidian open-sourced its canvas format at jsoncanvas.org; Acres’ importer reads it. Nobody here is defending a proprietary database. The disagreement is narrower: in Obsidian, the canvas is one feature of a text-first knowledge base. In Acres, the canvas is the app.
Is the canvas the center, or a side feature?
You can tell where an app’s center is by what its team fixes first. Obsidian’s own forum keeps an honest record of Canvas living at the edge. There is no built-in find inside a canvas — that request has been open since 2023, with community plugins filling the gap. Group titles don’t appear in global search. The arrows you draw between cards never show up in graph view; that request has been open since 2022. Obsidian Publish can’t render a canvas at all — “Canvas support for Publish” has sat in the planned column since 2022. There is no official Canvas API, so canvas plugins patch undocumented internals that can break with any update. And performance on large boards is a recurring, sourced complaint — “severe lag when panning and zooming” — with only minor rendering improvements shipped as of mid-2026.
Some of the record is stale, though. The oldest criticism is dead: canvas card text is indexed by Obsidian’s global search now, and a canvas does appear in the backlinks of notes it contains. The gaps that remain are real, just narrower than the 2023-era complaints still being recycled online.
Acres started from the other end. The board is the primary view, and performance was an acceptance gate, not a hope: Acres measures 60fps pan on a production-scale imported board of 15,240 by 10,809 units carrying 88 connectors. Section frames move their contents with them, boards nest inside boards with breadcrumbs, mindmaps grow as keyboard-driven text trees, and PDFs render live first-page tiles — eleven element kinds on one surface.
Where does the text on your canvas actually live?
The deepest difference hides in a small detail. Place an existing note on an Obsidian canvas and it stays a real .md file — it can sit on many canvases at once, and an edit shows up on all of them. But type directly onto the canvas and you get a text card, which lives inside the .canvas JSON: not a note, and invisible to backlinks unless you manually convert it to a file. Obsidian’s help page says so plainly. A canvas-heavy vault ends up holding two kinds of text — real notes and trapped cards — or, as long-time Obsidian writer TfTHacker put it, “two levels of linking notes… and they don’t necessarily correlate.”
Acres has one kind. Every card on every board is a Markdown file in cards/, and a board placement is a geometry-only pointer to it. Writing on a board is writing a note: the card is greppable the moment it exists, wikilinks to it gather as backlinks, and your agents can full-text search its whole body. One card on many boards is the data model, not a workaround. (Acres has board furniture too — stickies, text labels, mindmap nodes — and those are annotations, not searchable cards. The difference is that the default unit of thought, the card, is always a file.)
Obsidian’s other gap here is visibility. A note can live on many canvases, but no UI shows you which ones — that feature request has been open since 2022. The capability exists; the map of it doesn’t.
How do AI agents work with each app?
Obsidian’s stance is principled: no AI inside the app. The manifesto is privacy-first and the roadmap lists no assistant — what Obsidian embraced instead is formats. CEO Steph Ango’s obsidian-skills repository, which teaches agents Obsidian Markdown, Bases and JSON Canvas, has 46,800 GitHub stars — a loud signal of how many people want agents in their vaults. The wiring, though, is do-it-yourself: install the community Local REST API plugin, generate an API key, configure your MCP client — or choose among six-plus competing community MCP servers. It works, and plenty of people run it.
What the stack lacks is a safety layer. Agent edits to a vault are raw filesystem writes, and the failure modes are documented rather than hypothetical: an open claude-code issue (#52493) reports edits that silently fail to save while Obsidian is running, and integration guides describe races where an agent’s change appears briefly and is then reverted by sync. There is no approval queue, no per-edit review, and no record of what an agent changed — the native nets are File Recovery snapshots and, if you pay for Sync, version history.
That gap is the case Acres was built around. The app assumes it is not the only writer. Every save re-reads the disk and 3-way merges, so an agent rearranging a board from the command line folds into the open canvas around whatever you’re dragging; a losing copy is preserved as a conflict sidecar instead of silently lost. Destructive agent edits arrive as proposals with word-level diffs before anything is applied. An append-only ledger attributes every agent change to its actor — claude-code, cursor, a named CLI run — with one-click revert per change and a “while you were away” digest when you return. The MCP server, 29 tools, ships bundled inside the app; Settings writes the config for Claude Code, Cursor, OpenCode, Codex or Claude Desktop in one click, no Node install required.
Day to day, the built-in AI panel is bring-your-own-key across seven providers, or Ollama running locally with no key at all — no subscription either way. The whole layer is documented at /for-agents/. Acres’ line for it is the honest summary: “Agents do the work. You stay editor-in-chief.”
Who should pick Obsidian?
A lot of people, honestly. If your notes are primarily written — and the canvas is somewhere you occasionally arrange them — Obsidian is the deeper, more proven tool: whole-vault linking, graph view, tags and properties, Bases database views, and search across thousands of notes, on every device you own. Its 6,762 community plugins and 698 themes cover nearly any workflow Acres doesn’t ship — Dataview, Templater, Excalidraw, Zotero — while Acres has no plugin system at all. The services are mature and inexpensive: Sync is $4 a month billed annually, end-to-end encrypted with version history, and Publish turns a vault into a public website for $8 a month.
The surrounding world is enormous — a 344,000-member subreddit, roughly 195,000 people on Discord, six releases shipped in the past 30 days. And if you need Linux or a phone in your workflow, this isn’t a close call: Acres has no mobile, web, or Linux version. Obsidian is the better knowledge base with a canvas attached; Acres is the better canvas with a knowledge base underneath.
Who should pick Acres?
Two kinds of people. The first thinks on the board. If you’ve used Obsidian Canvas and kept wishing the whole app treated the board as the main event — cards that are real searchable notes, measured performance, sections and nested boards and mindmaps as core features rather than plugin territory — Acres is that wish built as a product. Heptabase refugees know the feeling; see Acres vs Heptabase. The second kind works with agents. If Claude Code or Cursor is part of how you think, Acres hands them a vault that ships agent-ready, edits that merge instead of clobber, and a ledger you can audit — a safety layer Obsidian’s community stack doesn’t offer today.
The trade is plain: Acres runs on macOS and Windows only — no mobile, no web, no Linux. Your notes are plain files on disk, so multi-device is whatever you make of it — iCloud Drive, Git and Syncthing all work on a folder of Markdown — and an optional end-to-end encrypted sync service exists. If you’re also weighing text-first, outline-shaped tools, see Acres vs Logseq.
Switching
“Switching” is the wrong word here, and that’s the point. Both apps work on plain Markdown folders, so trying Acres risks nothing and destroys nothing: the importer reads your Obsidian vault and builds an Acres vault from it — the original is never touched, and Obsidian keeps opening it exactly as before.
What the import does: folders become a navigable map of boards; wikilinks become visible connections and in-card link chips, resolved with Obsidian’s real rules, aliases included; .canvas files become real Acres whiteboards with their original positions; daily notes join Acres’ journal gently — an existing journal day gets an “Imported from Obsidian” section, never an overwrite; frontmatter and inline #tags become tags and properties, immediately usable in the Database tab; referenced assets copy in, deduplicated. Re-import is safe — deterministic IDs mean zero duplicates — and a file that fails to parse warns and skips rather than aborting the run.
The honest limits: it is a one-time import, not a live bridge — future Obsidian edits don’t flow in. ![[Note]] transclusions become link chips rather than inline embeds, heading and block anchors link to the card and drop the anchor, and plugin data such as Dataview queries or Excalidraw drawings imports as plain notes and assets. And in the other direction, Acres boards are readable JSON in Acres’ own schema, not JSON Canvas — the importer reads .canvas; it doesn’t write it.
Try the import some evening. Keep both apps for a while. The one you open in the morning is your answer.