Skip to content

aiobsidian

Async Python client for Obsidian.

CLI-first: works out of the box with the Obsidian CLI (v1.12+). Optional REST support via the Local REST API plugin.

Features

  • CLI-first — works directly with the Obsidian CLI binary, no plugins required
  • Optional REST — full REST API support via pip install aiobsidian[rest]
  • Async/await — built for modern async Python
  • Fully typed — complete type annotations and a py.typed marker
  • Resource-based API — intuitive access through cli.vault, cli.tags, client.search, etc.
  • Pydantic v2 models — structured, validated response objects

Quick example

import asyncio
from aiobsidian import ObsidianCLI

async def main():
    async with ObsidianCLI("MyVault") as cli:
        content = await cli.vault.read("notes/hello.md")
        print(content)

        tags = await cli.tags.list()
        results = await cli.search.query("python")

asyncio.run(main())
import asyncio
from aiobsidian import ObsidianClient

async def main():
    async with ObsidianClient(api_key="your-api-key") as client:
        status = await client.system.status()
        print(f"Obsidian v{status.versions.obsidian}")

        content = await client.vault.get("Notes/hello.md")
        print(content)

asyncio.run(main())

Next steps