Saltar al contenido principal

Settings → Harness

The harness is everything Mnemosyne OS puts around the model at each turn: the persona, the rules, the manual, the memories found, your question. This page shows what the last turn really sent, and lets you set the parts you are allowed to set. The rail entry is Harness. The page title is Harness and its subtitle reads What surrounds the model: what it was sent, and what you let through.

The page has three tabs: Last turn, Controls and Paths. The app remembers the last tab you opened.

Export the report​

The button Export the report sits at the top right of the page. It writes one HTML page and opens it with your system's default program.

  • While it works, the line under the header reads Writing the report….
  • On success the line reads Report opened, saved at followed by the file path.
  • When the file was written but could not be opened, the line reads Report saved (not opened) at and the path. Open the file yourself.
  • On failure the line reads The report could not be written ({error}). After 15 seconds without an answer, the error is TIMEOUT.

Each export writes a new file in ~/.mnemosyne/harness-reports/. The file name carries the time, for example harness-2026-11-11T09-30-00-000Z.html. Old reports stay in the folder.

The report has five parts: what goes to the model, the settings, your paths, the files refused, and what is always sent. It holds labels and sizes only. It never quotes the text of a prompt. Its headings are written by the main process in the app's language. They are not in the en.json locale file.

An agent connected through the SDK reads the same report. See For agents below.

Last turn​

This tab shows one card per surface that sent a turn to the model since the app started. The cards come in this order: Chat, Orb, then the other surfaces by name. A surface the page has no name for shows its raw name, for example routine. The surface other shows as Other calls.

The app keeps one receipt per surface, in memory only. Each new turn replaces the previous receipt of that surface. Nothing is written to disk, and a restart empties the tab.

The states of the tab​

  • While the page reads the receipts, the card Last turn sent says Reading the last turn….
  • When the read fails, it says The last turn could not be read ({error}). After 15 seconds without an answer, the error is TIMEOUT.
  • When no turn was sent yet, it says No turn sent in this session yet. This card has no refresh button. Leave the page and come back to read again.

One surface card​

The top line gives the totals of the turn, {tokens} tokens · {chars} characters, then the time the turn was sent. The refresh button at the top right of the card has the tooltip Read again.

Below, one row per block of the prompt, in the order the model read them. Each row shows:

  • The block's name. The table below lists them.
  • Its role: system for the system prompt, message for the user part.
  • Its size in estimated tokens, {tokens} tok.
  • Its size in characters, {chars} char.
  • A tinted bar behind the row, as wide as the block's share of the turn.

The token count is an estimate. The app uses the same estimator as its context-window budget, which counts on the high side.

The receipt is cut from the final text. The manual and the memories are measured after the window budget trimmed them. The sizes are the sizes the model received.

A lock icon marks a block that is always sent. Its tooltip reads A rule that bounds what the model may claim. Always sent. These blocks have no control on the Controls tab.

Row nameLockedSet on the Controls tab
Personanono
Soulnono
Lensnono
Memory onlyyesno
Open mindyesno
No live sourceyesno
Commandsnoyes
Companion voicenono
Memory provenanceyesno
Answer languageyesno
Manualnoyes
Memories foundnono
Memory search noteyesno
To-do and Agendanono
Conversation and questionnono

A block whose marker the app does not know shows its raw marker, with no lock.

Controls​

The Controls tab holds three cards. Every choice is saved on this machine, in the app's local storage. Another open window picks up the change at once. When a choice cannot be saved, the tab shows The choice could not be saved.

Manual​

This card decides when the app's manual is added to the prompt. It has two groups, Chat and Orb, with the same three choices.

ChoiceHint for the chatHint for the orb
Every question (default)Every question is checked against the manual.Every spoken question is checked against the manual.
Only when askedOnly a question about the app: "how do I", "settings", "manual".Only a sentence about the app: "how do I", "settings", "manual".
NeverThe chat never reads the manual.The orb never reads the manual.

Only when asked recognises questions about the app in French, English and Spanish. In any other interface language, every question counts as a question about the app, so the manual is always added.

The orb's group is the same setting the orb reads for its own manual choice. Changing it here changes it everywhere.

Commands​

This card decides which [COMMANDS] block the model receives. The block tells the model which windows and actions of the app it may ask for. It has two groups, Chat and Orb, with the same four choices.

