The tracker
Everything that happens (messages, replies, tool calls, results, and every change to what the agent knows) is written to an append-only log called the tracker. This is the source of truth. It survives across turns and sessions; if the same user returns, the history is still there. The tracker is complete but large, which is exactly why it is not what the LLM sees each turn.Scoped context
Mantle does not dump the full log into the LLM. Each turn, at step 2 of the runtime loop, it builds a focused view: the active skill’s instructions, only the tools that are relevant right now, and the memory values that actually matter. Keeping the context tight is what keeps the agent fast and on-topic, and it’s how guardrails likeif:
markers work: a stripped branch simply isn’t in the prompt.
Memory is scoped per skill. A skill can mark values as public, and that is
how skills share results: after a skill completes, other skills can still read
its leftover public. Those values reset when that same skill starts again.
Facts that must last the whole conversation belong in project memory. See
Memory and Lifetime.
Skill memory until the next run
A value set during a skill stays set when that skill ends, so a later skill can still read leftover public without re-asking. It does not last the whole conversation: when that same skill starts again, public and private reset to each field’sinitial_value (null when unset). Put session-long
facts in project memory.
Answering from references
When a user asks something no skill covers, Mantle searches your references and answers from what it found. If the knowledge base has no answer, the model declines through the built-incannot_help tool rather than guessing, and the bundled decline skill delivers
the message. Redeclare its responses in your own responses.yml to change the
wording.
Reference
Memory types and visibility are documented in thememory.yml reference.