Where config lives
memloom init, dotenv-style, read at startup. Restart after editing. Real
environment variables win over the file, so a shell or MCP key overrides what is written there.
MEMLOOM_HOME relocates the whole directory, config and data together.
The settings that matter
The full annotated list, including transcription and diarization, lives in
config.env.example in the repo and in the file memloom init writes.
MEMLOOM_OWNER_ID is the one exception to everything above: it is read from a process’s own
environment and never from config.env. That file configures the daemon, which serves every
owner, while this names which owner one client process is, so it belongs to the shell profile or
MCP registration that launched it. Unset means the daemon’s default owner, which is what a
single-owner install has always used. See memory per person.
Notes on three of them
Notes on three of them
MEMLOOM_AUTO_INDEX covers the indexing that runs a few seconds after a save or ingest, one
model call per new item, debounced. Set it off to make every call explicit. memloom index
still works. Offline never auto-indexes.RECONCILE_ENABLED=0 is a kill switch, not the switch.
Reconciliation is on by default with its two free passes, and which
passes run is a viewer setting that needs no restart. Setting 0 makes an applying run fail
with a 403 and stops automatic runs acting. Previews keep working.OPENROUTER_EMBED_PROVIDER exists because embedding latency varies wildly between hosts of
the same model: the same call has been seen taking 16 seconds on one and under a second on
another. memloom pins the fast host for the default model, so set this only if you change
models.The two modes
Offline is for trying memloom, tests, and air-gapped keyword search. For real use, set the key.
The embedding fingerprint
Vectors are only comparable to vectors from the same provider, model and dims, so the store is stamped on first init, for exampleopenrouter:qwen/qwen3-embedding-8b@1024. A later startup with
a different fingerprint is refused.
Changing model is a migration, not a dead end: stop the daemon and run
memloom reembed, which recomputes every vector and stamps the new fingerprint. The
LLM model can be changed freely, since it never touches the vector space.
Daemon endpoints
Both bind to
127.0.0.1, and CORS admits only localhost origins, so a public web page cannot
drive your daemon.
If the wire port will not bind on Windows
If the wire port will not bind on Windows
Hyper-V, WSL and Docker reserve random 100-port blocks inside the ephemeral range at every boot,
and one can land on 54329. The daemon then starts without the wire and prints why, so the API
and viewer keep working.Set
MEMLOOM_PG_PORT to a free port below 49152 and restart.
netsh interface ipv4 show excludedportrange protocol=tcp lists the blocked ranges.