Where config lives
All configuration is one dotenv-style file, created bymemloom init:
memloom stop, then any
command). Real environment variables take precedence over the file, so a shell-provided or
MCP-provided key overrides what’s written there. Set MEMLOOM_HOME to relocate the whole
home directory (config and data).
Reference
MEMLOOM_AUTO_INDEX controls the background indexing that runs a few seconds after a
save or file ingest (one LLM call per new item, debounced into batched runs). Set it to
off if you want every LLM call to be explicit; memloom index and the Console still
work either way. Offline mode never auto-indexes.OPENROUTER_EMBED_PROVIDER exists because embedding latency varies wildly between hosts of
the same model on OpenRouter: the same call has been observed taking 16s on one host and
under a second on another. For the default model, memloom pins the fast host (nebius)
automatically; set this only if you change models or want a different host.The two modes
Offline mode is for trying memloom, tests, and air-gapped storage of text you’ll search by
keywords. For real use, set the key.
The embedding fingerprint
A store’s vectors are only comparable to vectors from the same provider + model + dims. On first init, memloom stamps the store with the embedding fingerprint (e.g.openrouter:qwen/qwen3-embedding-8b@1024). Any later startup with a different
fingerprint is refused with an explicit error, because mixed embedding spaces don’t fail
with an error; they silently return garbage recall.
Switching between offline and cloud mode (or changing embedding models) is a migration, not
a dead end: stop the daemon and run memloom reembed, which recomputes
every vector with the new provider and stamps the new fingerprint. The LLM model, by
contrast, can be changed freely; it doesn’t touch the vector space.
Daemon endpoints
Both bind to
127.0.0.1 only, and the API’s CORS policy allows only localhost origins, so a
public web page can’t drive your daemon.