Review, edit, and draft notes collaboratively with configurable AI editors and panels.
An Obsidian plugin that brings AI editing, reviewing, and QA into the editor itself. Not a chat sidebar you copy-paste into: configurable AI personas ("Editors") and groups of them ("Panels") that highlight what they care about in your text, argue with you, and propose surgical edits you accept or reject inline.
Writing alone has a blind spot: you. AI Editor gives you a bench of reviewers — a Devil's Advocate, a Fact Checker, a Beginner Reader, whoever you invent — that read your note the way your audience would, before your audience does.
Nothing ever runs on its own: every AI call is something you asked for, and every proposed change goes through a visible diff with Accept and Reject. There is no code path that writes AI output into a note without your confirmation.
Desktop only. Bring your own backend — a hosted API (Anthropic, OpenAI, OpenRouter and other OpenAI-compatible endpoints, Azure OpenAI, Ollama) or an agent CLI running on your own machine (Claude Code, Codex).
You write. When you want a second opinion, you summon your editors — all of them, one of them (click its name on the rail), or a panel. They read the note, come back with findings anchored to the exact words they are about, and you accept, dismiss, or argue with each one.
Findings anchored in the text, each tinted in its editor's colour, with the persona rail in the corner and every editor's verdict in the side panel:

Click a highlight for the critique, the quote, and a labelled diff you accept or dismiss — or push back in the reply box:

Editors are personas you define — a name, a colour, a prompt, optionally backed by your own vault notes:

Enable as many as you want, and group them into panels that review together and produce one scorecard:

