Skip to main content

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-ignore files 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 Token objects, 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

  1. Bump version in Cargo.toml
  2. Commit change and push
  3. Merge dev into main and push
  4. Create a git tag with the same version: git tag <version>
  5. 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)

Table of built distributions (wheels) for ovault 0.0.11
File Interpreter ABI Platform Actions
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 log

Release 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 log

Release 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 log

Security 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.

Select from 3 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page