Overview

KVault's speed comes from a simple split: key names live locally, values live remotely. When you connect an account or open a namespace, KVault starts a background sync that pages through Cloudflare's key listing API and stores every key name in local SQLite. Once the sync finishes, filtering, sorting, and global search are all offline operations — no network round-trips, no latency.

Values are never cached. Every time you open a key, KVault fetches the current value directly from Cloudflare. That means you always see the latest bytes, and KVault never stores sensitive values on disk. The only thing the local cache holds is metadata — the names, TTLs, and sizes of keys.

How to use it

Sync is automatic. When you add an account, every namespace syncs on connect. When you open a namespace tab for the first time, a targeted sync runs for that namespace. A progress indicator in the sidebar shows which namespace is syncing and how far along it is.

  • Manual re-syncCmd Shift R re-syncs the active namespace.
  • Per-namespace progress — the sidebar shows a spinner while a sync is in flight.
  • Error handling — if a sync fails, the namespace shows an error indicator; the FAQ covers common causes (token scope, rate limits).
  • Events — Rust emits sync-progress, sync-complete, and sync-error events per namespace, which the frontend wires into the sync store.

Tips

  • Re-sync before a major audit to make sure cached key names reflect reality — Cloudflare may have added or removed keys since your last sync.
  • Big namespaces (hundreds of thousands of keys) take a minute to sync the first time; subsequent syncs are much faster because KVault only reconciles changes.
  • Sync runs in the background — keep working in other namespaces while one is syncing; nothing blocks.
  • If you need faster cross-namespace discovery, lean on global search, which queries all the locally cached names at once.