Skip to content

Admin Console › Memory

Path: Avatar dropdown → Administration → Memory

Tab bar: Dashboard · Namespaces · Search & Write · Agent-/Task-Policy · Ranking · Maintenance · Import · Audit Log


Shows three status tiles: Security (24h) (number of blocked accesses / RLS violations), Vector Storage (number of active entries in tables), and Maintenance (timestamp of last VACUUM/ANALYZE action).

If vector data is present, additional database metrics are displayed:

  • Tables / Indexes with live and dead tuple counts
  • Data Volume (total size, largest table)
  • Health (dead tuple ratio in %)
  • Postgres tables table (columns: Name, Total Size, Live, Dead, Dead %, Seq Scans, Idx Scans, I/U/D, Maintenance)
  • Indexes table (columns: Name, Table, Scans, Tuples Read/Fetched, Size)

Buttons: [VACUUM/ANALYZE] · [REINDEX] · [Refresh]


Tree of all occupied namespaces, grouped by the segments of vector.[scope].[domain].[category].[topic]. Columns: Namespace, Documents, Share, Last Modified, Size.

A row shows only the segment its level adds; the full path is in the tooltip. Figures on a level are the sum of everything below it, “Share” the fraction of all documents. Intermediate levels without documents of their own are pure structure — a namespace that is empty itself but has filled sub-namespaces is marked empty. Chains without branching are collapsed into a single row, so no branch consists of nothing but only children.

For vector.user.<uuid> and vector.agent.<uuid> the plain-text name is shown next to the UUID.

Above it a filter field: typing narrows the tree to matching paths and also searches the resolved plain-text names. Below the tree is the summary “n namespaces · m documents” — reflecting the filtered set when a filter is active.

Clicking a namespace copies it as a filter into the “Search & Write” tab. Doing so clears the other form fields there (query, metadata filters, minimum relevance, limit, and any edit in progress along with its content), so the search takes effect immediately with no leftovers from previous editing.

Button: [Refresh]


Combined search form and write form for memory entries.

FieldTypeDescription
Namespace FilterTextNamespace for search and writing (e.g. vector.global.knowledge). Required when writing.
Query (Search)TextFree-text search in memory. Leave empty to list all entries in the namespace.
Project IDTextOptional metadata filter for project ID.
LanguageTextOptional metadata filter for language code (e.g. de).
TTL (Seconds)NumberExpiry time of a new entry in seconds.
TagsTextComma-separated tags for the new entry.
Memory ClassDropdownClass of the new entry. From namespace rule takes the target namespace’s default, which is the normal case. An explicit choice overrides it for this one entry.
Observed onDateWhen the fact holds, as opposed to when it was stored. Leave empty when unknown.
Metadata (Filter, JSON)TextareaJSON object as metadata filter when searching or as metadata when writing. Reserved fields (source, agent_id, status, …) are dropped — see Policies & Templates.
ContentTextareaText of the new memory entry (required when writing).
Include deleted and supersededCheckboxAdditionally shows entries that are deleted, expired or replaced by a newer one. An agent never sees these; here it is the only way to undo a wrong supersession.
Min. relevanceNumber (0–1)Default 0.3 — below an agent’s 0.4, because this view looks for what exists rather than for the best context. 0 always returns as many hits as the limit allows, weak ones included. What is checked is the relevance after bonus and recency, not the raw similarity.
LimitDropdownNumber of search results: 5, 10, 20, 50.

Without a namespace filter the search covers everything the session may read: its own vector.agent.* and vector.user.* namespaces plus vector.global.*. On an empty result the view lists where it looked — “not there” and “looked in the wrong place” are otherwise indistinguishable.

The relative cutoff is switched off here. It measures distance to the best hit and would hide that hit’s neighbours whenever one stands out — the opposite of what a management view needs.

Buttons: [Search] · [Save] (or [Update] when editing) · [Cancel] (when editing) · [Select All] · [Delete Selected] · [Clear Namespace] (with confirmation).

Search Results Table: Columns: Selection checkbox, Namespace, Relevance, Class, Status, Content, Actions. The relevance column shows the weighted value (which can exceed 1); the tooltip gives the raw similarity.

The status column shows Unconfirmed / Confirmed / Superseded. When an entry is deleted or superseded, that is what appears there — it answers why the entry is missing from an agent’s context.

Per-row actions: Edit (pencil) fills the form with all of the entry’s fields. Restore (circular arrow) appears only on deleted or superseded entries and brings them back into search.


Agent Policy:

FieldTypeDescription
Select AgentDropdownSelects the agent whose memory policy is being edited.
Auto-inject into Context (on every Run)ToggleWhen active, the read namespaces are semantically searched before each run and the top-K hits are automatically inserted into the context. When disabled, no automatic injection takes place at all — which leaves the “Read” field without effect.
Read (Namespaces, one per line)TextareaNamespaces for automatic injection, nothing else. They are not reachable by the LLM’s memory tool — that is governed solely by “Tool-Only Read Namespaces”. A namespace that should do both has to appear in both fields.
Top KNumberMaximum number of memory hits returned (1–20).
Minimum relevanceNumber (0–1)Discards hits below this relevance. Empty = default 0.4. Raise it when a noisy corpus produces too much by-catch. The config key is still named min_score.
Relative cutoffNumber (0–1)Additionally discards hits below this fraction of the best hit. Empty = default 0.7, 0 disables it. Only has an effect when one hit stands out clearly — see Ranking algorithm 1.3.
Allow Writing (Auto)CheckboxAllows the agent to automatically save to the write namespace.
Write (Namespace)TextNamespace the agent automatically writes to.

