Deepak Vaid138 downloadsAI-powered chat with multi-device relay, agentic tools, and collaborative conversation.
Obsidian AI is the product subtitle and branding used throughout the documentation and interface.
GitHub · Report Bug · Discussions
🤖 Collaborative AI + Human Chat for Obsidian
A persistent chat panel where AI agents and humans participate as equals — across devices, in real time. Agents can read and edit your vault through native tool calling. Bring your own API keys. Your data stays in your vault unless you explicitly send it to a configured provider, search service, or relay.
Obsidian AI includes no telemetry or analytics service. Network requests occur only when you use a configured feature: chat and AI memory/pruning send the selected prompt, context, and (when enabled) memory to the selected LLM provider; web search sends your query to the selected search provider; model discovery contacts the provider endpoint; and multi-device chat sends conversation messages to the relay URL you configure. Vault files are read or changed only when you select context, invoke an agent tool, or use an editing feature. API keys are stored in plugin settings and sent only to the provider or search service they configure.
Agent tools that create, modify, move, or delete vault files require approval by default. Automatic updates are disabled by default; downloaded release files are backed up before installation, but users who need cryptographic verification should install manually from a verified release.
Chat Lab: Obsidian AI adds a persistent chat panel to your Obsidian sidebar. Unlike typical chat plugins, it treats AI agents and remote humans as equal participants in the same conversation. Everyone broadcasts to everyone. Each participant decides whether and how to respond.
Key idea: You can have a chat tab with:
Messages are tagged with the sender's identity. You always know who said what — whether it's a local AI agent, a remote user on another device, or yourself.
The AI can also directly manipulate your vault through structured tool calls — search notes, edit content, create files, move documents, and more — all from the conversation.
| Feature | What It Does |
|---|---|
| Collaborative Chat | AI agents, remote humans, and you as equal participants |
| Multi-Agent Chat Relay | Real-time chat across devices via self-hosted WebSocket relay |
| Agentic Note Editing | 13 vault tools with approval flow — read, edit, create, move, search |
| Inline AI Editing | Context-aware suggestions with visual diff preview |
| Vault-Aware Context | @mention notes, folders, tags, active note, embed expansion |
| Web Search | DuckDuckGo, Brave, Tavily, Exa, SearXNG |
| Multi-Provider | OpenAI, Anthropic, Google, DeepSeek, OpenRouter, Azure, and custom OpenAI-compatible endpoints |
| Auto-Updater | One-click updates with stable/dev channels |
| Mobile-Responsive | Full functionality on iOS/Android |
The core of Chat Lab: Obsidian AI is a multi-participant chat where everyone is a first-class citizen:
@Cloudy fetch arxiv sends that request only to the agent named Cloudy.Chat with remote humans across devices — laptop, tablet, phone — in real time:
Note: This relays chat messages between clients, not vault content. Notes are not synced — only the conversation is.
See Multi-User Chat Design for architecture details.
The AI can directly manage your vault through structured tool calls:
| Tool | What It Does |
|---|---|
read_note |
Read any note's full content |
edit_note |
Overwrite a note with new content |
append_to_note |
Add content to the end of a note |
create_note |
Create a new note in any folder |
patch_note |
Find-and-replace inside a note |
edit_section |
Rewrite content under a specific heading |
search_notes |
Search by filename or path |
list_notes |
Browse folders with subfolder support |
get_note_metadata |
File stats (size, dates, word count) |
create_folder |
Create new folders |
move_note |
Move or rename notes |
delete_note |
Delete notes (to system trash) |
list_folders |
Navigate vault structure |
Approval Flow: By default, every tool call shows a preview card in chat — you approve or reject before it executes. Toggle Auto-Apply (🤖) to skip approval for trusted workflows.
Smart Results: Tool outputs are formatted as markdown tables and lists before the AI sees them — no raw JSON dumps in your chat.
Ctrl/Cmd + K, and get AI-powered transformations./ shortcuts.@mention Notes — Reference any note in chat.![[...]] embeds resolved recursively up to depth 2.Ask about recent events or facts beyond the model's training data:
Bring your own keys. No data leaves your machine unless you choose it to.
| Provider | Models | Local / Cloud |
|---|---|---|
| OpenAI | GPT-4o, GPT-4, GPT-3.5 | Cloud |
| Anthropic | Claude 3.5 Sonnet, Claude 3 Opus | Cloud |
| Gemini 1.5 Pro, Gemini Flash | Cloud | |
| DeepSeek | DeepSeek V3, DeepSeek R1 | Cloud |
| OpenRouter | 200+ models via unified endpoint | Cloud |
| Local models | Use a custom OpenAI-compatible endpoint; official Ollama integration is deferred for 1.3.1 | Optional |
| Azure OpenAI | Enterprise GPT models | Cloud |
| Custom | Any OpenAI-compatible endpoint | Either |
For the complete, implementation-independent capability and behavior map of the chat component, see the Chat Component Capability Map.
Stay current without manual downloads:
main branchThe fastest way to install and get automatic updates:
https://github.com/space-cadet/obsidian-aimain.js, styles.css, and manifest.json.obsidian/plugins/chat-lab/Click the 💬 icon in the left ribbon (or run "Open Chat Lab AI sidebar" from the Command Palette).
Open Settings → Chat Lab: Obsidian AI → Provider Profiles.
Click Add Profile, choose your provider, and enter:
@AgentName to route a message to a specific agentpnpm run relay
# or
node relay/relay-server.js
ws://192.168.1.42:8080)You can have AI agents and remote humans in the same tab, or humans only.
When the AI generates content you want to keep:
Or use slash commands in your message:
/create [[Note Name]] — create a new note/edit [[Note Name]] — overwrite an existing note/append [[Note Name]] — append to an existing noteAsk the AI to manage your vault directly:
"Summarize my
[[Project Notes]]and create a draft inDrafts/"
The AI will:
Project Notes via read_notecreate_note — pending your approval (unless Auto-Apply is on)Ctrl/Cmd + K (customizable in Hotkeys)Open Settings → Web Search. Choose a provider (DuckDuckGo works without setup). Now you can ask:
"What happened in quantum gravity research this week?"
Chat Lab: Obsidian AI works on mobile (iOS/Android), but there are platform-specific behaviors to be aware of:
When the Obsidian app is moved to the background, the operating system suspends its webview to preserve battery. This means:
What persists: Your chat history, session state, and context items are saved to local storage aggressively. When you return to the app, the conversation resumes exactly where you left it.
Recommendation: For long-running operations (large document analysis, multi-step tool workflows), keep the Obsidian app in the foreground. Use the Abort button if you need to pause mid-stream.
The chat interface adapts to smaller screens:
# Clone
git clone https://github.com/space-cadet/obsidian-ai.git
cd obsidian-ai
# Install
pnpm install
# Dev build with hot reload
pnpm run dev
# Production build
pnpm run build
# Package release artifacts
pnpm run package
# Start the relay server
pnpm run relay
src/
├── agent/ # Agentic tool calling: AgentLoop, ToolExecutor, tools, types
│ ├── AgentLoop.ts # Multi-step tool calling orchestration
│ ├── ToolExecutor.ts # Vault operation handlers (13 tools)
│ ├── tools.ts # Zod tool definitions
│ ├── types.ts # StreamEvent union, ToolCall, ToolResult
│ └── Orchestrator.ts # Participant-agnostic dispatch for multi-user chat
├── components/ # React UI (ChatApp, ChatInput, MessageBubble, PendingToolCard, etc.)
├── context/ # ContextEngine (vault context assembly, token estimation)
├── core/ # ChatEngine, useChat hook, streaming logic
├── adapters/ # LLMAdapter, ToolAdapter, RAGAdapter, PersistenceAdapter
├── modules/ # CodeMirror extensions (inline tooltip, diff, commands)
├── noteEditing/ # NoteEditingBridge (apply, append, create from chat)
├── sync/ # WebSocket sync adapter for multi-device relay
│ ├── SyncAdapter.ts # Interface: send, receive, sendTyping, onTyping
│ └── WebSocketSyncAdapter.ts # Relay implementation
├── views/ # Obsidian ItemView registration
├── api.ts # Provider abstractions & streaming
├── settings.ts # Plugin settings & configuration UI
├── default_prompts.ts # Built-in system prompts
└── main.ts # Plugin entry point
relay/
└── server.js # Standalone WebSocket relay for multi-device sync
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This plugin was originally forked from FBarrca/obsidian-inlineAI and has been significantly extended with chat, context, agentic tools, and multi-user/agent collaborative features.
UI and design patterns inspired by Logan Yang's excellent Obsidian Copilot plugin.
Licensed under the GPL-3.0 license.
Made with ❤️ for the Obsidian community