Eldric Docs 5.0.198 ← eldric.ai
Inference

EMM and EXMM

Reference · Administrators and developers · Applies to 5.0.194

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 and EXMM side by side Left, EMM: a fact is stored into a compressed memory and recalled from it; no model runs. Today the facts a recall returns come from the exact store beside it; the compressed memory adds one confidence value. Right, EXMM: one file with a header and sections. A model section holds weights, a memory section holds stored associations, an operator section holds a world model, a configuration section says what the file is. The inference module serves the sections it finds. EMM: memory EXMM: one file Store a fact text turned into numbers Two tiers, side by side exact store: every fact as written compressed memory: one fixed-size store, no model forward pass Recall the facts that match best Today hits from the exact store, plus one confidence value Header “EXMM”, version, list of sections Configuration what the file is, signed capabilities Model weights forecaster, language model, or GGUF inside Memory stored associations, plus shards added later Operator a world model (N-slot) Served by the inference module forecast, chat, recall, simulate
EMM stores and recalls without running a model; EXMM is one file whose sections the inference module serves.

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:

SectionWhat it holds
ConfigurationWhat 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

RouteUsesWho
GET /api/v1/exmm/modelsLists the files, with their sections and whether each parsed.not limited to administrators
POST /api/v1/exmm/forecastModel weights: a forecast from a series you send.not limited to administrators
POST /api/v1/exmm/chatA 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/recallMemory plus shards. 404 model_has_no_L_section when there is no memory.not limited to administrators
POST /api/v1/exmm/simulateOperator: steps a world model forward.not limited to administrators
POST /api/v1/exmm/shard, DELETE /api/v1/exmm/shardAdds a shard, or marks one removed.administrators
POST /api/v1/exmm/consolidateFolds 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.