Skip to content
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 workspaces

Environment 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:

DialogWhat it configures
PreferencesTheme, language, memories, account
EnvironmentEnvironment variables, skills, MCP plugins, OAuth integrations
AdministrationUsers, invites, global tools, safe folders, server config

Next step

First workspace