# Znote — A beautiful Markdown editor with AI & code built in > Znote is a clean, local-first Markdown editor for your `.md` files. Minimalist by default, powerful when you need it, with four things that set it apart: **ask** your notes with AI, **run** code blocks inline, **connect** your real tools through MCP, and **version** the vault with git. Its treeview composes folders from anywhere on your disk into one workspace — your files stay put, nothing to migrate. Git is optional but supported: a vault that is a repository is pulled, committed and pushed from the app, and the passwords a note carries stay out of the commit — encrypted next to the note. It's all plain `.md`, so your Obsidian vault opens as-is — a one-click companion plugin even adds "Run in Znote" buttons inside Obsidian. Every feature is free, and the AI runs on your own models (BYOK). Companies can have it managed for all their employees instead. A beautiful, focused alternative to Notion and Obsidian. This file is the long-form, LLM-readable version of . It bundles the full content of the homepage, the Obsidian page and FAQ in clean, ingestable Markdown. - **Site**: - **Last updated**: 2026-08 - **Built by**: Anthony Lagrede (one indie dev) — Anthony Lagrede Consulting - **Pricing**: the app is free, all features included, no license · the AI runs on your own key (BYOK), paid directly to your provider · companies can have it managed, on a flat plan from 5€ per seat per month or a custom setup - **Platforms**: Windows (x64/arm64), macOS (Intel & Apple Silicon), Linux (x64 & arm64) - **Privacy**: 100% local-first. Plain `.md` files on disk. No cloud account, no telemetry by default. Works offline. - **AI model**: Bring your own key — OpenAI, Ollama (local), or OpenRouter (hundreds of models). Nothing to buy from Znote; ~5€ of API credit lasts months of daily use. --- ## What Znote is Znote is, first and foremost, a **gorgeous, distraction-free Markdown editor** for plain `.md` files on your disk. Clean WYSIWYG, beautiful built-in themes, focus mode, tabs, tags, full-text search — and a treeview that composes folders from anywhere on your disk into one workspace. The kind of editor you actually want to open. On top of that calm editor sit **four moves**, in the order the home page presents them: 1. **Ask.** Type `@` to bring any note, folder, or code block in as grounded context, or `/` to pick a prompt — the AI reads your material and writes the result inline, where you wrote it. No second app, no chat window. 2. **Run.** JavaScript / Node.js code blocks execute locally. Query a database, fetch an API, shape the rows, and render the output — a chart, a table, anything — inline, right under the code that produced it. 3. **Connect.** **MCP (Model Context Protocol)** plugs real tools into AI blocks: declare servers in your vault's `.znote/mcp.json` (the same config format as Claude Desktop) and use them with `tools=` — GitHub, Postgres, SQLite, Slack, Linear, Notion, Stripe, your filesystem, hundreds more. The servers run locally, and the answer is saved in the note. 4. **Version.** The vault is plain files, so git works on it if you want it — never required. Pull, commit and push from the app, while a note's passwords stay encrypted in a file beside it, so the note itself is safe to commit. Everything else is a clean Markdown editor. The point is to feel minimal and beautiful, while quietly being powerful when you need it. You can think of it as **a beautiful Markdown editor that can think (AI), run (code on data), reach your real tools (MCP) and be versioned like code (git)**. ### Search synonyms (different ways people describe this) beautiful markdown editor · minimalist markdown editor · clean markdown editor · local markdown editor · AI markdown editor · markdown notes app · run code in markdown · markdown with code execution · JavaScript notebook · data visualization in markdown · local-first notes · offline notes · compose folders notes · aggregate folders workspace · multi-folder notes app · Obsidian compatible markdown editor · obsidian companion app · obsidian plugin · run code in obsidian · obsidian vault code execution · Obsidian alternative · Notion alternative · BYOK markdown editor · MCP notes app · Model Context Protocol editor · MCP client markdown · connect AI to tools. --- ## Why Znote - **A beautiful, minimalist editor.** Clean WYSIWYG Markdown, gorgeous built-in themes (Dark, Nord, Orange, Terminal…). It feels calm and focused, not cluttered. - **AI grounded in your files.** `@reference` any folder, file, or code block. The AI answers from your material — not generic guesses — and writes inline. - **Code blocks that run.** JavaScript and Node.js execute locally in the note. `await fetch(...)`, `await db.query(...)`, JSON parsing, chart rendering — output stays next to the code, perfect for presenting and manipulating data. - **Connected through MCP.** Any Model Context Protocol server plugs into your AI blocks — query databases in English, turn meeting notes into GitHub/Linear issues, build briefs from Slack. Local processes, one config file, same format as Claude Desktop. - **Git-compatible, never required.** A vault that is a git repository is driven from the sidebar — pull, commit and push in a click, a marker per note for what changed here and on the remote. And the passwords a note carries stay out of the commit: they live encrypted beside it (sops + age), readable from a terminal by anyone you share the key with. - **A workspace you compose.** The treeview aggregates folders from anywhere on your disk into one unified tree — your files stay put, nothing to migrate, no folders to reorganize. - **Plain `.md`, yours forever.** Local files, offline, no cloud, no account, no lock-in. Share them, back them up, open them in any editor. --- ## How Znote compares ### vs Obsidian Not a replacement — a companion. Znote is a polished editor with AI and code execution built in; AI blocks and runnable code are first-class, no plugin chain to glue scripts, AI, and APIs together. It's all plain `.md`, so your Obsidian vault opens as-is, results are saved back as Markdown Obsidian can read, and a one-click companion plugin adds "Run in Znote" buttons inside Obsidian (see the "Obsidian compatibility" section below). The treeview also composes folders from anywhere on your disk into one workspace, without moving a single file. ### vs Notion Znote is local-first plain `.md`. No cloud, no account, and the editor is free — a per-seat plan exists only for companies that want their employees' AI managed. Code blocks actually run. ### vs Jupyter notebooks Znote is **Markdown-first**, not code-first. Files are `.md` (Git-friendly, openable anywhere), the document is prose with executable inserts — not a JSON cell array. Built-in AI blocks. Opinionated, beautiful WYSIWYG. ### vs raw chat (ChatGPT, Claude) The AI works inside your own `.md` files, with your files as context, instead of disappearing chat threads. Your notes and prompts stay versionable and reusable. --- ## Hero **H1**: Notes that think and run. **Sub**: A clean, local Markdown editor for your own .md files. Ask your notes, run your code, connect your tools, push it all to git — without leaving the note. **Trust line**: Free. · Local .md files. · No account. **Primary CTA**: Download free. **Secondary CTA**: See how it works. **Proof strip**: ★ 5.0 · Top on Product Hunt · used by tech leads, POs and indie devs · built by one indie dev. --- ## The four moves Everything else is a clean Markdown editor. These four are what make Znote different, and the home page presents them in this order: **ask** your notes, **run** your code, **connect** your tools, **version** the vault with git. ### 01 · Ask — ask your own notes (`brainstorm.md`) **Ask your own notes.** Type `@` to pick what the AI should read — a note, a whole folder, a code block. That's your context, composed in two keystrokes. Type `/` to pick a prompt instead. The answer lands inline, in the note you're writing. No second app, no chat window, no copy-paste. Slash prompts run from quick one-shots to live AI sessions: `/brainstorm` opens a chat that becomes a clean note, `/rewrite` rebuilds a messy one in a single undo-able edit. Every command is a markdown file in your vault — override one, or add your own. The home page shows three uses: summarize a meeting note (`@meeting-monday` → the decisions and the action items), turn a rough idea into a user story (`@user-story-template` → a clean story in your own format), and write your own slash commands (`/brainstorm`, `/rewrite`). ```markdown # Brainstorm — gym finder app I want make app for people find gym close. Right now hard to know where gyms are. Also booking for class complicated. App should make gym things easy. ``` Typing `@` opens a mention picker over your workspace — notes like `competitor-research.md` or `user-interviews.md`, or a whole folder like `market/` (6 notes). Prompt: *Cross-check my idea against `@user-interviews` — list the 3 features people actually asked for.* Inline output — **3 features from your interviews**: - Live map of gyms open right now (asked by 8/12) - One-tap class booking, no phone calls - Real photos & busy-hours before you go ### 02 · Run — a code block becomes a little tool (`q1-channels.md`) **A code block becomes a little tool.** Write a JS block, press play: query a database, call an API, parse a file — the chart or table renders inline. Save the note and you've built a tool. Next week: open, play, done. The home page shows three uses: the Monday sales chart (`db.query(...)` → `barChart(rows)` — change the year, press play), cleaning up a CSV export (parse, filter, render the table next to your notes), and your own tiny status page (`await fetch(...)` your APIs, print the results, rerun anytime). ````markdown # Q1 channel performance ```js const rows = await db.query(` SELECT channel, month, SUM(amount) FROM orders WHERE year = 2026 AND channel IN ('Facebook', 'Google') `) barChart({ horizontal: true, series: rows }) ``` ```` Inline output: a horizontal bar chart "total_sales by channel" with Facebook and Google series across months — rendered directly under the code. ### 03 · Connect — your notes, connected to your tools with MCP (`standup.md`) **Your notes, connected to your tools.** Znote speaks MCP, the open standard that connects AI to real tools. Write `tools=` in an AI block and the model can query, search and create — in GitHub, Postgres, Slack, Linear… The answer lands in your note, saved. The home page shows three uses: the standup that writes itself (`tools=github` → open PRs, yesterday's commits, a three-line brief), asking your database in English (`tools=postgres` → the AI reads the schema, writes the SQL, answers with a table), and any server from one config file. Beyond the page, the same mechanism turns meeting notes into real tickets (`tools=linear` → one issue per action item, created while you write). ````markdown # Monday standup ```ai tools=github Open PRs and yesterday's commits on acme/webapp — draft my standup brief. ``` ```` Inline output, saved in the note: a standup brief — PRs waiting for review, yesterday's commits, today's priorities. Any MCP server works with one config file (`.znote/mcp.json`, the same format as Claude Desktop — paste any server's config and it just works), and the servers run locally on your machine. 22 ready-to-run examples: https://github.com/alagrede/znote-app/tree/master/examples/mcp --- ### 04 · Version — push your notes, not your passwords (`Infra.md`) **Your vault is plain files — git-compatible, never required.** Point it at a repository and you pull, commit and push from the app in a click, with a marker on every note that moved — `A` new, `M` changed here, `I` changed on the remote, `B` changed on both. Znote never fetches or pushes on its own, and never creates or merges branches: every operation that touches your files is a click. On a conflict the remote version wins and your copy is kept in the trash, restorable. **And a note's passwords stay encrypted beside it, so the note is safe to commit.** A password lives in an encrypted file beside it — `Infra.md` next to `Infra.secrets.yaml` — and the markdown holds only a reference, `` `secret:cisco.password` ``, rendered as `••••••••` with a reveal and a copy button. Encryption is standard [sops](https://github.com/getsops/sops) + [age](https://github.com/FiloSottile/age), not a Znote format: a teammate decrypts from a terminal with `sops decrypt`, with or without Znote. In a code block, `${secret:api.token}` is substituted at run time through the environment, so the cleartext never reaches a temporary file, and a command's output is masked before it is displayed or saved into the note. ````markdown # Infra Console : console.acme.io Login : jane@acme.io Password: `secret:cisco.password` ```bash curl -H "Authorization: Bearer ${secret:api.token}" https://api.acme.io/health ``` ```` What git carries: `Infra.md` (plain text, no password in it), `Infra.secrets.yaml` (encrypted, shared with the team), and nothing at all for `Infra.local.secrets.yaml` — personal values and `local-*` notes are kept out of git by ignore rules Znote writes into the repository itself. Znote protects every push: before a commit made from Znote, the notes about to be pushed are scanned for plaintext credentials — known token shapes, values on a credential line, high-entropy strings — and the push stops on a finding, naming the file and the line. Full documentation: and --- ## Anatomy — What lives in a `.md` file? Your notes, your AI's context, and your code — all in one plain Markdown file. 1. **Readable by your AI** — Reference a folder, a note, or a code block with `@`. The AI reads it as grounded context — no hallucination. 2. **Editable by you** — It's Markdown. Add context, tweak a prompt, run a script. Your file, your rules. 3. **Yours forever** — Plain `.md` files on your disk. Share them, back them up, open them in any editor. No cloud lock-in. Example annotated note (`weekly-report.md`): ````markdown # Weekly report — week 18 Reviewed onboarding metrics with the team. ← Markdown prose, like always. @analytics/onboarding-funnel.md ← @references — AI reads files & blocks as context. ```ai Write a 3-bullet summary of @onboarding-funnel. ← AI block — calls your model with the @context above. ``` ```js const data = await db.query(...) ← JS / Node block — runs locally, returns inline output. barChart(data) ``` ```` --- ## The treeview — your workspace, composed Most note apps point at one folder and stop there. Znote's treeview is a workspace you assemble — pull in folders from anywhere on your disk into one unified tree. **One tree from folders anywhere on disk.** Your work is scattered across your disk — a folder here, a repo there. Znote brings the ones you pick into a single tree, without moving a single file. - No folders to reorganize, nothing to migrate. - Your files stay put — Znote just brings them together. Example workspace (one aggregated tree): ```text Journal Ideas (3) Writing ├─ Novel — Book Two ~/iCloud/Fiction (12) └─ Freelance Articles ~/work/clients (8) Research (5) Published (7) ``` Here "Novel — Book Two" lives in `~/iCloud/Fiction` and "Freelance Articles" in `~/work/clients` — two locations, one tree. --- ## The editor — a calm place to write Markdown Minimal by default, powerful when you need it. Everything you'd expect from a great `.md` editor — and nothing you don't. - **WYSIWYG Markdown editor.** Write in clean Markdown and see it rendered as you type. No mode-switching, no clutter. - **Beautiful built-in themes.** Dark, Nord, Orange, Terminal and more. A gorgeous editor you'll actually want to open. - **Focus mode, tabs & full-text search.** Zoom into one folder to mute everything else, flip between notes in tabs, and find any line in milliseconds. - **Voice recording & transcription.** Hit record, get a clean, structured note back — typed up for you, inline. - **HTML / PDF / script exports.** Share a polished document or a runnable script from the same `.md` file. - **Local files, offline, plain `.md`.** Your notes live on your disk as plain Markdown — your Obsidian vault opens as-is. No cloud, no account, no lock-in. Beyond these four moves, Znote also offers optional integrations (web search, plus plugins such as Gmail, Jira and databases) for those who want them — documented at . They stay out of the way unless you reach for them. --- ## Obsidian compatibility & companion plugin (`/obsidian`) Full page: — "Run code and AI inside your Obsidian vault." Znote opens your Obsidian vault as-is — wikilinks, embeds, attachments, your settings. It adds executable code blocks and inline AI, and saves the results as plain Markdown you can read right back in Obsidian. Point Znote at your vault folder — that's the whole setup. No import, no lock-in, no changes to your vault. ### Run code in any note of your vault Write a JS, Node or shell block in any note, press play — the chart or table renders inline. Query a database, call an API, parse a file. Save the note: it's a tool now. Results stay readable in Obsidian: text output is saved as a plain ` ```output ` fenced block, charts as a PNG snapshot in your attachments folder (using Obsidian's own embed syntax). ### The one-click companion plugin Znote proposes the plugin the first time you open your vault — one click, done. Inside Obsidian it adds: - An "Open in Znote" command and a hover "▶ Run in Znote" button on executable code blocks. - RESULT panels: saved ` ```output ` blocks render as clean result panels in reading view. - `znote://open` deep links between the two apps. Without the plugin, results are still clean, readable Markdown — the plugin just makes them prettier and adds the round-trip buttons. ### Your vault stays exactly as it is - Notes stay plain `.md` files — Znote never rewrites what you didn't change. - Obsidian settings are respected: inline title, line width, attachment folder. - Wikilinks, embeds and images work the Obsidian way. - No extra files added to your vault. - Stop using Znote tomorrow — your vault won't notice. ### FAQ — Obsidian page **Will Znote modify my vault?** No. Notes stay plain Markdown, settings stay yours. The only things Znote writes are the ones you ask for: code output blocks and result snapshots — and re-running or clearing a block cleans those up. **Can I use Obsidian and Znote at the same time?** Yes, side by side on the same vault. Each app reloads changes made by the other. **Do saved results break my notes in Obsidian?** No — output is a standard fenced code block, and snapshots use Obsidian's own embed syntax. With the plugin they render as RESULT panels; without it they're still clean, readable Markdown. **Is this an Obsidian replacement?** No. Obsidian is where your knowledge lives; Znote makes it work — code execution and inline AI, results saved back into your notes. Keep both open. --- ## Bring Your Own AI (BYOK) Your AI key. Your models. Your rules. No vendor lock-in. - **OpenAI** — direct API key, the most-used path. - **Ollama (local)** — run models like LLaMA or Mistral on your own machine, fully offline. - **OpenRouter** — single API, access to hundreds of models from many providers. New to API keys? Znote walks you through it in 2 minutes on first launch. **5€ of API credit ≈ months of daily use.** The key is yours, the app is free, and Znote never sits between you and your provider. --- ## Who Znote is for People who think in files — anyone who wants to write Markdown locally in a beautiful editor, and wants those files to think (AI) and run (code on data). Writers, developers, indie hackers, tech leads, and anyone who lives in plain `.md`. --- ## Testimonials > The best "Jupyter-like" notebooks for JS. — **mrcbns** > My go-to JavaScript playground. Run code directly in the app — huge time-saver. Clean interface, easy to navigate. — **Sanjeet** > Incredible product. Lets users learn and prototype faster. The AI integration is fantastic and JS+Markdown support is top-notch. — **Ali** --- ## Pricing The app is free, every feature included. Download Znote, connect your own AI key — OpenAI, OpenRouter, or 100% local with Ollama — and pay only your provider. ### Free — Znote - **Price**: 0€, forever free - AI with your own key — chat, `@`-context & tool calls - Markdown editor with WYSIWYG - Tabs, tags, folders, full-text search - Run JavaScript & Node.js inline + per-file NPM - Voice recording → structured meeting minutes - Web search, custom themes, password-locked notes - HTML / PDF / script exports - Local files, offline, plain `.md` — no lock-in ### For companies — managed AI for every employee - **Price**: flat plan from **5€ per seat per month**, or a setup tailored to your needs - Anything the flat plan doesn't cover is quoted: billing on real usage instead of per seat, a private endpoint, your infrastructure, a specific integration - One console for the whole company: seats, allowed email domains, admins - Our AI key (single invoice) or, on request, **your own OpenAI key** (you pay your provider direct) - Pin the models your teams may use - Usage reporting per person: calls and tokens, before the invoice - Notes stay local — only the AI request travels - The app itself stays free for every employee Create your organisation at — set it up yourself, invite a first team and see the real usage before committing. Details at . --- ## Download Free to download, with every feature included. The AI runs on your own models (BYOK), paid directly to your provider. - **Windows** (universal binary, x64 & arm64) - **macOS** — Intel - **macOS** — Apple Silicon (arm64) - **Linux** — x64 - **Linux** — arm64 Downloads at . --- ## FAQ — Homepage **Is Znote free?** Yes — the app and every feature are free, with no license to buy. The AI runs on your own key (OpenAI, Ollama, OpenRouter), paid directly to your provider. **How is it different from Obsidian or Notion?** Znote is a focused Markdown editor with four things built in: AI that answers from your own notes, code blocks you can run, MCP servers that connect your real tools, and git to version the whole vault — output appears inline, in the note you are writing. No plugins, no cloud, and nothing to subscribe to as an individual. And since it's all plain `.md`, your Obsidian vault opens as-is. **Do I need an API key to use AI?** Yes. The AI features need a key you provide — OpenAI, OpenRouter, or Ollama for a fully local setup. Your models, your privacy, no markup, and nothing to buy from us. **Where are my files stored?** On your machine. Plain `.md` files in folders you choose. No cloud, no account, no telemetry by default. **What is MCP and what can I connect?** MCP (Model Context Protocol) is the open standard that lets AI use real tools. Declare servers in your vault — GitHub, Postgres, Slack, Linear, your filesystem, hundreds more — and your AI blocks can query, search and create through them. The config format is the same as Claude Desktop, and the servers run locally on your machine. --- ## FAQ — Capabilities **Can I run JavaScript inside a Markdown note?** Yes. Use a ` ```js ` (or ` ```node `) block; press play; output renders inline. You have access to `await`, `fetch`, the file system, and Znote's helpers like `barChart()` — ideal for presenting and manipulating data. **Can I run Node.js (with `npm`/`require`) inside a `.md` file?** Yes. Node blocks support `require`, async/await, and standard Node APIs. You can also `await fetch` and call HTTP APIs directly. **How do I make the AI use my own files as context?** Use `@reference` syntax — `@notes/specs.md`, `@folder/`, or `@code-block-name`. The AI reads them as grounded context, right inside the editor, with no hallucinated guesses. **How do I query a SQL database from a `.md` file and chart it?** Configure a database connection, then use `await db.query(...)` inside a JS block and pass the result to `barChart()` or render it as a table — all inline. **Is Znote a Jupyter alternative?** For Markdown-first workflows, yes. Znote uses plain `.md` files (Git-friendly, openable anywhere) instead of `.ipynb` JSON, supports AI blocks natively, and ships a beautiful, opinionated WYSIWYG. Jupyter remains better for code-heavy, Python-first numerical work; Znote is better when prose, notes, and JS/Node data work are the focus. **Is Znote an Obsidian or Notion alternative?** Yes — a beautiful, minimalist, local-first editor like Obsidian (your existing Obsidian vault opens as-is, it's all plain `.md`), with AI and runnable code built in, and nothing to subscribe to as an individual, unlike Notion. It also works as an Obsidian *companion*: a one-click plugin adds "Run in Znote" buttons inside Obsidian, and results are saved as Markdown Obsidian can read — see . **Can Znote show folders from different locations on my disk in one workspace?** Yes. The treeview composes a workspace from folders anywhere on your disk — a folder here, a repo there — into one unified tree. Files stay where they are: nothing to migrate, no folders to reorganize. --- ## FAQ — Full (`/faq.html`) ### About AI & your key **Do I need an OpenAI or OpenRouter account to use AI in Znote?** Yes. The AI features run on a key you provide — OpenAI, OpenRouter, or Ollama for a fully local setup. It's the cheapest way and you pay only for what you use, directly to your provider. **Can I still use my own API key?** Yes — that's the only way Znote uses AI. You connect your own provider (OpenAI, OpenRouter, Ollama…) and Znote never sits between you and it. **Are the AI queries local or cloud-based?** It depends on the provider you connect. With an OpenAI or OpenRouter key, queries go directly to that provider. For fully local AI, connect Ollama (LLaMA, Mistral…) on your own machine and nothing ever leaves it. **Is this a subscription?** No. The app is free and there is nothing to buy from us. You pay your AI provider for what you consume — or nothing at all with Ollama. **How much does the AI cost with my own key?** Only what your provider charges, with no markup from us — a few euros a month covers daily use on most models. With Ollama running locally, it costs nothing. --- ## Support Built by one indie dev who reads every email. Whether it's a bug, a feature request, or a question: - Email: - Docs: - Twitter: - LinkedIn: --- ## Sitemap - Homepage: - Znote + Obsidian: - FAQ: - For companies: - Affiliate program: - Terms & Privacy (CGU): - Documentation: - Recipes: - Blog: - XML sitemap: - Short LLM index: