← Back to Docs

Compact

Multi-level summary system for enhanced search

Compact generates AI summaries from your conversations to improve search quality. Inspired by claude-mem.

Optional feature — everything works without it. Your original data is never modified; Compact adds summaries on top.


Level System

Memex organizes conversation data into levels:

LevelNameGranularityDescription
L0Raw messagesEvery messageOriginal content, always preserved
L1ObservationsPer tool callWhat tools were used and results
L2Talk summariesPer prompt-responseSummary of each conversation turn
L3Session summariesPer sessionOverview of entire session

L0 is always available — this is what "Never Compacted" protects. L1/L2/L3 are generated by Compact.


How It Works

Compact uses two Ollama models:

  • Chat model (default: qwen3:0.6b) — generates L1/L2/L3 summaries from raw messages
  • Embedding model (default: bge-m3) — converts summaries to vectors for semantic search
L0 (raw messages)
 │
 ├──▶ L1 (observations) ──▶ L2 (talk summaries) ──▶ L3 (session summaries)
 │                                │                        │
 └────────────────────────────────┴────────────────────────┘
                                  │
                                  ▼
                          Embedding model
                                  │
                                  ▼
                          LanceDB (vectors)

Generation flow:

  1. L1 is generated from L0 tool calls
  2. L2 is generated from L0 messages + L1 observations
  3. L3 is generated from L2 summaries

L3 depends on L2. To get session summaries, both l2_talk_summary and l3_session_summary must be enabled.


MCP search_history uses the level parameter to choose what to search:

ValueSearchesBest for
sessions (default)L3 summariesQuick overview, finding relevant sessions
talksL2 summariesImplementation details, specific solutions
rawL0 messagesExact wording, precise recall

Fallback: If no results at current level, automatically tries the next: sessionstalksraw.

Why no L1 in MCP? L1 (tool-level observations) is available for context injection, but not exposed in MCP search — it's more useful for automatic context retrieval than manual search.


Context Injection

Compact also powers the Hooks feature for automatic context injection:

HookUsesWhat's Injected
SessionStartL3 summariesRecent session overviews
UserPromptSubmitL2 summaries + vectorsRelevant conversation context

Without Compact, SessionStart has limited context. UserPromptSubmit requires both Compact and embedding model for vector search.


Enabling Compact

Compact is disabled by default. See Configuration to enable.