Work with memory
Meko's memory system gives agents persistent recall across sessions.
This guide covers memory operations you drive from a coding agent over MCP: add a memory, search for relevant memories, and inspect recently stored memories.
Meko can also move memories into shared, institutional knowledge through a separate review flow. That lifecycle, including how candidates are identified and promoted from Learnings in the Meko UI, is described in Learnings. For information on how extraction and hybrid retrieval work, see Memory.
Private memories are one part of a datapack's knowledge base. The other major component is source data, which includes unstructured files (text, PDFs, documents) and structured sources (databases, tabular data). See Knowledge bases.
Memory search combines semantic similarity, keyword matching, and entity-aware ranking.
Add memories
Via MCP (from your coding agent)
The simplest way to add memories is through natural language in your coding agent:
Please remember that I like to take vacations at tropical beach locations, on a budget
Remember this coding preference: I prefer Python type hints and use pytest for testing
The MCP server calls memory_add behind the scenes and stores the durable fact for later retrieval.
Automatically, from saved conversations
You don't have to explicitly ask your agent to "remember" something for it to become a memory. If your client has automatic capture enabled (the Automated install) or your agent otherwise saves the turn with conversation_add_message, Meko scans the saved turn server-side and creates memories from the durable facts it finds — no extra step required.
Conversation-driven extraction runs asynchronously after a turn is saved, and can occasionally miss an individual fact within a longer turn. For anything that must not be lost, explicitly say "remember this" (memory_add) rather than relying on automatic extraction alone.
Search memories
Via MCP (from your coding agent)
With Meko connected through MCP, your agent can retrieve memories on its own when answering questions that clearly depend on stored preferences or facts. You do not have to name a tool for that to happen. When you want to inspect or force a lookup, for example, to confirm what was saved, ask in natural language, as in the following examples.
Example 1:
What are my vacation preferences?
Example 2:
What coding standards have I set?
The MCP server performs a hybrid search across your memories and returns the most relevant results.
memory_search spans the current user's agent namespaces in the selected datapack. For example, a search from Claude Code can find a relevant memory written from Cursor or Claude Desktop. The agent_id sent with the search is used for trace attribution; it doesn't filter the results. Agents should make one search rather than repeating it for every known agent ID.
Retrieving all memories or running a broad memory search can add substantial content to your LLM context. Set memory_search.limit to return fewer search results when appropriate. See the MCP memory tools reference for details.
How search works
Memory search combines three signals:
- Semantic similarity finds memories with related meaning.
- Keyword matching gives exact terms more weight.
- Entity boosting raises memories that mention the named people, projects, or tools in the query.
Meko combines these signals into score and orders results by that field. raw_similarity_score is the vector store's cosine similarity and does not determine the order by itself. For example, the memory "John likes bananas" can match the exact query "Who likes bananas?" and the related query "Who likes fruit?"
View recent memories
To inspect your recent memories in a datapack, ask your coding agent in plain language. For example:
Show my recent Meko memories in the default datapack.
memory_get_all returns roughly 20 recent rows and a total count across your agent namespaces. It isn't a complete list, and MCP doesn't currently provide a complete memory export. Use memory_search to find older memories or memory_get_by_id when you know an exact ID.
Don't call memory_get_all repeatedly or add pagination arguments. The tool returns the same recent window and rejects unsupported pagination fields.
Promote memories to shared knowledge
Datapack owners and maintainers can use memory_promote to move private memories into the datapack's shared knowledge base and Collective Memory. Promotion removes the selected records from private memory and can't be reversed through the MCP tool.
Before promoting, your agent should:
- Retrieve and show the exact memories it will promote.
- Explain that datapack members will be able to find the promoted knowledge and that the private records will be removed.
- Ask for explicit confirmation.
- Call
memory_promoteonly after you confirm.
For the complete shared-knowledge lifecycle, see Learnings.
Next steps
- Learn about memory
- Learnings — review, identification, and promotion to shared knowledge
- Work with knowledge bases