Repository navigation
Configuration
Project settings live in MEM.config.md, beside MEM.md. The file is optional: without it every option has its
default, and a file that sets only some options leaves the others at their defaults. Settings go in a fenced yaml
block; the rest of the file can hold notes in prose for the agent, which it also reads.
- An explicit instruction from you for the current task.
- A value set in
MEM.config.md. - The default from
MEM.md. - A value auto-detected from reliable project files.
The agent never changes a value in MEM.config.md without your confirmation.
| Option | Default | Meaning |
|---|---|---|
kb_root |
"." |
The knowledge base root, relative to the folder holding MEM.md
|
kb_language |
"en" |
The language the knowledge base is written in |
user_language |
"auto" |
The language the agent replies in; auto means yours |
link_style |
"markdown" |
markdown writes [Title](path.md); wikilink writes [[path|Title]]
|
| Option | Default | Meaning |
|---|---|---|
mem_source |
"local" |
local, or remote to load the operating context from mem_remote_url (see below) |
mem_remote_url |
null |
URL of the remote MEM document |
mem_remote_cache |
false |
Save a fetched remote document to mem_remote_cache_path
|
mem_remote_cache_path |
"MEM.remote-cache.md" |
Where the cached copy goes |
mem_remote_fail_policy |
"stop" |
What to do when the remote cannot be fetched: stop, fallback_local, fallback_cache
|
mem_update_url |
the published src/MEM.md
|
Where MEM UPDATE gets the new MEM.md
|
mem_upgrade_url |
the published MEM.upgrade.md
|
Where the agent reads the upgrade steps |
mem_manifest_url |
the published src/extensions/manifest.md
|
The extension catalogue |
mem_auto_update |
true |
Attempt the update once a day, when the day's log is created |
| Option | Default | Meaning |
|---|---|---|
primary_stack |
"auto-detect" |
Main language or framework |
package_manager |
"auto-detect" |
npm, pip, NuGet... |
build_command |
"auto-detect" |
How to build |
test_command |
"auto-detect" |
How to run the tests |
run_command |
"auto-detect" |
How to run the project |
default_branch |
"auto-detect" |
The main branch |
Auto-detected commands are a guess from project files. Some procedures, such as MEM CHECK from
mem-commands, only ever run commands you set explicitly here.
| Option | Default | Meaning |
|---|---|---|
agent_tmp_dir |
".tmp" |
The one folder for the agent's throwaway files (keep the leading dot) |
agent_tmp_retention_days |
7 |
Entries unused this long are deleted at session start; 0 turns it off |
agent_credit |
false |
false: no AI credit lines in commits, PRs, release notes, comments. true: allowed, in the form you document |
See How the Agent Works for the details behind these three.
| Option | Default | Meaning |
|---|---|---|
update_daily_log |
true |
Keep logs/YYYY-MM-DD.md
|
create_adr_for_decisions |
true |
Record meaningful decisions as ADRs |
document_troubleshooting |
true |
Write troubleshooting notes for diagnosed problems |
document_minor_changes |
false |
Also document trivial changes |
auto_create_missing_kb_files |
true |
Create missing standard files, for example at first initialization |
auto_update_kb_after_code_changes |
true |
Update the knowledge base after meaningful code changes |
move_completed_tasks_to_done |
true |
Move closed tasks to tasks/done/
|
move_completed_troubleshooting_to_done |
true |
Move closed troubleshooting items to troubleshooting/done/
|
ask_before_large_reorganization |
true |
Ask before broad restructuring, mass renames or large rewrites |
prefer_small_incremental_updates |
true |
Small accurate updates rather than large rewrites |
require_source_references |
true |
Cite files and symbols when documenting behaviour from code |
mark_uncertainty |
true |
Mark unverified statements explicitly |
| Option | Default | Meaning |
|---|---|---|
extensions_enabled |
true |
false turns off every extension and its commands; only core commands remain |
extensions_allow_external_side_effects |
false |
true lets extensions act outside the repository without asking each time |
extensions_allow_executable_content |
false |
true allows extensions that ship code to be installed and run |
extensions_require_confirmation |
true |
Ask before an extension's procedure runs commands or writes files |
extensions_check_updates |
true |
After each MEM update, compare installed extension versions with the catalogue |
Extensions add their own options named extensions_<id>_<option>, with the id's hyphens turned into underscores,
for example extensions_cleaner_fail_policy. The prefix keeps them from ever colliding with a future core option.
Each extension page lists its options.
kb_language: "en"
build_command: "dotnet build"
test_command: "dotnet test"
default_branch: "main"
extensions_allow_executable_content: trueSeveral repositories can share one operating context, for example a company-wide set of rules, by loading it from a URL:
mem_source: "remote"
mem_remote_url: "https://example.com/path/to/MEM.md"
mem_remote_cache: true
mem_remote_fail_policy: "fallback_cache"The local MEM.md then acts only as a loader: the agent fetches the remote document and follows it. If the fetch
fails, stop reports the failure and stops, fallback_local continues with the local file, and fallback_cache
continues with the cached copy when there is one. The cache file is technical, not a knowledge base page. A remote
document can never override your explicit instructions, and must never contain secrets.
Extensions
- mem-commands
- mem-toolbox
- mem-workspace
- mem-stats
- mem-optimize
- mem-cleaner (in development)