Verified by the sovseal team
LanceDB On-Device Database
Technical details of the serverless, Arrow-backed local vector store used by sovseal.
LanceDB is the default local vector database for sovseal. It runs as an embedded serverless library inside your agent or MCP server process, writing directly to your local file system.
File System Layout
All memory tables are stored on your local disk:
- Default Database Location:
~/.sovseal/db/ - Memories Table Path:
~/.sovseal/db/memories.lance/ - You can override this location by setting the
SOVSEAL_DB_DIRenvironment variable.
The table directories contain Arrow metadata files, schema configurations, and transaction logs. No database background process is run.
Arrow Table Schema
To ensure vector types, dimensions, and synchronization flags survive empty-table cold starts, sovseal initializes the memories table using an explicit Apache Arrow schema definition:
| Column Name | Arrow Data Type | Purpose |
|---|---|---|
| id | Utf8 (non-nullable) | Unique UUID generated client-side for each memory fact. |
| vector | FixedSizeList(384, Float32) | The 384-dimensional ONNX normalized embedding vector. |
| text | Utf8 (non-nullable) | The plain text representation of the memory. |
| timestamp | Int64 (non-nullable) | Epoch timestamp (Date.now()) recording when the memory was stored. |
| sync_status | Utf8 (non-nullable) | Replication status indicator: "pending" or "synced". |
Thread Safety & File Locking
Because LanceDB writes directly to files, the database handles concurrent access safely:
- Reader Isolation: Multi-threaded read queries are completely non-blocking, ensuring multiple agents or editor panels can invoke
recall_memorysimultaneously. - Writer Coordination: Writes are serialized using internal file-locking mechanisms.
- Transaction Log: LanceDB uses append-only transaction logs. If your machine crashes during a tool execution, the database recovers to the latest consistent sequence on next start.