Subsection LLM Memory Tools:

FieldTypeDescription
Allow Writing (Tool)CheckboxAllows the agent to write via tool call.
Allow Deleting (Tool)CheckboxAllows the agent to delete via tool call.
Tool-Only Read Namespaces (one per line)TextareaNamespaces the LLM may read via tool call — independent of “Auto-inject into Context”. This is the only list the memory tool sees. When the LLM searches without naming namespaces, everything in this field is searched; global sources such as ingested manuals therefore belong here.
Allowed Write Namespaces (Tool, one per line)TextareaNamespaces the agent may write to via tool.

Button: [Save Agent Policy]

On save the server checks every namespace pattern. A structural mistake (empty segment, disallowed character, * not at the end) is rejected — the policy stays unchanged and the error names the offending pattern. An unknown class suffix is saved and merely reported as a hint below the form, with a suggestion for typos (preferenzes“did you mean preferences?”). That hint does not fade out on its own: a pattern matching nothing never reports itself again later.

Task Policy (same form for the selected task). The agent policy serves as the base for all tasks of the agent; every field set here overrides the agent policy for this task (fine-tuning). Empty fields or fields set to “inherit” fall back to the agent policy.

FieldTypeDescription
Select TaskDropdownSelects the task whose memory policy is being edited. Shows tasks of the currently selected agent.
Auto-inject into Context (on every Run)Tri-state DropdownActive, Inactive, or inherit from agent (= default).
Read (Namespaces, one per line)Textarea
Top KNumberLeave empty = inherit from agent.
Minimum relevanceNumber (0–1)Leave empty = inherit from agent.
Relative cutoffNumber (0–1)Leave empty = inherit from agent.
Allow Writing (Auto)Tri-state DropdownActive, Inactive, or inherit from agent (= default).
Write (Namespace)Text
Allow Writing (Tool)Tri-state Dropdown
Allow Deleting (Tool)Tri-state Dropdown
Tool-Only Read Namespaces (one per line)TextareaLeave empty = inherit from agent.
Allowed Write Namespaces (Tool, one per line)Textarea

Button: [Save Task Policy]


Namespace rules editor: Configures ranking bonuses and LLM instruction templates for specific namespaces.

FieldTypeDescription
Namespace PatternTextNamespace pattern the rule applies to. ${user_id} stands for exactly one segment, * for the remainder — e.g. vector.agent.${user_id}.howto or vector.global.*. Sub-namespaces are included.
Ranking BonusNumberPercentage surcharge on the relevance score: 0.1 means +10 %. The rules shipped by default range from 0.03 to 0.12.
Memory ClassDropdownDefault class for entries in this namespace: Episodic, Semantic, Procedural, Working context, Document (corpus) or No default. It is applied automatically on write; a single entry may differ, and changing it later does not reclassify existing rows.
Rule DescriptionTextHuman-readable identifier for the rule.
LLM Instruction TemplateTextareaText placed before this namespace’s results in the context. The only placeholder is {{content}} — that is where the results are inserted; if it is missing, they are appended. When several results match the same rule, the text appears once above all of them.

Existing rules are displayed as a list below the form. Action per rule: Delete (with confirmation dialog).


Duplicate Cleanup — Removes identical content within the same namespace. Keeps the most recent entry. Automatically creates a database backup beforehand. Button: [Start Cleanup] (with confirmation dialog, danger button)

Expired Entry Cleanup — Permanently deletes all memory entries whose TTL has expired. Button: [Delete Expired Entries] (with confirmation dialog, danger button)


Directory Import (Bulk Ingest) — Reads all .md and .txt files from a directory.

FieldTypeDescription
Directory Path (relative to host)TextPath of the source directory (e.g. ./sources/import).
Write (Namespace)TextTarget namespace for the import (e.g. vector.global.knowledge).
Chunk Size (Tokens)NumberSize of text blocks when splitting (128–4096).
Overlap (%)NumberPercentage overlap of adjacent chunks (0–50).
Chunking ModeDropdownSliding Window (flowing text) or Semantic – experimental (Markdown headings).
Filter table of contents linesCheckboxFilters TOC lines from Markdown files.
If already in memoryDropdownReplace (UPSERT) or Skip.

Button: [Start Import]

PDF → Markdown — Converts PDF files to .md files in the same directory.

FieldTypeDescription
Directory Path (relative to host)TextPath of the directory containing the PDF files.
OCR Endpoint (optional)TextURL of an OCR service for scanned PDFs (e.g. Apache Tika).
If .md already existsDropdownReplace or Skip.

Button: [Convert]


Table of all logged memory actions. Columns: Time, Action, Namespace, Detail (JSON).

Filter: Namespace filter field in the tab header. A trailing * searches by prefix — vector.global.* returns everything below it, without the * the namespace has to match exactly. The agent and task selection from the Agent-/Task-Policy tab applies as well.