codemem
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CODEMEM_DB | No | SQLite path. Enable a persistent volume at /data to retain memories across instance replacement. Custom paths must be writable by uid 10001. | /data/codemem/mem.sqlite |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| memory_searchA | Keyword-search memories when you know exact terms or identifiers. Returns full body text for each match; use memory_search_index when you only need compact candidates. |
| memory_search_indexB | Keyword-search memories when you know exact terms or identifiers. Returns compact entries with IDs and titles, without bodies; expand selected IDs with memory_get or memory_get_observations. |
| memory_explainB | Explain search results with detailed scoring breakdown. |
| memory_recentC | Return recent memories, newest first. |
| memory_packA | Build a formatted context block for a concept or task using keyword and semantic search when embeddings are available, with automatic keyword-only fallback. Use for conceptually relevant context; use memory_search or memory_search_index for exact identifiers. |
| memory_timelineB | Get a chronological window of memories around an anchor (by ID or query). |
| memory_expandC | Fetch memories by ID with surrounding timeline context. |
| memory_distill_candidatesA | Mine recurring memories into reviewable context candidates. Reads project/user context files without modifying them and can call the optional observer when judge=true. |
| memory_getA | Fetch one memory by exact ID. Does not inherit the default project; optional filters constrain the lookup, and a mismatch returns not_found. |
| memory_get_observationsA | Fetch multiple memories by exact IDs. Does not inherit the default project. Missing or filtered-out IDs are omitted from results, not reported as not_found. |
| memory_rememberA | Create a new memory. Use for milestones, decisions, and notable facts. |
| memory_forgetA | Soft-delete a memory by exact ID so it no longer appears in normal retrieval; this is not secure erasure. Does not inherit the default project; optional filters must match or the tool returns not_found. |
| memory_schemaA | Return the memory schema — kinds, fields, and available filters. |
| memory_learnA | Learn how to use codemem memory tools. Call this first if unfamiliar. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools are clearly distinct: memory_search vs memory_search_index differ by return format, memory_get vs memory_get_observations differ by cardinality, and memory_pack is explicitly for context building. A couple of retrieval tools could be confused, particularly memory_timeline and memory_expand, which both involve surrounding context.
All tools share the memory_ prefix and use lowercase snake_case, making the set feel predictable. Minor inconsistency exists in mixing verb forms (memory_search, memory_expand, memory_get) with noun or adjective forms (memory_schema, memory_recent, memory_timeline), but the overall pattern is still coherent.
14 tools is on the higher end of the well-scoped range, and most tools serve a distinct retrieval or lifecycle purpose. The count is slightly heavy due to many specialized read/search variants, but it remains reasonable for a memory-management server.
The core memory lifecycle is mostly covered: create via memory_remember, read via memory_get/get_observations/search/recent, and soft-delete via memory_forget. However, there is no memory_update or memory_edit tool, which is a notable gap for managing evolving memories.