README file from
GithubChatting with AI
An agentic AI assistant that lives in your Obsidian vault — same experience on phone, tablet, and desktop.
✨ Why?
- Three providers, your choice — Anthropic API, OpenAI API, or sign in with your ChatGPT account. No marketplace of half-broken providers.
- 14 vault-native tools — read, edit, search, create, rename, frontmatter, backlinks. The agent goes from idea to changed files without leaving the chat.
- Mobile-parity, by design — no streaming, no Node-only modules, no localhost callbacks. iOS and Android behave the same as desktop.
- Selection scope — highlight text in any note, send it to chat, the assistant edits only inside the selection.
- Secrets in the OS keychain — never in
data.json, never synced across devices.
🎬 One conversation, many tools
Ask once, the agent figures out which tools to call:
You: Find every note in /Books that's missing a `rating` property and add `rating: ?`.
Assistant
→ search_vault("/Books") → 12 files
→ get_properties("Books/Sapiens.md") → has rating
→ get_properties("Books/Hail Mary.md") → no rating
→ set_properties("Books/Hail Mary.md", { rating: "?" })
→ ... (5 more)
Done — added `rating: ?` to 6 notes:
- Books/Hail Mary.md
- Books/Klara and the Sun.md
- ...
The agent reads before it edits, prefers small surgical changes over rewrites, and doesn't re-ask once you confirm.
🎯 Selection scope
Highlight text in any note, right-click, choose Send selection to Chat. The selection becomes a pill above the input and the assistant edits only inside the selected range — leaving the rest of the document byte-identical.
[ pill: "...the introduction was a bit dry, and..." ✕ ]
You: tighten this — keep my voice
The agent uses find-and-replace scoped to the selection text. Everything outside the highlight stays untouched.
🛠️ 14 vault-native tools
| Group | Tools | What they do |
|---|---|---|
| Read | read_document, read_file, search_vault, list_files, get_backlinks, get_properties, get_current_datetime |
Open notes/files, search by name and content, browse the tree, find backlinks, read frontmatter, fetch the current time in your locale. |
| Write | edit_document, create_file, set_properties |
Surgical find-and-replace / insert / full replace; create new notes (parent folders auto-created); safe YAML frontmatter merge or remove. |
| Manage | rename_file, delete_file, open_document, ask_user |
Rename or move (links auto-update); move to trash (respects your trash setting); open a file in the editor; pause and ask you when something is ambiguous. |
⚙️ Providers
| Provider | Auth | Default model | Notes |
|---|---|---|---|
| Anthropic | API key | Claude Sonnet 4.6 | Adaptive thinking, web search, prompt caching. |
| OpenAI | API key | Codex 5.3 | Responses API, reasoning, web search. |
| ChatGPT account | Sign in with ChatGPT | GPT-5.5 | Uses your ChatGPT plan instead of an OpenAI API key. |
About ChatGPT account login. This provider signs you in with your ChatGPT account and routes requests through the ChatGPT/Codex backend (not
api.openai.com). It requires an active ChatGPT plan with Codex access. The available models mirror the Codex CLI catalog.
🚀 Quick start
- Open Settings → Community plugins → Browse.
- Search for Chatting with AI.
- Click Install, then Enable.
- Settings → Chatting with AI → pick a provider, paste an API key (or click Connect ChatGPT).
- Open the chat from the ribbon icon or the command palette.
📦 Install
Community Plugins (recommended)
This is the default install path now that Chatting with AI is in the official Obsidian Community Plugins directory.
- In Obsidian, open Settings → Community plugins.
- If prompted, turn off Restricted Mode / turn on community plugins.
- Click Browse and search for Chatting with AI.
- Click Install, then Enable.
Migrating from BRAT
If you previously installed the beta through BRAT, move to the community version once it appears in the plugin browser:
- In Settings → Community plugins → Installed plugins, disable Chatting with AI.
- Open BRAT settings and remove
o1xhack/obsidian-chattingfrom the beta plugin list. - Return to Settings → Community plugins → Browse and search for Chatting with AI.
- If Obsidian shows it as Installed, open its entry and click Enable. If it shows Install, click Install, then Enable.
- Open Settings → Chatting with AI and confirm your provider settings are still present.
The plugin migrates data from the old obsidian-chatting folder to chatting-with-ai on first load. If you used a very old beta and the community browser does not recognize it as installed, installing the community version is still safe; the migration runs when the new plugin starts.
- Download
main.js,manifest.json,styles.cssfrom the latest release - Place them in
<vault>/.obsidian/plugins/chatting-with-ai/ - Reload Obsidian and enable Chatting with AI in Community Plugins
git clone https://github.com/o1xhack/obsidian-chatting.git
cd obsidian-chatting
npm install
npm run build
Symlink into a test vault:
ln -s "$(pwd)" /path/to/vault/.obsidian/plugins/chatting-with-ai
🧭 Design principles
| Principle | What it means |
|---|---|
| Mobile is not an afterthought | Every change is validated on iOS and Android. No streaming, no Node-only modules, no localhost callbacks. |
| Three sane providers | Anthropic + OpenAI for stability, ChatGPT account for users who'd rather not manage an API key. |
| Secrets in the keychain | API keys and OAuth credentials go through Obsidian SecretStorage. They never land in data.json, so they never sync to other devices. |
| No vault indexing | Linear search, capped. Predictable, no background work, no memory pressure on phones. |
| Conversation persists | Chat history survives Obsidian restarts. Stored locally in chat-state.json, never synced. |
| Right sidebar on mobile | Slides in from the edge — your document stays visible underneath. |
🗺️ Roadmap
- Three providers (Anthropic, OpenAI, ChatGPT account)
- 14 vault-native tools
- iOS / Android parity
- Selection scope
- Official Obsidian Community Plugins listing
- Multi-conversation history with archive / search
- Image attachments where the provider supports them
- More upstream provider models picked up automatically as they ship
Have a request? Open an issue.
❓ FAQ
Only what the agent needs for the current turn. When you ask a question, the agent decides which tools to call — read_document, search_vault, etc. — and the contents fetched by those calls (plus the active note context) are sent to your chosen provider. Nothing is uploaded in the background. There is no vault index.
Yes — that's the design constraint everything else is built around. Requests go through Obsidian's requestUrl() (mobile WebViews enforce CORS), there's no streaming, no Node-only modules, no localhost callback for OAuth. iOS and Android run the same code path as desktop.
It uses your existing ChatGPT plan (Plus, Pro, Team, Enterprise) — there's no separate billing. You need an active plan with Codex access. The plugin doesn't talk to api.openai.com; it talks to the same backend the Codex CLI uses.
Probably not — keeping the provider list small is a deliberate choice. Two API providers cover the major ecosystems, and ChatGPT account login covers the "I just have a ChatGPT plan" case. Adding more would mean more permutations to validate on mobile.
Locally in <vault>/.obsidian/plugins/chatting-with-ai/chat-state.json. It is not synced by Obsidian Sync (plugin data files are excluded by default). API keys live in the OS keychain via SecretStorage and are also not synced.
🤝 Contributing
Issues and PRs welcome. Before opening a PR:
- Run
npx tsc --noEmitandnpm run svelte-check - Test on at least one mobile platform (iOS or Android) — the mobile-parity rule is real
- For larger changes, open an issue first to align on direction
🙏 Acknowledgements
Originally derived from omarshahine/obsidian-chat (MIT). The original copyright is preserved in LICENSE. Chatting with AI is now an independent project with its own roadmap — major rewrites include the agent loop, mobile-parity work, the ChatGPT account provider, and the selection-scope feature.
📄 License
MIT.
Author: Yuxiao (o1xhack) · app.o1xhack.com