Memoosea dual-path memory system for proactive agents

Source on GitHub

Configuration

All of it is environment variables, all of it defaults to on, and all of it is set where the host gives its MCP server and hooks their environment.

Switches

VariableDefaultEffect
MEMOOSE_HINTSon0 stops injecting relevant-memory hints before each prompt
MEMOOSE_AUTO_RECALLon0 stops injecting standing context at session start
MEMOOSE_AUTO_CAPTUREon0 stops background capture entirely
MEMOOSE_AUTO_MAINTAINon0 stops the daily offer to run memoose maintain
MEMOOSE_MAINTAIN_EVERY_HOURS24How often that offer may appear
MEMOOSE_HINT_COUNT4How many hints may be injected at most
MEMOOSE_HINT_MIN_SCORE0.5Relevance floor below which Memoose stays silent
MEMOOSE_CAPTURE_MODELhaikuWhich small model does the background extraction
MEMOOSE_CAPTURE_MIN_CHARS400How substantial a turn must be before capture spends anything
MEMOOSE_CAPTURE_TIMEOUT300Seconds a background capture job may take
MEMOOSE_DATA_DIR~/.memooseWhere the SQLite files live
MEMOOSE_PROJECT_DIRhost launch directoryWhich directory the default dataset name is derived from
MEMOOSE_EMBEDDERautohash (no download) or fastembed (needs the extra)

Scopes and where data lives

One SQLite file per scope, under ~/.memoose/<dataset>.sqlite. There is no server and no daemon: the file is yours to open, copy, back up or delete. What you recall from it becomes context for your host's model, the same as any other text the agent reads.

recall searches the project dataset and then the user dataset and merges the results, with the project's own facts taking precedence, so a project convention overrides a personal default without you having to say so. Pass include_user=false to search only the project, or datasets=[…] to be explicit. list_datasets shows every scope on the machine and where its file is.

Embeddings

The vector channel of hybrid retrieval needs embeddings, and Memoose computes them locally rather than calling an API. Two options:

hash
A keyless hashed fallback. No model download, no network, works everywhere. This is what you get by default if fastembed is not installed.
fastembed
Real local embeddings, better semantic recall, one model download. Install the extra (uv sync --extra fastembed) and it is picked automatically.

auto uses fastembed when it is importable and hash otherwise. Set MEMOOSE_EMBEDDER explicitly to pin one. The lexical channel is BM25 either way, so retrieval works with no embedder worth the name.

Turning it all off

Setting the three switches to 0 leaves you with exactly the tools: nothing runs unless the agent calls it. Uninstalling is removing the MCP server entry from the host's config, the skills directory it copied in, and (if you want the memory gone too) the SQLite files under ~/.memoose. forget(whole_dataset=true) does the last part from inside the host, and asks for confirmation first.