lowshot27 downloadsConnect AI providers to Obsidian notes and review vault file actions before applying them.
🌐 Language / 언어 / 言語: English | 한국어 | 日本語
AI note Q&A and reviewed vault file actions for Obsidian.
Note Pilot adds an AI work panel to Obsidian. It can ask a configured model about the current note or selected text, and it can turn write requests into reviewed vault actions such as creating, appending, or modifying Markdown notes.
The plugin does not apply AI-suggested file changes automatically. Vault changes are applied only after you review and confirm them in Obsidian.
openai-oauth proxy.Note Pilot supports these connection choices:
| Connection | Uses |
|---|---|
| ChatGPT subscription | Local openai-oauth proxy at http://127.0.0.1:10531/v1 |
| OpenAI | OpenAI-compatible /chat/completions API |
| Anthropic Claude | Anthropic Messages API |
| OpenRouter | OpenAI-compatible /chat/completions API |
| Groq | OpenAI-compatible /chat/completions API |
| Gemini API | Gemini's OpenAI-compatible endpoint |
| DeepSeek | OpenAI-compatible /chat/completions API |
| Ollama / local | Local OpenAI-compatible endpoint |
| Custom OpenAI-compatible endpoint | Any compatible base URL and model |
Note Pilot is designed around one principle: AI can suggest changes, but the user keeps control of the vault.
openai-oauth, the user sees the commands in a normal terminal.graph TD
User((User)) -->|"Ask current note / selected text"| Panel[Obsidian panel]
Panel --> Context[Current note context]
Context --> Provider{Provider}
Provider -->|"ChatGPT subscription"| OAuth[openai-oauth local proxy]
Provider -->|"API key presets"| Compatible[OpenAI, OpenRouter, Groq, Gemini, DeepSeek, Ollama, Custom]
Provider -->|"Anthropic API key"| Anthropic[Anthropic Messages API]
OAuth --> Model[Model response]
Compatible --> Model
Anthropic --> Model
Model -->|"Answer"| Chat[Sidebar chat]
Model -->|"Vault action JSON"| Review[Review modal]
Review -->|"Cancel"| Stop[No file changes]
Review -->|"Apply"| Vault[(Obsidian vault)]
Before the plugin is available in the Obsidian community directory, install it from a GitHub release:
VaultFolder/.obsidian/plugins/note-pilot/
Place these release assets in that folder:
main.js
manifest.json
styles.css
Restart Obsidian, then enable Note Pilot from Settings -> Community plugins.
Open Settings -> Community plugins -> Note Pilot and choose a connection mode.
This mode uses openai-oauth, a local OpenAI-compatible proxy.
Base URL: http://127.0.0.1:10531/v1
Model: gpt-5.4
API key: empty
The plugin does not manage your ChatGPT login session directly. It calls the local proxy URL after you run openai-oauth.
The settings page includes three visible terminal buttons:
Install Node.jswinget install -e --id OpenJS.NodeJS.LTS.node and npm, then prints package-manager guidance.Install/update openai-oauth toolscodex and openai-oauth.npm install -g @openai/codex
npm install -g openai-oauth
Login and run openai-oauthnpx @openai/codex login
npx openai-oauth
All install and login commands run in a visible terminal after you press a button. The plugin does not silently install tools or authenticate in the background.
Choose API key provider, then select one of these presets:
OpenAI-compatible providers use /chat/completions. Anthropic Claude uses the Anthropic Messages API (/v1/messages) with x-api-key and anthropic-version headers.
For hosted providers, enter an API key before using Test connection. For Ollama / local, leave the API key empty and confirm the local server is running before testing.
The model can propose these actions:
| Action | Description |
|---|---|
create_folder |
Create a folder in the vault |
create_note |
Create a Markdown note |
append_note |
Append content to an existing note |
modify_note |
Replace an existing note |
modify_note replaces the full file and is shown as a higher-risk action in the review modal.
Example:
{
"actions": [
{
"action": "create_folder",
"path": "Research"
},
{
"action": "create_note",
"path": "Research/index.md",
"content": "# Research\n\nNotes go here."
}
]
}
All paths must be vault-relative. Absolute paths and .. path traversal are rejected.
The plugin is intentionally small and dependency-light. It uses plain JavaScript and CommonJS so the release artifact can be inspected directly as main.js.
Plugin, PluginSettingTab, ItemView, Modal, and Setting build the UI.requestUrl sends model API requests through Obsidian's network helper.Vault.create, Vault.createFolder, and Vault.process apply reviewed file changes.Plugin.loadData() and Plugin.saveData() store settings such as provider choice, model, API key, and privacy options.The model client has two request shapes:
POST /chat/completions and parse choices[0].message.content.POST /v1/messages, x-api-key, and anthropic-version, then parses content[].text.openai-oauth is treated as a local OpenAI-compatible provider. This lets ChatGPT subscription users run a local proxy without pasting an OpenAI API key into the plugin.
The model is asked to produce JSON only when it wants to modify the vault. The plugin accepts either a single action or an actions array, validates each vault-relative path, and rejects absolute paths or .. traversal.
When applying actions:
Vault.create.Vault.createFolder.Vault.process so the update is handled by Obsidian's vault API.The test suite uses Node.js's built-in node:test runner and node:assert.
The tests cover:
Run all tests:
node --test tests/*.test.js
Run the full local verification before publishing:
npm run verify
Note Pilot can send note content to external services, depending on your settings.
openai-oauth, prompts are sent to the local proxy URL you configure, usually http://127.0.0.1:10531/v1.loadData() and saveData().openai-oauth setup commands after you press them.For vulnerability reporting and the full security model, see SECURITY.md.
node --test tests/*.test.js
On Windows, if node --test tests/*.test.js fails with Access is denied, check whether node points to an app-packaged runtime instead of a normal Node.js install:
Get-Command node -All
For development and release testing, install Node.js from https://nodejs.org/ and run tests in a new terminal.
GitHub Actions also runs the test suite on pushes to main and on pull requests.
Before creating a GitHub release:
manifest.json version.package.json version.versions.json if the minimum Obsidian version changes.manifest.json version.main.js
manifest.json
styles.css
The plugin ID is:
note-pilot
This project was built with human review and AI coding-agent assistance across design, implementation, tests, and documentation.
MIT