Lavox docs
GitHub Get Lavox

Self-hosting

Everything already runs on your machine. Self-hosting here means the optional parts: extraction with your own LLM, your own embedding model, and an optional sync server you control.

Decision extraction with any endpoint

Extraction turns transcripts into typed assertions. It is off until you provide a key, and it speaks to any OpenAI-compatible chat-completions endpoint:

# OpenRouter (default endpoint)
LAVOX_LLM_KEY=sk-or-... server/.venv/bin/python3 server/extract.py

# or bring your own endpoint: Ollama, vLLM, OpenAI, anything compatible
LAVOX_LLM_URL=http://localhost:11434/v1/chat/completions \
LAVOX_LLM_KEY=... server/.venv/bin/python3 server/extract.py

LAVOX_LLM_MODEL picks the model. Assertions are written in the language of the transcript.

Your own embedding model

Embeddings run locally via fastembed (ONNX). The vector tables are tagged with the model id, so switching models builds the new index alongside the old one and cuts over when ready: no downtime, no lock-in. Set LAVOX_EMBED_MODEL to any model fastembed supports.

Optional sync server

The server in server/ can also run on your own machine or VPS to sync recordings across devices and serve share links. It is the same codebase; point Lavox Hub at it and set an API key:

The memory itself never syncs through our infrastructure. A hosted sync option is on the roadmap as a paid convenience; the self-hosted path stays first-class.

Backups

Your entire memory is ~/Lavox/memory/lavox-memory.db plus the recordings folder. Copy them, and you have everything.