Humaux Memory
Persistent long-term memory for AI agents over one remote MCP connection.
What it can do
- Memory Search: Semantic search across all memory layers. Automatically includes results from both your private memories and the shared public knowledge pool (built from high-quality internalized memor
- Memory Enumerate: Enumerate the COMPLETE set of memories matching a structured filter — every rejected decision for a project, every lesson, every fix. Unlike memory_search (semantic top-k, returns on
- Memory Grep: EXACT-SUBSTRING search (case-insensitive, deterministic) over the RAW title+content of every memory visible to your team (private + shared public pool). Zero LLM, zero embeddings: the pat
What data it sees
Do you need an account
No: the server works without sign-in
Persistent long-term memory for AI agents over one remote MCP connection. Store decisions, lessons and documents; recall them semantically in any later session; enumerate complete sets with truthful totals instead of top-k guesses.
- Memory — semantic store/recall with time-aware deduplication
- Complete enumeration — "every decision", "all rejected approaches", with real totals and coverage
- Per-project ledgers — current state, rejected paths, lessons, known issues
- Shared task canvas — task state outside the context window, so another agent can resume mid-task
- Knowledge graph — entities, relations and supersession links
- Documents — upload and search your own files
- Multi-agent coordination — task claims and resource locks with leases
One-click OAuth sign-in, no API key to paste. Bring your own LLM provider key for distillation. Free tier available.
How to connect
How to connect Humaux Memory to Claude
The server address to paste into Claude settings:
https://humaux-memory--luolimoa.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Humaux Memory to ChatGPT
The server address to paste into ChatGPT settings:
https://humaux-memory--luolimoa.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Humaux Memory to Cursor
The server address to paste into Cursor settings:
https://humaux-memory--luolimoa.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (17)
Raw names from tools/list. Only developers need these.
| memory_search | Semantic search across all memory layers. Automatically includes results from both your private memories and the shared public knowledge pool (built from high-quality internalized memories via K2 pipeline). Supports time range (since/until), layer filter (L1-L4), and source pool filter. |
| memory_enumerate | Enumerate the COMPLETE set of memories matching a structured filter — every rejected decision for a project, every lesson, every fix. Unlike memory_search (semantic top-k, returns only the most relevant few and never guarantees completeness), this walks Postgres directly and returns the FULL matching set, always reporting 'total' (true full-set size), 'coverage' and whether the answer was truncated. Omit 'limit' to get everything. Use this whenever the question is 'all / every / which ones have we…' rather than 'find the most relevant'. |
| memory_grep | EXACT-SUBSTRING search (case-insensitive, deterministic) over the RAW title+content of every memory visible to your team (private + shared public pool). Zero LLM, zero embeddings: the pattern is matched literally, never as a regex or wildcard. Use this INSTEAD OF re-phrasing memory_search when semantic search came back empty or you are hunting an exact string — an identifier, an error message, a config key, a file/person name. Returns each matching memory with the matching lines (±1 line of context), a per-memory match count, and the TRUE total of matching memories. Superseded memories are included but flagged 已被更正·非当前. Follow up with memory_get(memory_id=…) for a full untruncated body. |
| memory_get | Fetch ONE memory by id — the COMPLETE original text (up to 50000 chars, versus the short snippets memory_search/memory_grep return) plus provenance metadata (layer, source_type, private/public origin, topic, category, created_at, lifecycle). Use it when a hit from memory_search / memory_enumerate / memory_grep was truncated or you need the exact full wording of a known id; it takes no query and does NO searching — for discovery use memory_search (semantic) or memory_grep (literal). Only memories visible to your team can be fetched. A superseded memory IS still returned for provenance, clearly flagged 已被更正·非当前 with the id that replaced it — do not treat flagged content as current fact. |
| memory_store | Store a memory, or correct an existing one. Omit 'id' to create a new memory (async). Pass 'id' to update that memory in place (content is re-embedded so search stays consistent). Pass 'supersedes' with the id of an older memory this one REPLACES: the old entry is marked superseded (kept for history, but demoted to near-zero in search and flagged '已被更正·非当前'), so a stale status can't outrank the correction. |
| memory_task_canvas | Shared cross-session task canvas. action='get' reads the whole team canvas; action='update' writes your plan/progress (mermaid + completed/next lists). |
| memory_delete | Delete a memory entry by its identifier. |
| code_search | Search indexed code entities by function/class name. |
| code_index | Index code you are developing into a project knowledge graph so you can later query its structure (functions, classes, call/import graph) instead of re-reading whole files — saves tokens. Pass the code via 'files' (recommended): the files you have open or just wrote. Returns immediately; use code_query(action='index_status') to check progress. |
| code_memory_link | Link a code entity to a memory entry. |
| doc_search | Search uploaded documents. |
| memory_meta | Meta queries over the memory system. action='persona' (L3 user profile), 'status' (system stats), 'skills' (RETIRED 2026-07-19 — the L4 skill layer was removed; recall procedures via memory_search instead. Returns empty.), 'related' (graph neighbors of a memory; pass query=id or title fragment), 'contradictions' (conflicting memories in the graph), 'list' (browse stored memories; pass limit), 'feedback' (report a skill outcome; pass skill_id + outcome=success|failure|partial, optional memory_ids/context). |
| code_query | Query code relationships, impact analysis, or index status. Use action='relations' for calls/inherits, action='impact' for dependents, action='index_status' for indexing progress, action='history' for temporal evolution of an entity. |
| code_repo_map | Get a ranked, token-budgeted MAP of an indexed codebase — the most important functions/classes (by call-graph PageRank) as signatures + line numbers, NOT full source. Read this first to orient in a repo instead of reading whole files; then fetch specific symbols with code_query. Pass 'focus' (files/symbols you're working on) to bias the map toward them. |
| public_browse | Browse the shared public knowledge pool built from internalized high-quality memories. No args: returns topic list. Use topic='xxx' to filter by K2 topic. Use query='xxx' for semantic search within public knowledge only. |
| coord_task | Multi-agent task coordination for the team: submit work, claim it collision-free (lease-based), report progress, hand it off with context. Claim before working so parallel agents never duplicate effort; heartbeat before the lease expires or the task is requeued for others. |
| coord_lock | Advisory resource locks for parallel agents: claim a file/entity/resource BEFORE editing it so other agents avoid conflicts. Leases expire automatically if the holder dies; re-acquiring your own lock extends it. |