No description
Find a file
Logan Yang d849ade60a
Add Obsidian CLI daily/random read tools and reasoning summaries (#2181)
* Add Obsidian CLI daily/random read tools with fallback + reasoning summaries

* chore: move CLI design doc to designdocs/ and remove old TODO doc

- Move docs/OBSIDIAN_CLI_INTEGRATION_DESIGN.md to designdocs/OBSIDIAN_CLI_INTEGRATION.md
- Remove designdocs/todo/OBSIDIAN_CLI_INTEGRATION.md (replaced by PR's design doc)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: gate CLI tools behind Platform.isDesktopApp so they are invisible on mobile

- Move CLI tool registration from static BUILTIN_TOOLS array to registerCliTools()
- Only call registerCliTools() when Platform.isDesktopApp is true
- On mobile: tools are not registered, not shown in settings/UI/reasoning
- Update design doc with platform policy and CLI approach rationale

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update CLI design doc with finalized category-based tool roadmap

- Replace generic v0/v1/v2 tiers with category-based tool grouping
- Define tools: obsidianDailyNote, obsidianProperties, obsidianTasks,
  obsidianFiles, obsidianLinks, obsidianTemplates, obsidianBases,
  obsidianBookmarks, obsidianTags
- Document excluded commands (destructive, plugin/theme, sync, dev tools)
- Add design rationale for category-based approach
- Update rollout plan to match new tool structure

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: remove search commands from v1 roadmap

search and search:context are redundant with Copilot's existing
keyword + semantic search. Update obsidianFiles to only include
read, append, prepend, random:read. Add search to excluded list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: restrict file writes to daily notes, add write operations policy

- Remove append/prepend from obsidianFiles (now read-only: read, random:read)
- Daily note append/prepend: direct execution, no Composer diff needed
- Property set/remove and task toggle: require light confirmation
- Arbitrary file writes excluded — use existing Composer tool instead
- Add Write Operations Policy section to design doc

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: remove redundant CLI tools from roadmap, add tool disambiguation

Remove `read` from obsidianFiles (redundant with readNote) and drop
obsidianTags category (redundant with getTagList). Add Tool
Disambiguation section documenting overlap analysis and prompt
instruction guidelines for CLI tools.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: defer confirmation-required CLI mutations from v1 to v2

Move property:set, property:remove, and task toggle/status to v2 tier.
v1 now contains only read-only tools + direct-execution daily note
writes. This ensures v1 ships without needing confirmation UX.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add Appendix A with v1 CLI command reference

Document all 12 v1 CLI commands with parameters, output format, and
real examples. Covers obsidianDailyNote, obsidianProperties,
obsidianTasks, obsidianRandomRead, and obsidianLinks tools. Includes
error response reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: implement v1 CLI tools (properties, tasks, links, daily note category)

Add 4 new category-based CLI tools for the Obsidian CLI integration:
- obsidianDailyNote: read, append, prepend, path (replaces v0 obsidianDailyRead)
- obsidianProperties: list vault properties, read per-note properties
- obsidianTasks: list and filter tasks across vault
- obsidianLinks: backlinks, outgoing links, orphans, unresolved links

All tools are desktop-only (gated by Platform.isDesktopApp), invisible on
mobile, and labeled as "Obsidian CLI: ... (Experimental)" in settings.

Includes shared error handling module (cliErrors.ts), reasoning summaries,
tool display names, disambiguation prompt instructions, and 21 new tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: prioritize env CLI binaries and align desktop runtime check

- resolveBinaryCandidates: move env var overrides (OBSIDIAN_CLI_BINARY/
  OBSIDIAN_CLI_PATH) before the default "obsidian" binary so configured
  overrides are tried first, preventing an incompatible PATH binary from
  blocking a valid configured override.
- builtinTools: replace Platform.isDesktopApp with isDesktopRuntime()
  (now exported) so CLI tools are registered on both modern isDesktopApp
  and legacy isDesktop runtimes, matching the check used in the executor.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: single CLI master toggle, remove v0 overlap, extract buildCliParams

- Group all CLI tools under one "Obsidian CLI (Experimental)" section
  with a single master toggle in settings UI
- Remove v0 obsidianDailyRead registration (superseded by v1 obsidianDailyNote)
- Extract buildCliParams helper to reduce repetitive param building
- Use "cli" category for all CLI tool registrations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: align CLI section title with other tool items

Remove horizontal padding from CLI container box so SettingItem
title aligns flush with Vault Search, Web Search, etc. above it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: preserve raw stdout for daily:read to avoid stripping Markdown whitespace

Only trim stdout for non-read commands (append, prepend, path) where
whitespace is not semantically meaningful. Read commands return note content
where leading/trailing whitespace may be intentional.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add daily create command and obsidianTemplates tool to v1 CLI

- Add 'daily' command to obsidianDailyNote: creates today's daily note
  from configured template if it doesn't exist
- Add obsidianTemplates category tool with 'templates' (list) and
  'template:read' (read content) commands
- Register obsidianTemplates in builtinTools.ts with cli category
- Update AgentReasoningState and toolExecution with new tool/command cases
- Update obsidianDailyNote prompt instructions to mention 'daily' command
- Move obsidianTemplates from v2 to v1 in design doc; add daily command docs
- Add tests for daily command and full obsidianTemplates tool coverage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove daily command, keep only obsidianTemplates addition

The 'daily' CLI command is a UI action (opens the note in Obsidian) and
returns no content, making it unsuitable as an agent tool. Remove it.

Instead, the agent workflow for template-based daily note creation is:
  obsidianTemplates template:read → daily:read (check existence) →
  daily:prepend (write template content if needed)

Update obsidianDailyNote prompt instructions to describe this pattern.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: update CLI tool prompt instructions for template-based daily note workflow

- obsidianDailyNote: add step-by-step guide for creating daily notes from
  templates (templates list → template:read → daily:prepend); note that
  daily:append/prepend auto-create the note if it doesn't exist
- obsidianTemplates: clarify usage of 'templates' and 'template:read',
  cross-reference the daily note creation workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: preserve raw stdout for read commands in ObsidianCliDailyTools

Same fix as d2c81b5 for ObsidianCliTools: daily:read and random:read
commands return full markdown note content, so trimming stdout can silently
alter formatting-sensitive notes. Both tools now return raw stdout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 17:40:07 -08:00
.claude/agents Add release agent definition (#2258) 2026-03-03 23:06:03 -08:00
.cursor/rules Improve the regex for composer codeblock (#1778) 2025-09-03 13:51:34 -07:00
.github ci: add automated release workflow on PR merge (#2256) 2026-03-03 21:37:02 -08:00
.husky Add code syntax highlighting and copy code (#520) 2024-08-21 15:04:42 -07:00
__mocks__ Merge 3.1.0 preview (#1906) 2025-10-10 21:38:50 -07:00
designdocs Add Obsidian CLI daily/random read tools and reasoning summaries (#2181) 2026-03-05 17:40:07 -08:00
docs docs: add user-facing documentation (#2254) 2026-03-03 17:39:00 -08:00
images Reduce images size in half in README without losing quality (#1966) 2025-10-30 16:58:32 -07:00
scripts Migrate to native tool call in plus and agent (#2123) 2026-01-26 18:35:27 -08:00
src Add Obsidian CLI daily/random read tools and reasoning summaries (#2181) 2026-03-05 17:40:07 -08:00
typings Format code (#521) 2024-08-21 15:16:22 -07:00
.editorconfig Create vector store per vault (#348) 2024-03-08 21:50:45 -08:00
.eslintignore Initial commit 2023-03-30 17:15:32 -07:00
.eslintrc Add tw prefix to tailwind (#1497) 2025-05-31 22:30:54 -07:00
.gitignore Implement vault search v3 (#1703) 2025-08-11 16:58:04 -07:00
.npmrc Initial commit 2023-03-30 17:15:32 -07:00
.prettierrc Refactor Settings, add formatting (#518) 2024-08-20 21:53:09 -07:00
AGENTS.md chore: rename docs to designdocs and nest todo folder (#2252) 2026-03-03 16:26:03 -08:00
CLAUDE.md docs: add user-facing documentation (#2254) 2026-03-03 17:39:00 -08:00
components.json Add tw prefix to tailwind (#1497) 2025-05-31 22:30:54 -07:00
CONTRIBUTING.md Squash preview (#1502) 2025-05-30 20:06:25 -07:00
esbuild.config.mjs Improve custom command (#1942) 2025-10-20 17:52:50 -07:00
jest.config.js Enhance inclusion/exclusion patterns settings (#1261) 2025-02-18 23:01:20 -08:00
jest.setup.js Avoid full vault scan on incremental indexing (#1148) 2025-02-02 16:24:15 -08:00
LICENSE Add license 2023-03-30 23:52:55 -07:00
local_copilot.md docs: update local copilot instructions for macOS (#1077) 2025-01-22 14:51:34 -08:00
manifest.json 3.2.4 (#2259) 2026-03-03 22:26:25 -08:00
nodeModuleShim.mjs Improve custom command (#1942) 2025-10-20 17:52:50 -07:00
package-lock.json 3.2.4 (#2259) 2026-03-03 22:26:25 -08:00
package.json 3.2.4 (#2259) 2026-03-03 22:26:25 -08:00
README.md Remove emoji from FAQ link url in table of contents (#2209) 2026-02-23 20:16:24 -08:00
RELEASES.md 3.2.4 (#2259) 2026-03-03 22:26:25 -08:00
tailwind.config.js feat: Add project new context loading ui. (#1695) 2025-08-08 09:59:00 -07:00
tsconfig.json Merge 3.1.0 preview (#1906) 2025-10-10 21:38:50 -07:00
version-bump.mjs Initial commit 2023-03-30 17:15:32 -07:00
versions.json 3.2.4 (#2259) 2026-03-03 22:26:25 -08:00
wasmPlugin.mjs Format code (#521) 2024-08-21 15:16:22 -07:00

Copilot for Obsidian

The Ultimate AI Assistant for Your Second Brain

GitHub release (latest SemVer) Obsidian Downloads

Documentation | Youtube | Report Bug | Request Feature

Reward Banner

The What

Copilot for Obsidian is your invault AI assistant with chat-based vault search, web and YouTube support, powerful context processing, and ever-expanding agentic capabilities within Obsidian's highly customizable workspace - all while keeping your data under your control.

The Why

Today's AI giants want you trapped: your data on their servers, prompts locked to their models, and switching costs that keep you paying. When they change pricing, shut down features, or terminate your account, you lose everything you built.

We are building the opposite. Our goal is to create a portable agentic experience with no provider lock-in. Data is always yours. Use whatever LLM you like. Imagine that a brand new model drops, you run it on your own hardware, and it already knows about you (long-term memory), knows how to run the same commands and tools you have defined over time (as just markdown files), and becomes the thought partner and assistant that you own. This is AI that grows with you, not a subscription you're hostage to.

This is the future we believe in. If you share this vision, please support this project!

Key Features

  • 🔒 Your data is 100% yours: Local search and storage, and full control of your data if you use self-hosted models.
  • 🧠 Bring Your Own Model: Tap any OpenAI-compatible or local model to uncover insights, spark connections, and create content.
  • 🖼️ Multimedia understanding: Drop in webpages, YouTube videos, images, PDFs, EPUBS, or real-time web search for quick insights.
  • 🔍 Smart Vault Search: Search your vault with chat, no setup required. Embeddings are optional. Copilot delivers results right away.
  • ✍️ Composer and Quick Commands: Interact with your writing with chat, apply changes with 1 click.
  • 🗂️ Project Mode: Create AI-ready context based on folders and tags. Think NotebookLM but inside your vault!
  • 🤖 Agent Mode (Plus): Unlock an autonomous agent with built-in tool calling. No commands needed. Copilot automatically triggers vault, web searches or any other relevant tool when relevant.

Copilot's Agent can call the proper tools on its own upon your request.

Product UI screenshot

Table of Contents

Copilot V3 is a New Era 🔥

After months of hard work, we have revamped the codebase and adopted a new paradigm for our agentic infrastructure. It opens the door for easier addition of agentic tools (MCP support coming). We will provide a new version of the documentation soon. Here is a couple of new things that you cannot miss!

  • FOR ALL USERS: You can do vault search out-of-the-box without building an index first (Indexing is still available but optional behind the "Semantic Search" toggle in QA settings).
  • FOR FREE USERS: Image support and chat context menu are available to all users starting from v3.0.0!
  • FOR PLUS USERS: Autonomous agent is available with vault search, web search, youtube, composer and soon a lot other tools! Long-term memory is also a tool the agent can use by itself starting from 3.1.0!

Read the Changelog.

Why People Love It ❤️

  • "Copilot is the missing link that turns Obsidian into a true second brain. I use it to draft investment memos with text, code, and visuals—all in one place. Its the first tool that truly unifies how I search, process, organize, and retrieve knowledge without ever leaving Obsidian. With AI-powered search, organization, and reasoning built into my notes, it unlocks insights Id otherwise miss. My workflow is faster, deeper, and more connected than ever—I cant imagine working without it." - @jasonzhangb, Investor & Research Analyst
  • "Since discovering Copilot, my writing process has been completely transformed. Conversing with my own articles and thoughts is the most refreshing experience Ive had in decades.” - Mat QV, Writer
  • "Copilot has transformed our family—not just as a productivity assistant, but as a therapist. I introduced it to my nontechnical wife, Mania, who was stressed about our daughters upcoming exam; within an hour, she gained clarity on her mindset and next steps, finding calm and confidence." - @screenfluent, A Loving Husband

Get Started

Install Obsidian Copilot

  1. Open Obsidian → Settings → Community plugins.
  2. Turn off Safe mode (if enabled).
  3. Click Browse, search for “Copilot for Obsidian”.
  4. Click Install, then Enable.

Set API Keys

Free User

  1. Go to Obsidian → Settings → Copilot → Basic and click Set Keys.
  2. Choose your AI provider(s) (e.g., OpenRouter, Gemini, OpenAI, Anthropic, Cohere) and paste your API key(s). OpenRouter is recommended.

Copilot Plus/Believer

  1. Copy your license key at your dashboard. Dont forget to join our wonderful Discord community!
  2. Go to Obsidian → Settings → Copilot → Basic and paste the key into in the Copilot Plus card.

Usage

Table of Contents

Free User

Chat Mode: reference notes and discuss ideas with Copilot

Use @ to add context and chat with your note.

Chat Mode

Ask Copilot:

Summarize Q3 Retrospective and identify the top 3 action items for Q4 based on the notes in {01-Projects}.

Chat Mode

Vault QA Mode: chat with your entire vault

Ask Copilot:

What are the recurring themes in my research regarding the intersection of AI and SaaS?

Vault Mode

Copilot's Command Palette

Copilot's Command Palette puts powerful AI capabilities at your fingertips. Access all commands in chat window via / or via right-click menu on selected text.

Add selection to chat context

Select text and add it to context. Recommend shortcut: ctrl/cmd + L

Add Selection to Context

Quick Command

Select text and apply action without opening chat. Recommend shortcut: ctrl/cmd + K

Quick Command

Edit and Apply with One Click

Select text and edit with one RIGHT click.

One-Click Commands

Create your Command

Create commands and workflows in Settings → Copilot → Command → Add Cmd.

Create Command

Command Palette in Chat

Type / to use Command Palette in chat window.

Prompt Palette

Appears automatically when there's useful related content and links.

Use it to quickly reference past research, ideas, or decisions—no need to search or switch tabs.

Relevant Notes

Copilot Plus/Believer

Copilot Plus brings powerful AI agentic capabilities, context-aware actions and seamless tool integration—built to elevate your knowledge work in Obsidian.

Get Precision Insights From a Specific Time Window

In agent mode, ask copilot:

What did I do last week?

Time-Based Queries

Agent Mode: Autonomous Tool Calling

Copilot's agent automatically calls the right tools—no manual commands needed. Just ask, and it searches the web, queries your vault, and combines insights seamlessly.

Ask Copilot in agent mode:

Research web and my vault and draft a note on AI SaaS onboarding best practices.

Agent Mode

Understand Images in Your Notes

Copilot can analyze images embedded in your notes—from wireframes and diagrams to screenshots and photos. Get detailed feedback, suggestions, and insights based on visual content.

Ask Copilot to analyze your wireframes:

Analyze the wireframe in UX Design - Mobile App Wireframes and suggest improvements for the navigation flow.

Image Understanding

One Prompt, Every Source—Instant Summaries from PDFs, Videos, and Web

In agent mode, ask Copilot

*Compare the information about [Agent Memory] from this youtube video: [URL], this PDF [file], and @web[search results]. Start with your

 conclusion in bullet points in your response*

One Prompt, Every Source

Need Help?

  • Check the documentation for setup guides, how-tos, and advanced features.
  • Watch Youtube for walkthroughs.
  • If you're experiencing a bug or have a feature idea, please follow the steps below to help us help you faster:
    • 🐛 Bug Report Checklist
      • ☑️Use the bug report template when reporting an issue
      • ☑️Enable Debug Mode in Copilot Settings → Advanced for more detailed logs
      • ☑️Open the dev console to collect error messages:
        • Mac: Cmd + Option + I
        • Windows: Ctrl + Shift + I
      • ☑️Turn off all other plugins, keeping only Copilot enabled
      • ☑️Attach relevant console logs to your report
      • ☑️Submit your bug report here
    • 💡 Feature Request Checklist
      • ☑️Use the feature request template for requesting a new feature
      • ☑️Clearly describe the feature, why it matters, and how it would help
      • ☑️Submit your feature request here

FAQ

Why isnt Vault search finding my notes?

If you're using the Vault QA mode (or the tool @vault in Plus), try the following:

  • Ensure you have a working embedding model from your AI model's provider (e.g. OpenAI). Watch this video: AI Model Setup (API Key)
  • Ensure your Copilot indexing is up-to-date. Watch this video: Vault Mode
  • If issues persist, run Force Re-Index or use List Indexed Files from the Command Palette to inspect what's included in the index.
  • ⚠️ Dont switch embedding models after indexing—it can break the results.
Why is my AI model returning error code429: Insufficient Quota?

Most likely this is happening because you havent configured billing with your chosen model provider—or youve hit your monthly quota. For example, OpenAI typically caps individual accounts at $120/month. To resolve:

  • ▶️ Watch the “AI Model Setup” video: AI Model Setup (API Key)
  • 🔍 Verify your billing settings in your OpenAI dashboard
  • 💳 Add a payment method if one isnt already on file
  • 📊 Check your usage dashboard for any quota or limit warnings

If youre using a different provider, please refer to their documentation and billing policies for the equivalent steps.

Why am I getting a token limit error?

Please refer to your model providers documentation for the context window size.

⚠️ If you set a large max token limit in your Copilot settings, you may encounter this error.

  • Max tokens refers to completion tokens, not input tokens.
  • A higher output token limit means less room for input!

🧠 Behind-the-scenes prompts for Copilot commands also consume tokens, so:

  • Keep your message length short
  • Set a reasonable max token value to avoid hitting the cap

💡 For QA with unlimited context, switch to the Vault QA mode in the dropdown (Copilot v2.1.0+ required).

🙏 Thank You

If you share the vision of building the most powerful AI agent for our second brain, consider sponsoring this project or buying me a coffee. Help spread the word by sharing Copilot for Obsidian on Twitter/X, Reddit, or your favorite platform!

BuyMeACoffee

Acknowledgments

Special thanks to our top sponsors: @mikelaaron, @pedramamini, @Arlorean, @dashinja, @azagore, @MTGMAD, @gpythomas, @emaynard, @scmarinelli, @borthwick, @adamhill, @gluecode, @rusi, @timgrote, @JiaruiYu-Consilium, @ddocta, @AMOz1, @chchwy, @pborenstein, @GitTom, @kazukgw, @mjluser1, @joesfer, @rwaal, @turnoutnow-harpreet, @dreznicek, @xrise-informatik, @jeremygentles, @ZhengRui, @bfoujols, @jsmith0475, @pagiaddlemon, @sebbyyyywebbyyy, @royschwartz2, @vikram11, @amiable-dev, @khalidhalim, @DrJsPBs, @chishaku, @Andrea18500, @shayonpal, @rhm2k, @snorcup, @JohnBub, @obstinatelark, @jonashaefele, @vishnu2kmohan

Copilot Plus Disclosure

Copilot Plus is a premium product of Brevilabs LLC and it is not affiliated with Obsidian. It offers a powerful agentic AI integration into Obsidian. Please check out our website obsidiancopilot.com for more details!

  • An account and payment are required for full access.
  • Copilot Plus requires network use to facilitate the AI agent.
  • Privacy & Data Handling:
    • Free tier: Your messages and notes are sent only to your configured LLM provider (OpenAI, Anthropic, Google, etc.). Nothing goes to Brevilabs servers.
    • Plus tier: Messages go to your configured LLM provider. File conversions (PDF, DOCX, EPUB, images, etc.) are processed by Brevilabs servers only when you explicitly trigger these features via @ commands.
    • Processing vs. Retention: We process your data to deliver the feature you requested, then discard it. No message content, file uploads, or documents are retained on our servers after processing.
    • User ID: A randomly generated UUID is sent with Plus API requests for service delivery (license abuse prevention, rate limiting) but is not used for user tracking, profiling, or analytics.
  • Please see the privacy policy on the website for more details.
  • The frontend code of Copilot plugin is fully open-source. However, the backend code facilitating the AI agents is close-sourced and proprietary.
  • We offer a full refund if you are not satisfied with the product within 14 days of your purchase, no questions asked.

Authors

Brevilabs Team | Email: logan@brevilabs.com | X/Twitter: @logancyang