Settings and features
Every setting lives in the dashboard: open it with the gear icon in the sidebar footer. Changes apply immediately; nothing needs a restart unless noted.
Features
Settings has seven tabs: Appearance, Plan & license, Features, Engine, Source control, Security, and About. Features holds the toggles below; Engine holds how the install runs.
Full git history
Free, off by default. Enabled, SourceVault indexes every commit in a repository instead of the latest 500, so history questions ("when did this change, and why?") draw on the complete record. The first index of a large repository takes a while and shows progress in the dashboard; after that, each index run only adds commits that are new since the last one. Turning it off returns to the capped behavior on the next index.
Multi-repo Ask
A licensed feature (Pro and up). Ask one question across every indexed repository at once, with each citation tagged by repo. Locked toggles show a tag; enter your license key under Plan & license and choose Activate.
Sentinel
Sentinel is part of the SourceVault Gateway bundle, in every license and the 7-day trial; it is locked on the free tier. It enforces policy between the index and everything that reads it: an access policy over which files AI may read at all, secret redaction on every answer before delivery, and a tamper-evident decision log.
AI-change provenance
Also part of the Gateway bundle: SourceVault classifies commits for AI authorship and security relevance and records the result, so "what did the AI change in auth this month?" has a grounded answer.
Audit log
Licensed installs and the 7-day trial (both run the SourceVault Gateway; the free tier does not) additionally see the audit log toggle: a hash-chained record of every ask, search, file read, settings change, token event, relayed task and policy decision, anchored by a signed head. It exports to a SIEM as JSONL, CEF, or syslog (sourcevault audit export, or GET /api/dashboard/audit/export), and sourcevault report ai-activity turns a period of it into the report of what AI read, wrote, and was stopped from.
Appearance and notifications
Desktop notifications
Off by default, and delivered entirely by your browser: a watch flags drift, an index run of a minute or longer finishes or fails, or health turns unhealthy. Nothing routes through a push service, so nothing leaves your machine; notifications fire while the dashboard is open (a tab or the installed app), and the app icon carries a badge counting watches that drifted since you last looked. Enabling the toggle asks the browser for permission; if the browser has notifications blocked for the site, the toggle explains how to re-allow them.
Engine
How the install runs: lite mode, the model Ask answers with, and the two stores. The Ask model is chosen once here and used by every surface; SOURCEVAULT_ASK_MODEL in the service environment outranks the pick, and with no model chosen Ask declines and says where to pick one.
Lite mode
Free, off by default; a dashboard toggle since v1.55.0, under Settings → Engine. Enabled, SourceVault runs with none of the model stack: no Ollama, no semantic search, no Ask — keyword and symbol-graph search, file reads, the dashboard, and the MCP server keep working unchanged. Server deployments set SOURCEVAULT_LITE=1 in the environment instead, which outranks the toggle. Switch it off and reindex to come back to the full stack.
Vector store
Where code-chunk vectors live. SQLite (the sqlite-vec extension in a file under the state directory) is the default for fresh installs: no database service, and a fraction of the memory on 16 GB machines, at measured retrieval parity with ChromaDB. An install that indexed on ChromaDB keeps it until you switch; npm run migrate-vectors -- --to sqlite copies existing indexes across without re-embedding. Switching is health-checked before it is saved, and each repository rebuilds on the new store at its next index run unless it was migrated.
Installs configured through the CODE_VECTOR_BACKEND environment variable show this control disabled with a note.
History backend
Which store serves git-history search. SQLite is the default for fresh installs — a slice of the same local file as the code vectors, so nothing in the install talks to ChromaDB — with ChromaDB kept by installs that indexed history on it. Qdrant keeps history queries fast when full-history indexing takes a repository to tens of thousands of commits; in our benchmarks on an 82,000-commit history, filtered queries ran roughly seventy times faster.
Choosing Qdrant verifies the backend before the change is saved: SourceVault downloads a version-pinned, checksum-verified engine (about 30 MB, one time), starts it locally with storage inside the SourceVault state directory, and only then commits the setting. A problem shows up in the settings dialog, not during a later index run. After a switch, each repository rebuilds its history index on its next reindex; search keeps working on the old backend until then.
Installs configured through the CODE_HISTORY_BACKEND environment variable show this control disabled with a note: the environment outranks the dashboard, so a click can never overrule an operator.
About
The version, a one-click update check, and Copy summary: a counts-only usage summary of this install (sources, features on, activity by surface, enforcement) put on your clipboard and sent nowhere. sourcevault report usage prints the same text in a terminal.
Plan limits
Pricing counts sources: a git repository or a local folder each use one slot, and all loose individual files share a single pooled slot. The free tier allows one source; Starter three, Pro fifteen, Team and Enterprise unlimited. The Sources row shows usage against your plan's cap, and the dashboard asks you to remove a source or upgrade rather than failing silently at the limit.
For operators: environment variables
Server deployments (Docker, systemd) configure by environment. Where an environment variable and a dashboard setting overlap, the environment wins and the dashboard says so.
| Variable | Default | Purpose |
|---|---|---|
PORT | 9000 | HTTP port for the API and dashboard |
DASHBOARD_TOKEN | auto-provisioned | Dashboard access token; one is generated at first boot if unset |
REPO_ROOT | ~/.sourcevault/repos (Linux/WSL2), $(brew --prefix)/var/sourcevault/repos (Homebrew), /data/repos (Docker) | Where indexed repositories live; the installer sets it |
SOURCEVAULT_ASK_MODEL (or OLLAMA_CHAT_MODEL) | unset | Pins the model Ask answers with and disables the Engine tab's picker. Unset, the pick made on the Engine tab applies; before any pick, the server suggests the RAM tier (qwen3.5:9b on 16 GB+, qwen3.5:4b on the compact profile) only while Ollama has it, and otherwise Ask declines |
CODE_VECTOR_BACKEND | unset | Forces the code-vector store (sqlite or chroma) and disables the dashboard control |
CODE_HISTORY_BACKEND | unset | Forces the history store (sqlite, chroma or qdrant) and disables the dashboard control |
CODE_QDRANT_URL | unset | Use an external Qdrant instead of the managed one |
CODE_HISTORY_MAX_COMMITS | 500 | History depth when full git history is off |
CODE_SEARCH_HMAC_SECRET | generated | Signing secret for the machine API (search, read, history) |
SOURCEVAULT_STATE_DIR | .sourcevault under the install directory; $(brew --prefix)/var/sourcevault/state (Homebrew), /data/state (Docker), $REPO_DIR/.sourcevault (Linux installer) | Where indexes, vectors, keys, and the audit log live |
SOURCEVAULT_LITE | unset | Lite mode for server deployments: lexical search only, no embeddings; outranks the Settings → Engine toggle |
SOURCEVAULT_TLS_CERT, SOURCEVAULT_TLS_KEY, SOURCEVAULT_TLS_CA | unset | Serve HTTPS with your own certificate; sourcevault tls-setup fills these in |
SOURCEVAULT_TLS_ALIAS_PORT, SOURCEVAULT_HTTP_REDIRECT_PORT | unset | Extra HTTPS listener (for example 443) and an HTTP-to-HTTPS redirect port |
SOURCEVAULT_LOG_FORMAT | unset | json for one JSON object per log line (log aggregation); unset for readable text |
SOURCEVAULT_LOG_LEVEL | info | The least severe log line written: info, warn, error, or silent. The agent, audit, and report CLIs default to warn, so their output is only their result |
SOURCEVAULT_LOG_STREAM | unset | stderr sends every log line to stderr; the MCP server sets it itself, so its stdout carries JSON-RPC frames only |