The persona rail. Every markdown editor gets a small card in its top-right corner: the daemon toggle, a Review button (which grows a Selection segment while you have text selected), and one named row per enabled editor. Each row draws a ring in that editor's colour around its dot, and the ring says what it is doing — dashed while it waits its turn, a sweeping arc while it works, solid when it lands, the error colour when it fails — next to a live finding count. Hover a row for the exact state: "Concision Editor — 3 findings", "Devil's Advocate — waiting", "Fact Checker — failed (timeout)". A panel is one row with a hollow centre, its name carrying "(panel)", with its members bracketed underneath it.
Click a row with findings to step through them in the text. Click an idle row and that editor reviews the note on its own — and if a review is already running, it simply joins the queue without disturbing anyone. The rail fades when you are writing, collapses to a single line when you want it gone, and a Hide findings button clears every highlight from the note (pausing the daemon for it) without dismissing a thing.
Findings in the text. Each finding tints the exact span it quotes in its editor's colour, with a per-editor edge style underneath so the two are never told apart by colour alone. Keep typing: highlights follow your edits. Edit inside a highlighted span and the finding goes stale — dashed and dimmed — because its proposal no longer matches your text.
The review card. Click a highlight and a card floats next to it: the critique, the quoted text, and — when the editor proposed changes — a labelled preview per edit (Replace, Insert above, Insert below, Delete: an insertion shows only what is added, so it never looks like a rewrite) with Accept and Dismiss. Accept applies the whole proposal as one undoable edit. Overlapping findings stack in one card, innermost first. Under it, a reply box: type your objection and the editor either withdraws the finding or holds its position and sharpens it.
The AI Editor Review panel. A side panel — its tab reads AI Editor Review — lists every editor's status, summary, findings and verdict for the note it is bound to, under a pinned header that keeps Review, Ask for comments and section navigation in reach while you scroll. For panel runs the scorecard sits on top. Click a finding to jump to it in the text, or step through one editor's findings with the ‹ 2 of 5 › control in its section header — the same stepping the Next finding command does, on the same cursor, with the row it points at marked in the list and your keyboard left on the arrow. Findings whose quote could not be located are grouped under "Not anchored" rather than guessed into a position.
The History tab, right next to Review in that panel, is the session's archive: every finding, push-back reply and scorecard, grouped by day with filters by type and editor. "What did the Devil's Advocate say before I re-ran it?" has an answer. History lives for the session by default; a setting makes it durable per note, with retention and clearing under your control.
The margin column. Comments sit in a column beside the text, each card aligned with the line it is about: who was asked, how long it has been running, and the answer once there is one. Several comments on one line collapse into a chip that expands.
The status bar shows the number of open findings for the active note, and nothing at all when there are none.
This is the part to read before installing, not after.
ai_editor: false in a note's frontmatter. An excluded note is never the review target, never attached as linked context, and never followed through a wikilink from another prompt.data.json, inside your vault. If the vault syncs — Obsidian Sync, iCloud, git, Syncthing — the keys travel with it. Use minimal-scope keys and rotate them if the vault ever leaks. Keys and prompts are redacted from logs and error reports, and exported settings never contain a key.A CLI backend does not call a remote API: it starts a local agent with your note on its standard input. That is the highest-risk thing this plugin does, so the containment comes first.
PATH or the working directory.PATH, a locale, and a temporary directory pointing inside the throwaway folder. Nothing else in Obsidian's environment travels with the request, and no setting can add to the list.What the plugin does not bound, stated plainly because you are being asked to allow a program to run: each tool's own configuration is loaded — for Claude Code that means your CLAUDE.md, skills, plugins, hooks and settings.json, including permission rules you wrote there; for Codex it means ~/.codex/config.toml, and any MCP servers declared in it. Suppressing those would break authentication or silently change which model answers. Codex runs under --sandbox read-only; Claude Code has no sandbox flag to run under.
On top of that, two separate consents, both revocable, both recording which executable they were granted for — so a changed, imported or synced path invalidates the earlier agreement and you are asked again about the program that is actually there. Full detail: CLI backends.
Requires Obsidian 1.12.2 or newer, on desktop (Windows, macOS, Linux).
Once the plugin is available in the community catalog:
main.js, manifest.json and styles.css from the latest release.<Vault>/.obsidian/plugins/editor-ai-daemons/.BRAT installs plugins straight from a GitHub repository and keeps them updated. Use this if you want the latest commits — things might break.
https://github.com/dsebastien/obsidian-ai-editor.The setup wizard opens by itself the first time the plugin loads and walks you through everything. Nothing is saved until the last step, so you can leave at any point without changing a thing, and you can re-run it whenever you like from Settings → AI Editor → Behavior → Setup or the Run setup wizard command.
Prefer doing it by hand? Settings → AI Editor → Backends → Add backend, set it as the global default, make sure at least one editor is enabled, then run Review current note.
Full user guide: https://dsebastien.github.io/obsidian-ai-editor/
editor-ai-daemons:review, editor-ai-daemons:status, editor-ai-daemons:cancelThis plugin stands on the shoulders of two people:
Built with Bun and TypeScript, from the Obsidian Plugin Template (Bun).
| Command | Description |
|---|---|
bun install |
Install dependencies |
bun run dev |
Development build with watch mode |
bun run build |
Production build |
bun run tsc:watch |
Type check in watch mode |
bun run lint |
Run ESLint |
bun run format |
Format with Prettier |
bun test |
Run tests |
bun run validate |
Type check, lint and test |
See CONTRIBUTING.md for contribution guidelines.
MIT License - see LICENSE for details.
| Plugin | What it does |
|---|---|
| Agentic Resource Discovery Server | Local-first Agentic Resource Discovery publisher and registry that serves your AI skills and tools to agents over a local HTTP and MCP server |
| Book Exporter | Export books (one manifest note + linked chapter notes) to EPUB and PDF via Pandoc |
| Bookshelf Base | Display your notes as a visual bookshelf via a custom Bases view |
| Dataview Serializer | Serialize Dataview queries to Markdown, and keep the Markdown representation up to date |
| Expander | Replace variables across your vault using HTML comment markers. Supports static values and dynamic functions |
| Ghost Publish | Publish your vault notes to a Ghost blog with configurable presets for tags, newsletters, and frontmatter conventions |
| Graph Explorer Base View | A custom Bases view that renders notes as an interactive force-directed graph with explored/unexplored tracking |
| Hidden Folders Access | Index hidden root-level folders (e.g. .claude) so they appear in the file tree, metadata cache, and Bases |
| Journal Bases | Custom Base views for journaling and periodic reviews |
| Kanban Action Planner | Render your notes as configurable Kanban boards and calendars inside Bases, with statuses, ordering, relationships, and scheduling |
| Life Tracker | Capture and visualize the data that matters in your life |
| Note Village | A 2D pixel art village where your notes become villagers you can explore and chat with using AI |
| Obsidian Starter Kit | Adds strong typing support and powerful automation support for notes |
| Remarkable Synchronizer | Connect to the reMarkable cloud, list, download, and sync notebook pages as images |
| Replicate | Use AI models with ease via the Replicate.com integration |
| REST and MCP server | Exposes CLI commands as RESTful API endpoints and an MCP server for AI tool integration |
| Time Machine | Browse, compare, and restore previous versions of your notes using built-in file-recovery snapshots |
| Transcriber | Transcribe images to markdown using Ollama vision models |
| Typefully | Publish social media posts with ease using the Typefully integration |
| Update Time | Automatically update front matter to include creation and last update times |
Everything I build is documented in my newsletter and on my YouTube channel.
To stay up to date about this plugin, Obsidian in general, Personal Knowledge Management and note-taking:
If this plugin is useful to you, here are the best ways to support my work ❤️:
Found a bug or have an idea? Open an issue.