engram

Configuration

engram.toml config file and environment variables

Configuration

Engram looks for configuration in the following order:

  1. ./engram.toml — current directory
  2. ~/.engram/engram.toml — home directory
  3. Default values — if no config file found

Environment variables always override file values.

engram.toml structure

[database]
path = "~/.engram/memories.db"

[embedding]
provider = "voyage"         # voyage | deterministic
model = "voyage-code-3"
# api_key = "..."          # or via ENGRAM_VOYAGE_API_KEY

[llm]
provider = "openai"         # openai | local
model = "gpt-4o-mini"
# api_key = "..."          # or via ENGRAM_OPENAI_API_KEY

[server]
socket_path = "~/.engram/engram.sock"
reindex_interval_secs = 3600

[hnsw]
max_connections = 16
ef_construction = 200
ef_search = 40
dimension = 1024

[consolidation]
stale_days = 90
min_score = 0.3

[trainer]
trainer_binary = "engram-trainer"
trainer_timeout_secs = 300
models_path = "~/.engram/models"

Sections

database

ParameterDefaultDescription
path~/.engram/memories.dbPath to SQLite database

embedding

ParameterDefaultDescription
providervoyageEmbedding provider: voyage or deterministic
modelvoyage-code-3Embedding model
api_keyAPI key (prefer environment variable)
dimension1024Embedding vector dimension

The deterministic provider requires no API key and generates deterministic embeddings from text. Suitable for testing.

llm

ParameterDefaultDescription
provideropenaiLLM provider: openai or local
modelgpt-4o-miniText generation model
api_keyAPI key (prefer environment variable)

The local provider uses an ONNX model from trainer.models_path for local generation without API calls.

server

ParameterDefaultDescription
socket_path~/.engram/engram.sockUnix socket path
reindex_interval_secs3600Reindex interval (seconds, 0 = disabled)

hnsw

ParameterDefaultDescription
max_connections16Maximum connections in HNSW graph
ef_construction200Accuracy during index construction
ef_search40Accuracy during search
dimension1024Vector dimension (must match embedding.dimension)

consolidation

ParameterDefaultDescription
stale_days90Stale record threshold (days)
min_score0.3Minimum score for consolidation candidates

trainer

ParameterDefaultDescription
trainer_binaryengram-trainerTrainer binary path or name
trainer_timeout_secs300Trainer execution timeout (seconds)
models_path~/.engram/modelsDirectory for ONNX models

Environment variables

VariableOverrides
ENGRAM_VOYAGE_API_KEYembedding.api_key (when provider=voyage)
ENGRAM_OPENAI_API_KEYllm.api_key (when provider=openai)
ENGRAM_DB_PATHdatabase.path
ENGRAM_SOCKET_PATHserver.socket_path
ENGRAM_EMBEDDING_MODELembedding.model
ENGRAM_LLM_MODELllm.model
ENGRAM_TRAINER_BINARYtrainer.trainer_binary
ENGRAM_TRAINER_TIMEOUTtrainer.trainer_timeout_secs
ENGRAM_MODELS_PATHtrainer.models_path

Default paths

~/.engram/
  engram.toml          # configuration
  memories.db          # SQLite database
  engram.sock          # Unix socket server
  models/              # ONNX models from trainer
  *.hnsw               # serialized HNSW indexes

Initialization

The engram init command creates the ~/.engram/ directory with default configuration and an empty database. If the directory already exists, init skips creating existing files.