OVault
A python library for accessing and editing your Obsidian vault.
Check out the examples!
Code Example
import ovault
# Open a vault at a given path
vault = ovault.Vault("test-vaults/simple_vault")
print("Vault Path :", vault.path)
print("Notes :", len(vault.notes()))
print("Attachments :", len(vault.attachments()))
print("Tags :", sorted(vault.tags()))
print()
# Get the note named 'first_note'
note = vault.note("first_note")
print("Note Name :", note.name)
print("Note Path :", note.path)
print("Note Tokens :", note.tokens())
Output:
Vault Path : /home/balder/projects/ovault/test-vaults/simple_vault
Notes : 11
Attachments : 3
Tags : ['callout4youtag', 'frontmatter-tag1', 'frontmatter-tag2', 'linksaregood']
Note Name : first_note
Note Path : first_note.md
Note Tokens : [Header(# FIRST NOTE!), Text(Wuhuuuuuuuuuuu!Thi...), InternalLink(second note), Text(.Takes a look at t...), InternalLink(sub/todo), Text()]
Included Utilities
OVault includes runnable modules for common tasks. Get an overview by running the ovault module:
python -m ovault
Output:
OVault provies a few utilties out of the box.
You can run them like so: `python3 -m ovault.<module>`
Available modules:
ovault.visualize_graph : Visualize your Obsidian vault graph using pyvis.
ovault.check_links : Check all external links to websites in an Obsidian vault and report any broken links.
ovault.to_html : Convert an obsidian vault to a simple static HTML site.
ovault.mv : Rename a file within an Obsidian vault, updating all links accordingly.
ovault.info : Show information about an Obsidian vault.
ovault.name_pasted_images : Rename pasted images in the vault based on the note they are pasted into.
ovault.help : Show a list of all utility modules included in `ovault`.
ovault.filename_compatibility : Check filenames for compatibility across different operating systems.
Install
pip install ovault
or locally
git pull https://github.com/BalderHolst/ovault
cd ovault
pip install .
Features
Vault Management
Indexing
- Indexing: Automatically indexes all notes and attachments within the vault upon initialization.
- Ignored Files: Respects and parses
.vault-ignorefiles to exclude specified paths during indexing. - Dangling Links: Identify and list links within your notes that point to non-existent files.
Note Handling
Access & Properties
- Access Notes & Attachments: Retrieve all notes or attachments in the vault as Python objects.
- Frontmatter Extraction: Manipulate YAML frontmatter from notes.
Modification
- Dynamic Note Modification: Programmatically insert or replace parts of a note
Tag Management
Querying Tags
- List All Tags: Get a complete list of tags present in your vault.
- Filter by Tag: Retrieve all notes associated with a specific tag.
Markdown Parsing & Tokenization
Token Representation
- Rich Token Representation: Notes are parsed into a detailed stream of
Tokenobjects, representing various markdown elements.
See Token in lexer/tokens.rs for all token definitions.
Contributing
I would be more than happy if anyone finds this useful enough to add to, or modify this code.
Development
Install ovault and development dependencies with
pip install -e ".[dev]"
or use the nix flake
nix develop
Build for Testing
maturin develop --release --features python
Test
./scripts/test.sh
Generate coverage report with
cargo tarpaulin --engine llvm --release --out Html
Build Documentation
./scripts/build-docs.py
Release
- Bump version in
Cargo.toml - Commit change and push
- Merge
devintomainand push - Create a git tag with the same version:
git tag <version> - Push new tag:
git push --tags
Metadata
Release files for ovault 0.0.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ovault-0.0.11-cp37-abi3-win_amd64.whl | CPython 3.7 | abi3 | Windows x86-64 | Details for ovault-0.0.11-cp37-abi3-win_amd64.whl |
| ovault-0.0.11-cp37-abi3-manylinux_2_34_x86_64.whl | CPython 3.7 | abi3 | Linux glibc 2.34+ x86-64 | Details for ovault-0.0.11-cp37-abi3-manylinux_2_34_x86_64.whl |
| ovault-0.0.11-cp37-abi3-macosx_11_0_arm64.whl | CPython 3.7 | abi3 | macOS 11.0+ ARM64 | Details for ovault-0.0.11-cp37-abi3-macosx_11_0_arm64.whl |
Total release size: 2.0 MB
Release files / ovault-0.0.11-cp37-abi3-win_amd64.whl
| Download URL | ovault-0.0.11-cp37-abi3-win_amd64.whl |
|---|---|
| Size | 589.9 kB |
| Tags | CPython 3.7 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f20f9d1f837c1e10cfee779b817e2b628270a02d507ad4db6f339c514cb54b03
|
|
BLAKE2b-256 checksum How to use checksums |
d6f39c8cf53d082c98856f74b80c7d995f588ba99ea4cdf0b0b777304ac0dc99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / ovault-0.0.11-cp37-abi3-manylinux_2_34_x86_64.whl
| Download URL | ovault-0.0.11-cp37-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 759.7 kB |
| Tags | CPython 3.7 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
1ef0fa64d8fb41eb7baa3548d99c332f51828fc634b57cd71bfd0727f6357f37
|
|
BLAKE2b-256 checksum How to use checksums |
01eac82c328bf164f2215bdeac3030aa9658eefd781de6326ec385b8551f4797
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / ovault-0.0.11-cp37-abi3-macosx_11_0_arm64.whl
| Download URL | ovault-0.0.11-cp37-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 686.3 kB |
| Tags | CPython 3.7 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d1844999923e1263efa12f0641791a8e6052209fa04e1c58aeac4a9286b4065f
|
|
BLAKE2b-256 checksum How to use checksums |
67e1037666919ec7629c43176755f14ce482f66b09188bd095f512cbc4fb38b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logSecurity for ovault 0.0.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 3 files in this release have been uploaded with provenance metadata.
Attestation for ovault-0.0.11-cp37-abi3-win_amd64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.