EMM and EXMM
Two of Eldric's own file formats sound alike and do different jobs. EMM is a memory: you store into it and recall from it, and no model runs. EXMM is a container: one file that holds a model and, if it has one, the model's memory. This page says what each does in the shipped release.
EMM: a memory, no model
An .emm file is a compressed memory of fixed size. Storing adds an item to it; recalling asks it for what is closest to a question. Neither step runs a language model or any other model. Eldric uses this kind of memory in three places: beside the exact store of facts you tell Eldric (/api/v1/memory/*), in the retrieve workload (Model types), and as the index the router uses to pick the tools it offers.
What EMM adds today
For remembered facts, Eldric keeps every fact as written in an exact store and, beside it, the compressed memory. On a recall the facts you get, and their order, come from the exact store alone. The compressed memory answers one number, a confidence, which goes with the list. It adds nothing to the list, removes nothing and does not reorder it.
NOVA measured on 2026-10-29 that this confidence does not yet tell a stored fact from an absent one, and that the compressed memory on its own finds facts only at chance level once 2,000 are stored. The measurement ran on a Mac with a synthetic embedder; the figures and their conditions are on Memory: how it works. From 5.0.194 the chat's memory search and the knowledge sources rank memory hits by each hit's own score, not by that confidence.
EXMM: one file, model and memory
An .exmm file starts with EXMM, a version and a list of sections. Each section has a type and its own checksum. The section types Eldric reads:
| Section | What it holds |
|---|---|
| Configuration | What the file is: the shape of its model, a signed list of capabilities, a render description for a simulation, or a manifest. A capability list without a valid signature is ignored. |
| Model weights (P) | A forecaster, a small language model, or a whole GGUF model carried inside. |
| Memory (L) | Stored associations the model can recall from, marked as facts or as episodes. |
| Shards (S) | Memory added after the file was built, each one removable on its own. |
| Operator (N) | A world model in the N-slot format (see World models). |
One file can also hold several models, a bundle: its first section is a manifest that lists the members (forecasters, language models and memories) and which sections belong to each. For a forecast, member in the request picks one. Every other .exmm is one model, or a container of memory and operator sections without a model.
Eldric looks for .exmm files in the inference model directory (/data/eldric/models on a packaged node) and finds them by name, with or without the extension. exmm_preload in /api/v1/inference/config loads named files at start. The model store (/api/v1/models/store, administrators) lists, uploads, loads and deletes them, wraps a GGUF file in an .exmm, and can create an empty memory file or add a memory section to an existing one.
What Eldric serves from an EXMM file
| Route | Uses | Who |
|---|---|---|
GET /api/v1/exmm/models | Lists the files, with their sections and whether each parsed. | not limited to administrators |
POST /api/v1/exmm/forecast | Model weights: a forecast from a series you send. | not limited to administrators |
POST /api/v1/exmm/chat | A language model in the file; a carried GGUF runs in llama.cpp. A file without one answers 422 not_a_chat_model. | not limited to administrators |
POST /api/v1/exmm/recall | Memory plus shards. 404 model_has_no_L_section when there is no memory. | not limited to administrators |
POST /api/v1/exmm/simulate | Operator: steps a world model forward. | not limited to administrators |
POST /api/v1/exmm/shard, DELETE /api/v1/exmm/shard | Adds a shard, or marks one removed. | administrators |
POST /api/v1/exmm/consolidate | Folds the shards into the memory and rewrites the file, keeping a backup. | administrators |
The forecaster behind forecasting your data is an .exmm of this kind.
Files it cannot read
A file with the wrong start, a section that runs past the end of the file or a checksum that does not match is listed with "ok": false and is not loaded. Asking for it answers 404 model_not_found, as does a file whose configuration names a model kind this release does not know; the reason is in the service log. A bundle with a broken or newer manifest answers with its own code, such as bundle_manifest_invalid or bundle_version_unsupported. Section types this release does not know are skipped. A file outside the model directory is refused with 403 path_outside_model_dir.