A small CLI for reading and writing notes in a local Obsidian vault.
Project description
odcli
odcli is a command-line tool for reading and writing notes in a local Obsidian vault.
It works directly on Markdown files inside the vault, so you can use it without any private Obsidian API.
Install
From PyPI:
pip install odcli
Or with uv:
uv tool install odcli
After installation, both command names are available:
odcli --help
obsidian-cli --help
Quickstart
If your vault is already in a common location, odcli can usually find it automatically:
odcli check
odcli list
If you want to set the vault explicitly:
export OBSIDIAN_VAULT="/path/to/MyVault"
odcli check
You can also override the vault per command:
odcli --vault "/path/to/MyVault" list
Common Commands
Read a note:
odcli read Inbox/today.md
Read specific lines:
odcli read-lines Inbox/today.md 3 8
Create or overwrite a note:
odcli write Inbox/today.md --content "# Today"
Replace a line range:
odcli write-lines Inbox/today.md 3 4 --content "- replaced\n- lines\n"
Append content:
odcli append Inbox/today.md --content "\n- new item"
Search across the vault:
odcli search "project alpha"
Skill Install
odcli can install helper skills for local coding tools.
Install into Codex:
odcli plugin install codex-skill
Install into Claude Code:
odcli plugin install claude-skill
Install both:
odcli plugin install all-skills
Installed paths:
- Codex:
~/.codex/skills/odcli/SKILL.md - Claude Code:
~/.claude/skills/odcli/SKILL.md
Vault Discovery
Resolution priority:
--vault /path/to/vaultOBSIDIAN_VAULT- The most recently opened vault recorded by local Obsidian config
- Common default directories
Built-in default locations:
- macOS:
~/Documents/Obsidian Vault - macOS:
~/Documents/Obsidian - macOS iCloud:
~/Library/Mobile Documents/iCloud~md~obsidian/Documents - Windows:
%USERPROFILE%\\Documents\\Obsidian Vault - Windows:
%USERPROFILE%\\Documents\\Obsidian
Command Summary
check
Validate that the vault exists and report whether .obsidian is present.
list
List Markdown notes in the vault.
Optional arguments:
--limit N
read
Read a note.
Arguments:
note_path: path relative to the vault root
write
Overwrite a note. Parent directories are created automatically if needed.
Arguments:
note_path--content TEXT--stdin
Optional arguments:
--create-only
read-lines
Read a line range. Line numbers are 1-based and inclusive.
Arguments:
note_pathstart_lineend_line
write-lines
Replace a line range. Line numbers are 1-based and inclusive.
Arguments:
note_pathstart_lineend_line--content TEXT--stdin
append
Append content to the end of a note.
Arguments:
note_path--content TEXT--stdin
search
Search across all Markdown notes in the vault.
Arguments:
query--case-sensitive
For Developers
Run from source:
cd path/to/obsidian_cli
uv sync
uv run odcli --help
Run tests:
cd path/to/obsidian_cli
uv run python -m unittest discover -s tests
Build distributions:
cd path/to/obsidian_cli
uv build
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odcli-0.1.6.tar.gz.
File metadata
- Download URL: odcli-0.1.6.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a384c2d79722299c57814e37eeab8c135e32d920553cea26f0104d038645a115
|
|
| MD5 |
8beef1634ade57d8b58d9e44d2d9b06c
|
|
| BLAKE2b-256 |
39d41d4a6a6b1d02e1cd28130122e4bfc551d5583cd5cd0aeec757e169b0bf17
|
File details
Details for the file odcli-0.1.6-py3-none-any.whl.
File metadata
- Download URL: odcli-0.1.6-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7b6949474cc1d7d76387195a77602512c6260dd98b65124963137346ca179ea
|
|
| MD5 |
e49d3755ecba000581c7aaadd9dcb393
|
|
| BLAKE2b-256 |
ad0e4bc3c587593cf90df64310e73659a66cba77f355296e2cf3c6b16e29ce91
|