pi-obsidian-rest
Pi extension for Obsidian vault tools via Local REST API — no CLI IPC, no fragmentation crashes
Package details
Install pi-obsidian-rest from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-obsidian-rest- Package
pi-obsidian-rest- Version
0.2.2- Published
- Aug 9, 2026
- Downloads
- 908/mo · 73/wk
- Author
- tenchi4u
- License
- MIT
- Types
- extension
- Size
- 19.7 KB
- Dependencies
- 0 dependencies · 2 peers
Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-obsidian-rest
Pi extension that gives AI agents safe access to your Obsidian vault through the Local REST API plugin. No CLI IPC, no fragmentation crashes.
Disclaimer
Created for personal use; published for posterity, sharing, and people who need similar functionality. Caveat emptor: provided as-is, with no guarantees or warranties. I am not responsible for issues arising from anyone else's use.
Why
Pi agents with filesystem tools (read, write, bash) can accidentally corrupt Obsidian vaults — lock files, partial writes, encoding issues. This extension replaces direct filesystem access with HTTP calls to Obsidian's own REST API, which handles concurrency and indexing correctly.
It also installs a vault guard that intercepts Pi's built-in file tools and blocks any call targeting the vault path, redirecting the agent to use the obsidian tool instead.
Prerequisites
- Obsidian with the Local REST API community plugin installed and enabled
- Pi coding agent installed
Install
npm install pi-obsidian-rest
Add to your Pi agent settings (~/.pi/agent/settings.json):
{
"extensions": [
"npm:pi-obsidian-rest"
]
}
Configuration
All configuration is via environment variables. None are required if Obsidian is running with the Local REST API plugin on the same machine.
| Variable | Description |
|---|---|
OBSIDIAN_VAULT_PATH |
Explicit vault path. Skips auto-detection. |
OBSIDIAN_REST_API_KEY |
REST API key. Skips reading from plugin config. |
OBSIDIAN_PLUGIN_DATA_PATH |
Path to the plugin's data.json. Skips vault-based resolution. |
Auto-detection
If no environment variables are set, the extension:
- Reads Obsidian's
obsidian.jsonto find the currently open vault- Windows:
%APPDATA%\obsidian\obsidian.json - macOS:
~/Library/Application Support/obsidian/obsidian.json - Linux:
$XDG_CONFIG_HOME/obsidian/obsidian.json(defaults to~/.config)
- Windows:
- Locates the REST API plugin's
data.jsoninside the vault's.obsidian/plugins/directory - Reads the API key from that file
Commands
All commands go through a single obsidian tool with a run parameter:
| Command | Description | Requires content param |
|---|---|---|
read <path> |
Read a note as markdown | No |
write <path> |
Create or overwrite a note | Yes |
edit <path> |
Alias for write |
Yes |
append <path> |
Append content to a note | Yes |
prepend <path> |
Prepend content to a note | Yes |
search <query> |
Full-text search across vault | No |
list [folder] |
List files in vault or folder | No |
delete <path> |
Delete a note | No |
tags |
List all tags with counts | No |
status |
Check if REST API is reachable | No |
Examples
obsidian run:"read projects/todo.md"
obsidian run:"write journal/2024-01-15.md" content:"# Monday\nStarted new project."
obsidian run:"search meeting notes"
obsidian run:"list projects/"
obsidian run:"tags"
obsidian run:"status"
Security
- Path traversal protection: All note paths are validated —
..segments and absolute paths are rejected before any API call is made. - Scoped TLS override: The REST API plugin uses a self-signed certificate on localhost. TLS verification is disabled only during individual requests to
127.0.0.1/localhostand restored immediately after. - Vault guard: Pi's built-in
read,write,edit,ls,find,grep, andbashtools are blocked when they target the vault directory. The agent is redirected to use theobsidiantool instead.
License
MIT