Configuration
Configuration
Where the data lives
Everything Vectora needs to run lives in ~/.vectora/:
~/.vectora/
├── config.toml # runtime configuration (providers, storage)
├── auth.key # JWT key (auto-generated, 600 permissions)
├── data/
│ ├── vectora.db # users, sessions, memories, checkpoints (SQLite WAL)
│ ├── embedding_queue.db # async indexing queue
│ ├── traces.db # observability spans
│ └── lancedb/ # vector store (lite mode)
├── artifacts/ # plans/specs generated by the agent
├── secrets/
│ ├── system.kdbx # system secrets vault (KeePassXC)
│ └── users/{id}.kdbx # per-user vault (API keys, SSH)
├── skills/{user_id}/ # installed skills (SKILL.md)
├── safe_roots.json # trusted paths configured by the admin
└── workspaces.json # registered workspacesEnvironment variable hierarchy
Three layers, most specific wins:
defaults.env (built into the app) → .env (project, dev) → ~/.vectora/.env (user, global)Per-user overrides (e.g., a different API key for one team member) live in the env_overrides database column, editable via Settings → Environment → Envs.
Storage mode: lite or complete
Controlled by STORAGE_MODE (lite by default). See the dedicated guide at Storage: lite vs. complete to know when each makes sense — quick summary: lite (SQLite + LanceDB) is zero-infra and handles real scale; complete (Postgres + Qdrant + Redis) is about durability/managed infra, not a performance gate. Regardless of mode, users/auth/config always stay in SQLite.
The three settings screens
Everything you configure through the UI lives in three dialogs — detailed in Using settings:
| Dialog | What it configures |
|---|---|
| Preferences | Theme, language, memories, account |
| Environment | Environment variables, skills, MCP plugins, OAuth integrations |
| Administration | Users, invites, global tools, safe folders, server config |