The BIUMIND.md memory file¶
BIUMIND.md is a persistent instruction file injected into every conversation — it tells the model the conventions, terminology, and "read this first" pointers for this project / this user. What you write here is sent to the model as part of the system prompt and takes precedence over default behavior.
biu also has a separate layer of auto-memory (/remember, ~/.biumind/memory/) that the model accumulates on its own across sessions. The division of labor between the two is in the comparison table at the end.
Loading hierarchy¶
At startup (and on /memory reload), biu collects memory files in the following order — files closer to the current directory are placed later, giving them more of the model's attention weight:
| Layer | Path | Description |
|---|---|---|
| user | ~/.biumind/BIUMIND.md |
Your global personal preferences, shared across all projects |
| project | BIUMIND.md and .biumind/BIUMIND.md in every level from the filesystem root down to the current directory |
Suited to monorepos: subdirectory conventions naturally override parent ones |
| local | <current-dir>/BIUMIND.local.md |
Private to this machine; add to .gitignore and keep team-shared content out |
Additionally, the BIUMIND.md and .biumind/BIUMIND.md inside extra working directories — registered via /add-dir, --add-dir, or permissions.additionalDirectories in settings.json — are also loaded (files duplicating the current directory are not injected twice).
All file contents are concatenated into one system prompt, each section annotated with its source, like:
Size limits¶
Each file (including content expanded from @include) is capped at 40,000 characters; anything beyond is truncated and marked …(truncated). Convention-style content should never come close to this; if you find yourself truncated, that's the signal to move the detail into a separate document and pull it in on demand with @include.
The @include directive¶
An @path on its own line expands the target file's contents in place:
Resolution rules:
@./xxxor@xxx— relative to the directory of the file containing it;@~/xxx— expands to your home directory;@/xxx— absolute path;- only an
@on its own line is a directive; an@someonemention embedded in prose is never expanded by mistake; - circular references are blocked automatically (each file is expanded at most once).
What to write¶
The template generated by biu init --with-memory gives the general advice:
- Conventions that must be followed (code style, naming);
- A domain glossary;
- Key files / a "read this first" path index.
Some practical examples:
# Project notes
- Environment variables are always snake_case.
- Tests live in `./test/`, not `./tests/`.
- The entry point of the auth flow is `internal/auth/handler.go`.
- Commit messages use Conventional Commits.
[!TIP] For a new project you can simply run
/initin the REPL: biu detects the project type (language, build tool, test commands) and generates aBIUMIND.mdpre-filled with build / test / lint commands. Use/init --forceto overwrite an existing one, or/init --dry-runto preview.
Excluding specific directories¶
claudeMdExcludes in settings.json keeps BIUMIND.md files under certain paths from being loaded (for example, some enormous monorepo subtree):
Patterns support *, ?, and ** (any depth) globs; strings without wildcards are matched as substrings against the absolute path. Entries from the three settings.json layers are merged and deduplicated.
REPL commands¶
| Command | Purpose |
|---|---|
/memory |
List every loaded BIUMIND.md (source, path, character count) and the auto-memory status |
/memory reload |
Re-read after editing the files and hot-update the engine's system prompt, no restart needed |
/remember [-t <type>] <text> |
Save an auto-memory entry (default type=user) |
Auto-memory¶
Auto-memory is a per-user persistent knowledge store that the model reads and writes on its own during conversations, rooted at ~/.biumind/memory/:
~/.biumind/memory/
MEMORY.md # Index: always loaded, capped at 200 lines / 25 KB
<name>.md # Individual memory entries with frontmatter; the model reads them with the Read tool on demand
The MEMORY.md index is always injected into the system prompt (truncated with a warning if over the limit); individual entries are not all preloaded — the model learns the directory's location and when to read/write from a primer and reads them itself when needed. If the index doesn't exist, the primer still applies and the model can create it during the conversation.
Division of labor with BIUMIND.md¶
BIUMIND.md |
Auto-memory | |
|---|---|---|
| Describes | The project | The user, collaboration history, your feedback |
| Written by | You | The model (you can also append manually with /remember) |
| Scope | Per directory hierarchy (project / local) | Global (~/.biumind/memory/) |
| Loading | Full file contents injected | Index always resident; entries read on demand |