ChoiceHint
Automatic (default)Full, or short for a small local model.
FullEvery window and the open verbs.
ShortTwo lines: give the command, never claim it was done.
NoneThe model is not told which commands the app runs.

With Automatic, the app sends the short block when the model in use reads the compact prompt, and the full block otherwise.

Always sent​

This card has no control. It lists what the harness always sends: Memory provenance, no live source, answer language, memory search note, and the crisis harness.

The list on this card names five items. On the Last turn tab, Memory only and Open mind also carry the lock.

Paths​

A guided path is a tree of questions the orb walks with you, without calling the model. The app ships paths built from its manual. You can add your own as files.

Guided paths​

This card lists every path in the interface language, shipped or yours. Each row has a checkbox, the path's title, and a tag: shipped or yours. Untick a path to switch it off. When the language has no path, the card says No path in this language.

The app stores the switched-off paths by id, on this machine. All paths are on by default.

Your paths​

This card lists the path files read from your folder, with what the app found in each one. When there is none, it says No path of yours yet. While the folder is read, it says Reading the folder….

Each path shows:

  • Its title and its state:
    • Live: the path runs no app action. It works at once.
    • Waiting for you: the path runs at least one app action, and you have not approved this exact file.
    • Allowed: you approved this exact file.
  • Its file name.
  • The apps it opens, after Opens: {apps}.
  • One line per app action, App › action, then its effect. The effect is reads, changes your data or spends credits.
  • When it starts. The lines read Starts after {count} manual page(s) and Starts when {apps} opens.
  • Its warnings:
    • One of its actions spends credits.
    • One of its actions changes your data.
    • It starts after more manual pages than any shipped path: it may come up often.
    • It starts when an app of the board opens.

The app names the apps from the cartridges installed on this machine, never from the file.

Approving a path​

A path in Waiting for you shows the button Allow….

  1. Click Allow…

    The app re-reads the file from the disk and computes its fingerprint (SHA-256).

  2. Read the system box

    The main process opens a native box in the window you used. The box lists the file, up to six of the actions with their effect (credit spending first), and the trigger warnings. When an action spends credits, the box shows a warning icon. Its text comes from the main process, in the app's language. It is not in the en.json locale file. In English the buttons read "Cancel" and "Allow this path".

  3. Answer

    Only the button "Allow this path" approves. "Cancel", closing the box, or no answer within 10 minutes counts as a refusal. The card then says Not allowed: it stays pending.

The approval holds for these exact bytes. When you edit the file, the path goes back to Waiting for you and the app asks again. Approvals are stored, signed, in ~/.mnemosyne/harness-approvals.json.

An approved path shows Withdraw the approval. It takes effect without a box. When an approval cannot be changed, the card says The approval could not be changed.

No agent can approve or withdraw a path. An agent may write a path file; the approval stays your click in the native box.

Your paths folder​

This card shows the folder the app reads your paths from, by default ~/.mnemosyne/harness. The refresh button has the tooltip Read the folder again. Below the folder, the hint reads One file per path: <language>/<name>.doors.json. A path that runs app actions waits for your approval; changing the file asks again.

The app never writes in this folder.

When every file was taken, the card says No file refused. Otherwise it says {count} file(s) refused: and lists each file with its reason. The reasons are written by the main process, in English, and are not in the en.json locale file.

The app refuses a file in these cases:

  • The language folder is not fr, en or es. The orb walks paths in these three languages only.
  • The language folder holds more than 50 path files.
  • The file is larger than 256 KB.
  • The file does not parse as a path.
  • The id uses something other than letters, digits, ., _ and -.
  • The id starts with crisis.
  • The id is the id of a shipped path, or of another of your paths.
  • The page name is the page of a shipped path in the same language.
  • The path calls an action that the cartridge does not declare.

When the folder cannot be read, the cards Your paths and Your paths folder say The folder could not be read ({error}).

For agents​

An agent connected to Mnemosyne OS through the SDK has three harness methods:

  • sdk.harness.state reads the harness as this page shows it. It needs the harness:read grant.
  • sdk.harness.set changes the manual choice, the commands choice or a path's switch. It needs the separate harness:write grant. It answers the settings as the window applied them.
  • sdk.harness.report answers the same report in Markdown. With page: true, it also writes the HTML page that Export the report writes.

None of them carries the text of a prompt. None of them approves a path.