# memloom ## Docs - [A memory's full version chain](https://docs.memloom.dev/api-reference/a-memorys-full-version-chain.md): Every version of the belief, newest first, including stale ones. History is the one place a stale version is still visible; recall never returns them. Any version's id in the chain works as `id`. - [A session's attached files](https://docs.memloom.dev/api-reference/a-sessions-attached-files.md) - [A session's messages](https://docs.memloom.dev/api-reference/a-sessions-messages.md): Oldest first. Assistant messages carry the sources their answer cited. - [Add a user-tier vocabulary entry](https://docs.memloom.dev/api-reference/add-a-user-tier-vocabulary-entry.md): Add an entity type or predicate to the extraction vocabulary. The name is normalized to snake_case; the description becomes part of the extraction prompt, so write it like a rule ("a named drug or supplement"). Takes effect on the next index run. - [Approve a proposal](https://docs.memloom.dev/api-reference/approve-a-proposal.md): Promote a proposed name to the user tier and link its saved occurrences into the graph immediately (no re-index needed). The extractor also starts using the name on the next index run. - [Attach a file to a chat](https://docs.memloom.dev/api-reference/attach-a-file-to-a-chat.md): Upload file bytes into one chat's scope. The file is chunked and embedded like a document, but only that session's recall searches it: it stays out of the documents list, the graph, and entity extraction, and it is deleted with the chat. Omit `sessionId` to create the session on the spot (titled 'Ne… - [Auto-index state](https://docs.memloom.dev/api-reference/auto-index-state.md): Whether new memories and files are entity-indexed automatically in the background (debounced runs a few seconds after a save/ingest). `available` is false in offline mode: extraction needs an LLM, so there is nothing to toggle. - [Auto-resolve pending conflicts with an LLM judge (NDJSON stream)](https://docs.memloom.dev/api-reference/auto-resolve-pending-conflicts-with-an-llm-judge-ndjson-stream.md): What `memloom conflicts auto` calls. Re-judges every pending conflict with context the dedup classifier never had: when each side was recorded and, for memories distilled from a Claude Code import, the transcript excerpt behind it. Only a decisive verdict resolves anything (`keep_new`, `keep_existin… - [Clear the whole indexing history](https://docs.memloom.dev/api-reference/clear-the-whole-indexing-history.md) - [Continuous capture status](https://docs.memloom.dev/api-reference/continuous-capture-status.md): What `memloom status` renders for `connect claude-code`: the configured capture scope, when the hook last fired and whether it failed, today's unattended distillation spend against the daily cap, and ledger totals across every import so far (sessions and memories, regardless of trigger). - [Delete a disabled user-tier entry](https://docs.memloom.dev/api-reference/delete-a-disabled-user-tier-entry.md): Permanently remove a vocabulary entry. Only **disabled user-tier** entries qualify: built-in entries are re-seeded by name on the next run (a delete would bring them back active), so disabling is the only way to turn them off, and proposals are approved or dismissed instead. Entities already extract… - [Delete a memory's whole belief](https://docs.memloom.dev/api-reference/delete-a-memorys-whole-belief.md): Deletes every version in the lineage, its edges, and any pending conflict that names it. Unlike a resolution's `stale`, this is permanent; there is no revert. - [Delete a session](https://docs.memloom.dev/api-reference/delete-a-session.md): Removes the session, its messages, and its attached files. - [Delete all chat sessions](https://docs.memloom.dev/api-reference/delete-all-chat-sessions.md): Removes every session, its messages, and its attachments. - [Delete an entity](https://docs.memloom.dev/api-reference/delete-an-entity.md): Remove the entity and every edge touching it (mentions pointing at it, typed relationships from or to it). The memories and documents that mentioned it are untouched. - [Delete one run session (its events cascade)](https://docs.memloom.dev/api-reference/delete-one-run-session-its-events-cascade.md) - [Dismiss a proposal](https://docs.memloom.dev/api-reference/dismiss-a-proposal.md): Reject a proposed name. The prompt blocklists it, so the extractor never proposes it again. - [Distill agent sessions into memories](https://docs.memloom.dev/api-reference/distill-agent-sessions-into-memories.md): What `memloom import sessions` calls. Claude Code is the only supported agent today and the default. Discovers local Claude Code transcripts (fixed to `~/.claude/projects`; the client cannot pass an arbitrary path), then for each session checks the ledger, redacts secret-shaped strings, chunks, dist… - [Edit a memory into a new version](https://docs.memloom.dev/api-reference/edit-a-memory-into-a-new-version.md): An explicit edit: unlike a `save` that happens to resemble an existing memory, this always creates a new version, no dedup classifier involved. The target must be an active belief; the edited version goes stale and stays visible in `history`. - [Enable or disable a vocabulary entry](https://docs.memloom.dev/api-reference/enable-or-disable-a-vocabulary-entry.md): Disabled entries leave the extraction prompt; entities already extracted under them stay in the graph. Works on system and user tiers (proposals have their own approve/dismiss lifecycle). - [Get a document's chunks and their entity edges](https://docs.memloom.dev/api-reference/get-a-documents-chunks-and-their-entity-edges.md): One document at chunk granularity: chunks in order, plus their chunk -> entity mention edges. The graph endpoint rolls these up to one weighted document -> entity edge; this is the drill-down the viewer fetches when a document node is expanded. - [Get the memory graph](https://docs.memloom.dev/api-reference/get-the-memory-graph.md): Returns active memories, extracted entities, and context documents as nodes, with the edges between them. Chunk-level mention edges are rolled up to one weighted document -> entity edge, so documents stay single nodes. - [Health check](https://docs.memloom.dev/api-reference/health-check.md): Returns ok when the daemon is up. Used by clients to detect a running daemon. - [Import memories agents already saved on disk](https://docs.memloom.dev/api-reference/import-memories-agents-already-saved-on-disk.md): What `memloom import agent-memory` calls. Discovers the agents' own well-known memory folders (Claude Code per-project memory directories, GitHub Copilot's memory-tool notes; the client never supplies a filesystem path), parses each file into memories, redacts secret-shaped strings, and saves throug… - [Index memories and context chunks (extract entities)](https://docs.memloom.dev/api-reference/index-memories-and-context-chunks-extract-entities.md): Extract entities from memories AND context chunks that have not been indexed yet and link them into the graph with mention edges. Runs the LLM extractor (one call per row, so large documents take proportionally longer); a no-op in offline mode. - [Index sessions (persistent run history)](https://docs.memloom.dev/api-reference/index-sessions-persistent-run-history.md): Every index/reindex pass is recorded as a run: trigger (index|rebuild), status (running|success|warning|error|interrupted), batch size, per-kind indexed counts, failures, and entity/relation totals. Newest first. The viewer's Console polls this while a run is live; history survives restarts and incl… - [Index with real-time progress (NDJSON stream)](https://docs.memloom.dev/api-reference/index-with-real-time-progress-ndjson-stream.md): Same work as /memory/index, but the response streams newline-delimited JSON as it runs: one `{"type":"item"}` event per processed memory/chunk (with its label, 1-based position, total, and extracted entity names), then a final `{"type":"done"}` event with the run totals. Failures mid-run arrive in-b… - [Ingest a file as context](https://docs.memloom.dev/api-reference/ingest-a-file-as-context.md): Extract, chunk, embed, and store a .md/.txt/.pdf file from the daemon's machine. A document mirrors its file: re-adding an unchanged file is a no-op (`unchanged`), a changed file replaces its chunks (`updated`). Markdown chunks carry their heading breadcrumb; PDF chunks keep their page number. Chunk… - [List all active memories](https://docs.memloom.dev/api-reference/list-all-active-memories.md): Every active memory, newest first. Use this to browse the store; use /memory/query for relevance-ranked recall. Stale (superseded) memories are excluded. - [List chat sessions](https://docs.memloom.dev/api-reference/list-chat-sessions.md): Starred first, then most recently active. - [List context documents](https://docs.memloom.dev/api-reference/list-context-documents.md) - [List entities with usage counts](https://docs.memloom.dev/api-reference/list-entities-with-usage-counts.md): Every extracted entity with its usage: active mention edges, distinct memories, and distinct documents that mention it. Most-mentioned first. Use this list to manage entities; /memory/graph shows the same data as a graph. - [List Notion pages the integration can see](https://docs.memloom.dev/api-reference/list-notion-pages-the-integration-can-see.md): What the connect picker renders. Lists every page, database, and data source shared with the configured Notion integration, with parent references so clients can show the workspace as a tree (database row-pages collapse under their database). Requires NOTION_TOKEN in the daemon's environment; the to… - [List pending conflicts](https://docs.memloom.dev/api-reference/list-pending-conflicts.md): Contradictions the belief pipeline flagged that you have not resolved yet. Both sides stay active until you decide. - [List resolved conflicts](https://docs.memloom.dev/api-reference/list-resolved-conflicts.md): The revertable history behind the pending queue, newest resolution first. Each entry carries the action that resolved it and can be undone via the revert endpoint. - [Merge an entity into another](https://docs.memloom.dev/api-reference/merge-an-entity-into-another.md): Fold this entity into a surviving one: every mention and typed relationship is repointed to the target (would-be duplicates and self-loops are dropped), then this entity is deleted. The survivor keeps its own name and type. Use it for near-duplicates that automatic resolution could not fold. - [Notify the daemon a Claude Code session ended](https://docs.memloom.dev/api-reference/notify-the-daemon-a-claude-code-session-ended.md): What the Claude Code session-end hook installed by `memloom connect claude-code` calls. Distills exactly the one session at `path` in the background: the hook gets a 202 immediately and never waits on distillation, so a slow LLM call can't hang the editor. `path` must resolve inside `~/.claude/proje… - [Notion connector status](https://docs.memloom.dev/api-reference/notion-connector-status.md): Whether a token is configured, the current selection, the last sync time and error, whether a sync is running, and how many notion:// documents exist. - [One assistant turn (SSE)](https://docs.memloom.dev/api-reference/one-assistant-turn-sse.md): Run one chat turn through the assistant's agentic loop: the model decides whether to call hybrid recall (up to three times), then streams a grounded answer with `[n]` citation markers validated against the returned sources. The response is a server-sent-event stream of JSON events: `tool_call` and `… - [Open the OS-native file/folder picker](https://docs.memloom.dev/api-reference/open-the-os-native-filefolder-picker.md): What the viewer's Browse buttons call first. Opens the platform's native file or folder dialog on the daemon's machine and returns the chosen absolute paths. Returns 501 on a system with no native picker (headless Linux without zenity); the viewer falls back to /context/browse in that case. - [Open the source file on the daemon's machine](https://docs.memloom.dev/api-reference/open-the-source-file-on-the-daemons-machine.md): Opens the document's file with the OS default application (what the viewer's "Open file" button calls). Only ingested documents can be opened: the path is read from the document row looked up by id, so a client can never supply an arbitrary path to open. - [Rebuild the graph from scratch](https://docs.memloom.dev/api-reference/rebuild-the-graph-from-scratch.md): Wipes every extracted artifact (all entities, their mention edges, and all typed entity-to-entity edges), then re-runs indexing over everything. Belief edges (replaces, distinct) are never touched. Use it to recover when an older extraction pipeline polluted the graph. - [Rebuild with real-time progress (NDJSON stream)](https://docs.memloom.dev/api-reference/rebuild-with-real-time-progress-ndjson-stream.md): Same work as /memory/reindex, streamed as newline-delimited JSON in the same shape as /memory/index/stream (item events, then done; errors in-band). - [Recall memories](https://docs.memloom.dev/api-reference/recall-memories.md): Hybrid retrieval over active memories: vector similarity + exact keyword + entity match, fused with reciprocal-rank fusion. Results are ordered by `rrfScore`, which is rank-based and small by design (about 0.03 max). `similarity` is the plain cosine similarity score. - [Remove a context document](https://docs.memloom.dev/api-reference/remove-a-context-document.md): Deletes the document and all of its chunks (cascade). The source file on disk is untouched. - [Rename or retype an entity](https://docs.memloom.dev/api-reference/rename-or-retype-an-entity.md): A rename re-embeds the entity, since the embedding is computed from the name. It is refused with 409 when another entity already owns that name key; use merge instead. A retype must name an active vocabulary type. - [Rename or star a session](https://docs.memloom.dev/api-reference/rename-or-star-a-session.md) - [Resolve a conflict](https://docs.memloom.dev/api-reference/resolve-a-conflict.md): Apply one of the four human-in-the-loop resolutions. Every resolution is non-destructive and reversible via the revert endpoint: losing memories are marked `stale` and kept in the store. - [Revert a resolution](https://docs.memloom.dev/api-reference/revert-a-resolution.md): Undo a previous resolution. Staled memories come back to active and the conflict returns to the pending list. - [Save a memory](https://docs.memloom.dev/api-reference/save-a-memory.md): Save a memory through the belief pipeline: exact-duplicate detection, semantic dedup, and contradiction detection. A contradiction keeps **both** memories active and returns `outcome: conflict` with a `conflictId` for you to resolve. Nothing is overwritten. - [Search chat sessions](https://docs.memloom.dev/api-reference/search-chat-sessions.md): Hybrid chat search: keyword over titles and message text, plus embedding similarity over message content. Each hit carries the best-matching snippet. - [Server-side directory listing](https://docs.memloom.dev/api-reference/server-side-directory-listing.md): Lists one directory on the daemon's machine: subdirectories, plus files whose extension has a registered extractor. The viewer's fallback file/folder picker for systems with no native dialog; the browser never sees absolute paths from its own file inputs, only what this endpoint returns. - [Set the continuous-capture allowlist](https://docs.memloom.dev/api-reference/set-the-continuous-capture-allowlist.md): What `memloom connect claude-code --project X` and `--all` set. `null` (the default) captures nothing: naming a scope is the consent step, since the hook fires for every Claude Code session on the machine, including client work and repos whose code should never reach an LLM provider. `{"projects":[.… - [Set which Notion items sync](https://docs.memloom.dev/api-reference/set-which-notion-items-sync.md): Replaces the sync selection. Pass the items to sync, or null to disconnect (synced documents stay). What `memloom notion connect` and the viewer's connectors tab call. - [Stop the daemon](https://docs.memloom.dev/api-reference/stop-the-daemon.md): Gracefully stop the daemon (what `memloom stop` calls): acknowledges, then closes the Postgres wire server, the HTTP server, the store, and releases the data-dir lock. - [Sync the selected Notion items now](https://docs.memloom.dev/api-reference/sync-the-selected-notion-items-now.md): What `memloom notion sync` calls (the daemon also runs it on a poll timer). For each selected item: asks Notion whether it changed, refetches only the sections whose last_edited_time moved (cached block tree), renders to markdown, and re-ingests chunk-stably so unchanged chunks keep their rows and e… - [The full text behind a truncated recall result](https://docs.memloom.dev/api-reference/the-full-text-behind-a-truncated-recall-result.md): A recall hit's content can be truncated for display; this returns the complete text of one memory or context chunk by id. What the MCP `read_passage` tool and the assistant's citation links call to fetch the rest. - [The graph schema registry with live counts](https://docs.memloom.dev/api-reference/the-graph-schema-registry-with-live-counts.md): The vocabularies the indexer extracts against: entity types and typed-relationship predicates as registry rows (tier system/user, status active/disabled), edge relations from the engine, and the LLM proposal review queue (names the extractor wanted, with occurrence counts). - [The model catalog for the picker](https://docs.memloom.dev/api-reference/the-model-catalog-for-the-picker.md): Tool-capable models from OpenRouter's public catalog (the assistant requires native tool calling), shaped for display: USD per million input/output tokens, context window, provider (the model id's prefix). Cached daemon-side for an hour; a stale copy keeps serving if OpenRouter is unreachable. `defa… - [The per-item log lines of one run](https://docs.memloom.dev/api-reference/the-per-item-log-lines-of-one-run.md) - [Turn auto-index on or off](https://docs.memloom.dev/api-reference/turn-auto-index-on-or-off.md): The Console's toggle. Persisted in the store, so the choice survives daemon restarts; the MEMLOOM_AUTO_INDEX config value is only the default before the toggle is first used. Refused with 409 in offline mode. - [Upload file bytes as a document](https://docs.memloom.dev/api-reference/upload-file-bytes-as-a-document.md): Ingest a file whose bytes come from the client. The viewer's Upload button uses this, because a browser file dialog yields file bytes without a usable path. The document is listed, graphed, and indexed like any other. Its provenance is `upload://`, so re-uploading the same name replaces it… - [Conflicts](https://docs.memloom.dev/cli/conflicts.md): conflicts: listing pending contradictions, or auto-resolving them with an LLM judge - [Context](https://docs.memloom.dev/cli/context.md): context add, list, remove: ingesting files as searchable context - [Daemon](https://docs.memloom.dev/cli/daemon.md): serve, stop, ui, init: running and managing the store's single owner - [Graph & embeddings](https://docs.memloom.dev/cli/graph.md): index, reembed, auto-index, schema: building the graph and keeping vectors consistent - [Import](https://docs.memloom.dev/cli/import.md): Distill your agent's sessions into memories - [Memories](https://docs.memloom.dev/cli/memories.md): save, recall, update, history: the memory lifecycle from the terminal - [Notion](https://docs.memloom.dev/cli/notion.md): Sync Notion pages and databases as recallable context - [Overview](https://docs.memloom.dev/cli/overview.md): Every memloom command, and how the CLI relates to the daemon - [Architecture](https://docs.memloom.dev/concepts/architecture.md): One daemon owns the store; everything else is a client - [The assistant](https://docs.memloom.dev/concepts/assistant.md): Chat with your store: grounded answers, cited sources, any OpenRouter model - [Conflicts (human-in-the-loop)](https://docs.memloom.dev/concepts/conflicts.md): Contradictions are kept, surfaced, and resolved by you, reversibly - [Session distillation](https://docs.memloom.dev/concepts/distillation.md): How a Claude Code session becomes memories - [The graph](https://docs.memloom.dev/concepts/graph.md): One graph over memories and context, at two granularities - [Memory types & versioning](https://docs.memloom.dev/concepts/memory-types.md): The taxonomy, the belief lifecycle, and version chains - [Retrieval](https://docs.memloom.dev/concepts/retrieval.md): Hybrid recall: vector + keyword + entity, fused with reciprocal-rank fusion - [Features](https://docs.memloom.dev/features.md): What memloom does, in one pass - [Agent setup](https://docs.memloom.dev/guides/agent-setup.md): A runbook an AI agent can follow to install and configure memloom end to end - [Configuration](https://docs.memloom.dev/guides/configuration.md): config.env, the two modes, and the embedding fingerprint - [Extractors & chunking](https://docs.memloom.dev/guides/extractors.md): How files become searchable chunks, and how to add a format - [Self-hosting & migration](https://docs.memloom.dev/guides/self-hosting.md): From a folder on your laptop to a Postgres server in Docker - [memloom](https://docs.memloom.dev/index.md): A memory engine you own, running on your machine - [Claude Code](https://docs.memloom.dev/mcp/clients/claude-code.md): Connect Claude Code to memloom - [Claude Desktop](https://docs.memloom.dev/mcp/clients/claude-desktop.md): Connect Claude Desktop to memloom - [Cline](https://docs.memloom.dev/mcp/clients/cline.md): Connect Cline (VS Code extension) to memloom - [Codex](https://docs.memloom.dev/mcp/clients/codex.md): Connect the Codex CLI to memloom - [Cursor](https://docs.memloom.dev/mcp/clients/cursor.md): Connect Cursor to memloom - [opencode](https://docs.memloom.dev/mcp/clients/opencode.md): Connect opencode to memloom - [VS Code](https://docs.memloom.dev/mcp/clients/vs-code.md): Connect VS Code (Copilot agent mode) to memloom - [Windsurf](https://docs.memloom.dev/mcp/clients/windsurf.md): Connect Windsurf to memloom - [Zed](https://docs.memloom.dev/mcp/clients/zed.md): Connect Zed to memloom - [Setup](https://docs.memloom.dev/mcp/setup.md): Connect any MCP client to your memloom store - [Tools](https://docs.memloom.dev/mcp/tools.md): The eight tools memloom exposes to MCP clients, and how they chain together - [Use cases](https://docs.memloom.dev/use-cases.md): What you can do with a local memory engine ## OpenAPI Specs - [openapi](https://docs.memloom.dev/openapi.yaml)