Skip to content
semvault

Semantic storage

Remember anything. Find it by meaning.

A per-user vault for keys, descriptions, and values — with semantic search powered by embeddings, optional hybrid dense + sparse retrieval, and a clean HTTP API (JWT or API keys).

Built for personal knowledge and automation

Store structured records with a stable key, human-readable description, and arbitrary value text. Search uses the text you care about — not only exact string matches.

Semantic search

Query in natural language; results rank by relevance. Optional hybrid mode combines dense vectors with sparse BM42 + RRF fusion for sharper keyword behaviour.

Per-user isolation

Every vector and payload is scoped by user_id. JWT sessions and hashed API keys; optional AES-GCM encryption for sensitive payload fields at rest.

Automation-friendly

Use X-API-Key for scripts: same vault operations as the browser token. Export and import JSON for backups.

Rate limits & quotas

Tier-based record caps (Free / Pro / Team). Per-IP rate limits with Redis for multi-instance deployments; standard limit headers on responses.

Pricing tiers

Defaults shown below are enforced server-side via environment variables. Billing integration is not included — tiers are a roadmap hook for Stripe or similar.

Free

Individuals getting started

$0 / month
  • Up to 500 records
  • Semantic + filtered search
  • API keys & JWT auth
Start free
Pro

Power users & small teams

(set by you)
  • Up to 10,000 records
  • Same API surface as Free
  • Higher quotas via users.tier=pro
Open app
Team

Larger vaults

(set by you)
  • Up to 50,000 records (default cap)
  • Assign users.tier=team in the database
  • Designed for org billing later
Read the API

API at a glance

Base URL is your deployment origin. Prefer versioned paths under /v1 (mirrors unversioned routes). Interactive schema: /docs.

Semantic search
curl -s -X POST "$ORIGIN/v1/search" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{"query":"wifi password","limit":10,"offset":0}'
Create record (API key)
curl -s -X POST "$ORIGIN/v1/records" \
  -H "X-API-Key: sv_..." \
  -H "Content-Type: application/json" \
  -d '{"key":"wifi","description":"home","value":"secret","tags":[]}'