Sync with Obsidian via WebDAV

Connect Obsidian to Lifestream Vault using WebDAV for real-time two-way document sync — edit in Obsidian and see changes reflected instantly in your vault.

beginner12 min read

What You'll Learn

Lifestream Vault exposes a full WebDAV server at /webdav/{vaultSlug}, making it compatible with any WebDAV-aware client. In this guide you will connect Obsidian (via the Remotely Save community plugin) so that your local Obsidian vault and your Lifestream Vault stay in sync automatically.

By the end you will have:

  • Created a scoped API key restricted to the vault you want to sync
  • Configured Obsidian's Remotely Save plugin to use Lifestream Vault's WebDAV endpoint
  • A clear understanding of what syncs (Markdown files, images, .obsidian/ config) and what gets indexed for search (only .md files)
  • A working cURL test to verify the WebDAV connection independently of Obsidian

WebDAV sync is available on all tiers. You will need an API key with read and write scopes — the minimum required for full bidirectional sync.

Prerequisites: Obsidian installed, a Lifestream Vault account (any tier), and the Remotely Save community plugin (or any WebDAV-compatible sync plugin) installed in Obsidian.

Create a Scoped API Key

WebDAV auth uses HTTP Basic Auth — your email address as the username and an API key as the password. Create a dedicated API key scoped to the specific vault you want to sync. This way, if the key is ever compromised, only that vault is exposed and you can revoke it without affecting the rest of your account.

typescript
import { LifestreamVaultClient } from '@lifestreamdynamics/vault-sdk';

const { client } = await LifestreamVaultClient.login(
  'https://vault.lifestreamdynamics.com',
  'you@example.com',
  'your-password',
);

const apiKey = await client.apiKeys.create({
  name: 'Obsidian Sync',
  scopes: ['read', 'write'],
  vaultId: 'your-vault-id', // scope the key to a single vault
});

// The full key value is returned ONLY at creation time.
console.log('API key:', apiKey.key); // lsv_k_...

The API key value (the full lsv_k_... string) is shown only once at creation time. Copy and store it in a secure location immediately — it cannot be retrieved again. If you lose it, revoke the key and create a new one.

Configure Obsidian Remotely Save

Follow these steps to install and configure the Remotely Save plugin in Obsidian:

  1. Open Obsidian and go to Settings → Community Plugins → Browse. Search for "Remotely Save", click Install, then Enable.

  2. Go to Settings → Remotely Save and choose WebDAV as the sync method.

  3. Set the WebDAV URL to your vault's WebDAV endpoint — use the vault slug (not the vault ID):

    https://vault.lifestreamdynamics.com/webdav/{your-vault-slug}
    
  4. Set Username to your Lifestream Vault email address.

  5. Set Password to your API key — the full lsv_k_... value you created in the previous step.

  6. Leave Auth Type as basic.

  7. Click Check to verify the connection. A green checkmark confirms that Obsidian can reach your vault's WebDAV endpoint.

  8. Configure your preferred sync interval (recommended: every 5 minutes or on file change) and click Save.

The vault slug is the URL-safe version of your vault name (e.g., my-notes, work-docs). You can find it in the web UI under Vault Settings, or by running lsvault vaults list and looking at the slug column.

What Syncs and What Doesn't

The Lifestream Vault WebDAV server stores any file you upload, but only .md files are processed by the document pipeline (full-text search, tag extraction, metadata indexing).

ContentSynced to DiskIndexed for SearchNotes
.md filesYesYesFull-text search + metadata extraction
Images / PDFsYesNoStored on disk, accessible via WebDAV
.obsidian/ configYesNoPlugin settings, themes, workspace — passthrough
Other filesYesNoAny file type is stored but not indexed

Only .md files are synced to the PostgreSQL database for search, tags, and metadata. Everything else — images, PDFs, your .obsidian/ configuration directory — is stored on the filesystem and accessible via WebDAV but invisible to the Lifestream Vault search index and document API.

