letheClaw — Agent memory
You can use the letheClaw API to store and retrieve memories for the user or the current session. The API base URL is in the environment variable LETHECLAW_API_URL.
Environment patterns:
- Docker Compose with letheClaw API container:
http://api:8080
- Host machine from Docker Desktop (Windows/Mac):
http://host.docker.internal:51234
- Local testing (same machine):
http://localhost:51234
If LETHECLAW_API_URL is unset, try http://host.docker.internal:51234 first (Docker Desktop default), then ask the user.
⚠️ PROTOCOL (NON-NEGOTIABLE)
Retrieval Rule
When the user asks about history, decisions, prior work, "what did we do", or any past context:
ALWAYS query letheClaw API FIRST:
curl -s "{LETHECLAW_API_URL}/memory/search?q=<query>&limit=5"
Use the returned content field directly — search results include full text. No need for memory_get or flat file access.
NEVER use memory_search tool as the first step. That tool searches flat markdown files, which are backup/reference only.
Apply criticality filtering when appropriate:
- Security/config: add
&min_criticality=0.7
- General recall: add
&min_criticality=0.5
- Exploratory: no filter
Use tag pre-filtering when query domain is clear (e.g., tags=moltbook for Moltbook questions).
letheClaw is the authoritative memory system. Flat files may be stale or incomplete.
Storage Rule
When the user says "log this", "remember that", or you observe something worth recording:
- POST to letheClaw API (see "Store a memory" below)
- Assign appropriate criticality: 0.3 (transient) → 0.5 (useful) → 0.7 (important) → 0.9 (critical)
- Tag precisely: 2-5 specific tags (type + domain, e.g.
["episodic", "security", "moltbook"])
- Set source:
operator_input (user said it), direct_observation (you verified it), inferred (derived)
No exceptions. This is operator-mandated protocol.
Store a memory
- POST
{LETHECLAW_API_URL}/memory
- Body (JSON):
content (required), optional: source (e.g. operator_input, direct_observation, inferred), tags (array), operator, session_key, context
- Returns:
memory_id (UUID). Save it to update criticality or fetch provenance later.
Search memories (semantic)
- GET
{LETHECLAW_API_URL}/memory/search?q={query}&limit=5
- Optional:
min_criticality (0–1) to filter by importance.
- Optional:
tags (comma-separated) to pre-filter by tag before semantic search (e.g. tags=moltbook,security)
- Returns:
results array with id, content (full text), criticality, tags, source, created_at, access_count
Important: Search results include full content — you do NOT need to call memory_get afterward. Use the returned content directly.
Criticality filtering guidance:
- Security/config queries:
min_criticality=0.7 (critical knowledge only)
- General recall:
min_criticality=0.5 (useful and above)
- Exploratory search: no filter (all results)
Tag pre-filtering (performance optimization):
When query intent is clear, pre-filter by tags to reduce search space:
# "Latest Moltbook posts"
curl "{LETHECLAW_API_URL}/memory/search?q=posts&tags=moltbook,episodic&limit=5"
# "Security findings"
curl "{LETHECLAW_API_URL}/memory/search?q=findings&tags=security,semantic&min_criticality=0.7&limit=3"
Recent memories
- GET
{LETHECLAW_API_URL}/memory/recent
- Returns: Recently stored memories (from cache or DB).
Update criticality (manual)
- POST
{LETHECLAW_API_URL}/memory/{memory_id}/criticality
- Body (JSON):
criticality (0–1, required), optional reason
- Use when the user or you want to mark a memory as more or less important.
Mark operator correction
- POST
{LETHECLAW_API_URL}/memory/{memory_id}/correction
- No body. Call when the user corrects something about this memory; this boosts criticality and increments a correction counter so provenance shows how often it was corrected.
Get provenance
- GET
{LETHECLAW_API_URL}/memory/{memory_id}/provenance
- Returns: Full memory object plus
events (history of criticality changes: manual_boost, operator_correction, etc.) and correction_count.
Errors
- 400 — Invalid request or invalid memory ID format.
- 404 — Memory not found (wrong or deleted ID).
- 5xx — Server/upstream error; suggest checking if letheClaw is running and reachable.
When the user says they want to remember something, search memory, see why a memory is important, or correct a memory, use the appropriate endpoint above.
1---2name: letheclaw3description: Use letheClaw to store, search, and manage memories with criticality and provenance.4---5
6# letheClaw — Agent memory
7
8You can use the letheClaw API to store and retrieve memories for the user or the current session. The API base URL is in the environment variable **LETHECLAW_API_URL**.
9
10**Environment patterns:**
11- Docker Compose with letheClaw API container: `http://api:8080`
12- Host machine from Docker Desktop (Windows/Mac): `http://host.docker.internal:51234`
13- Local testing (same machine): `http://localhost:51234`
14
15If LETHECLAW_API_URL is unset, try `http://host.docker.internal:51234` first (Docker Desktop default), then ask the user.
16
17---
18
19## ⚠️ PROTOCOL (NON-NEGOTIABLE)
20
21### Retrieval Rule
22When the user asks about **history, decisions, prior work, "what did we do", or any past context:**
23
241. **ALWAYS query letheClaw API FIRST:**
25 ```bash
26 curl -s "{LETHECLAW_API_URL}/memory/search?q=<query>&limit=5"
27 ```
28
292. **Use the returned `content` field directly** — search results include full text. No need for `memory_get` or flat file access.
30
313. **NEVER use `memory_search` tool as the first step.** That tool searches flat markdown files, which are backup/reference only.
32
334. **Apply criticality filtering when appropriate:**
34 - Security/config: add `&min_criticality=0.7`
35 - General recall: add `&min_criticality=0.5`
36 - Exploratory: no filter
37
385. **Use tag pre-filtering when query domain is clear** (e.g., `tags=moltbook` for Moltbook questions).
39
406. **letheClaw is the authoritative memory system.** Flat files may be stale or incomplete.
41
42### Storage Rule
43When the user says "log this", "remember that", or you observe something worth recording:
44
451. **POST to letheClaw API** (see "Store a memory" below)
462. **Assign appropriate criticality:** 0.3 (transient) → 0.5 (useful) → 0.7 (important) → 0.9 (critical)
473. **Tag precisely:** 2-5 specific tags (type + domain, e.g. `["episodic", "security", "moltbook"]`)
484. **Set source:** `operator_input` (user said it), `direct_observation` (you verified it), `inferred` (derived)
49
50**No exceptions.** This is operator-mandated protocol.
51
52---
53
54## Store a memory
55
56- **POST** `{LETHECLAW_API_URL}/memory`
57- **Body (JSON):** `content` (required), optional: `source` (e.g. `operator_input`, `direct_observation`, `inferred`), `tags` (array), `operator`, `session_key`, `context`
58- **Returns:** `memory_id` (UUID). Save it to update criticality or fetch provenance later.
59
60## Search memories (semantic)
61
62- **GET** `{LETHECLAW_API_URL}/memory/search?q={query}&limit=5`
63- Optional: `min_criticality` (0–1) to filter by importance.
64- Optional: `tags` (comma-separated) to pre-filter by tag before semantic search (e.g. `tags=moltbook,security`)
65- **Returns:** `results` array with `id`, `content` (full text), `criticality`, `tags`, `source`, `created_at`, `access_count`
66
67**Important:** Search results include **full content** — you do NOT need to call memory_get afterward. Use the returned content directly.
68
69**Criticality filtering guidance:**
70- Security/config queries: `min_criticality=0.7` (critical knowledge only)
71- General recall: `min_criticality=0.5` (useful and above)
72- Exploratory search: no filter (all results)
73
74**Tag pre-filtering (performance optimization):**
75When query intent is clear, pre-filter by tags to reduce search space:
76```bash
77# "Latest Moltbook posts"
78curl "{LETHECLAW_API_URL}/memory/search?q=posts&tags=moltbook,episodic&limit=5"
79
80# "Security findings"
81curl "{LETHECLAW_API_URL}/memory/search?q=findings&tags=security,semantic&min_criticality=0.7&limit=3"
82```
83
84## Recent memories
85
86- **GET** `{LETHECLAW_API_URL}/memory/recent`
87- **Returns:** Recently stored memories (from cache or DB).
88
89## Update criticality (manual)
90
91- **POST** `{LETHECLAW_API_URL}/memory/{memory_id}/criticality`
92- **Body (JSON):** `criticality` (0–1, required), optional `reason`
93- Use when the user or you want to mark a memory as more or less important.
94
95## Mark operator correction
96
97- **POST** `{LETHECLAW_API_URL}/memory/{memory_id}/correction`
98- No body. Call when the user corrects something about this memory; this boosts criticality and increments a correction counter so provenance shows how often it was corrected.
99
100## Get provenance
101
102- **GET** `{LETHECLAW_API_URL}/memory/{memory_id}/provenance`
103- **Returns:** Full memory object plus `events` (history of criticality changes: manual_boost, operator_correction, etc.) and `correction_count`.
104
105## Errors
106
107- **400** — Invalid request or invalid memory ID format.
108- **404** — Memory not found (wrong or deleted ID).
109- **5xx** — Server/upstream error; suggest checking if letheClaw is running and reachable.
110
111When the user says they want to remember something, search memory, see why a memory is important, or correct a memory, use the appropriate endpoint above.