Test the Connection

You can verify WebDAV connectivity independently of Obsidian using a PROPFIND request with cURL. PROPFIND is the WebDAV equivalent of a directory listing — it returns the files and subdirectories at the target path.

curl -X PROPFIND https://vault.lifestreamdynamics.com/webdav/my-vault \
  -u "you@example.com:lsv_k_your_api_key" \
  -H "Depth: 1" \
  -H "Content-Type: application/xml"

A successful response returns HTTP 207 Multi-Status with an XML body listing the vault's files and directories. Each <D:response> element in the XML corresponds to one file or folder, including its name, size, and last-modified timestamp.

If the request fails, check the following:

  • 401 Unauthorized — double-check your email (username) and API key (password).
  • 403 Forbidden — the API key exists but lacks the required scopes or is not scoped to this vault. Verify the key has read and write scopes and is associated with the correct vaultId.
  • 404 Not Found — the vault slug in the URL may be incorrect. Use lsvault vaults list to confirm the slug.

If you get a 401, double-check your email and API key. If you get a 403, verify the API key has the correct scopes (read and write) and is scoped to the right vault.

Other WebDAV Clients

Lifestream Vault's WebDAV server is standards-compliant and works with any WebDAV-compatible client — not just Obsidian. Use the same WebDAV URL and credentials (email + API key) with any of these:

  • Obsidian Remotely Save — recommended for Obsidian users (covered in this guide)
  • 1Writer / iA Writer (iOS) — connect via WebDAV in the app's cloud storage settings
  • FolderSync (Android) — supports WebDAV as a sync target; useful for offline-first Android workflows
  • Cyberduck / Mountain Duck (macOS / Windows) — mount your vault as a network drive for Finder/Explorer integration
  • rclone (CLI) — ideal for scripted backups, migrations, or bulk imports from the command line

The WebDAV endpoint, authentication method, and supported operations (GET, PUT, DELETE, MKCOL, MOVE, COPY, PROPFIND, LOCK, UNLOCK) are identical regardless of which client you use.

Tips & Best Practices

  • Scope the API key to a single vault. If the key is compromised, only that vault is affected and you can revoke it without disrupting other integrations.

  • Use minimum required scopes. read + write is all you need for full sync. Avoid granting keys to third-party clients more access than necessary.

  • WebDAV is rate-limited to 600 requests per minute by default (tunable via the RATE_LIMIT_WEBDAV_PER_MIN env var). This is sufficient for normal Obsidian use, but bulk imports (hundreds of files at once) may need to be throttled. If you hit rate limits, Remotely Save will retry automatically on the next sync cycle.

  • Your .obsidian/ directory syncs as a passthrough. Plugin settings, themes, graph view preferences, and workspace layout all transfer between devices — so you get a consistent Obsidian experience on every machine without any extra configuration.

  • LOCK/UNLOCK support prevents edit conflicts. The WebDAV server uses Redis-backed distributed locks with per-user scoping and TTL enforcement. If two clients attempt to write the same file simultaneously, the second write is blocked until the first completes.

  • If sync stalls, check two things. First, verify your API key hasn't been revoked (Settings → API Keys in the web UI). Second, confirm the vault slug hasn't changed — vaults can be renamed, which changes the slug and breaks the WebDAV URL. Update the URL in Remotely Save settings if this happens.

What's Next

You now have Obsidian connected to Lifestream Vault via WebDAV with real-time two-way sync. Here are some natural next steps:

  • API Keys & Scoping — learn how to manage API key lifecycles, rotate keys, and fine-tune scope permissions
  • Sync with Cloud Storage — connect Google Drive, Dropbox, or OneDrive for an additional layer of bidirectional sync alongside WebDAV
  • Build a Custom Integration — use the SDK or REST API to build automation on top of the documents synced from Obsidian