clawmem 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +165 -677
- package/CLAUDE.md +4 -747
- package/README.md +20 -191
- package/SKILL.md +157 -711
- package/docs/clawmem-architecture.excalidraw +2415 -0
- package/docs/clawmem-architecture.png +0 -0
- package/docs/clawmem_hero.jpg +0 -0
- package/docs/concepts/architecture.md +413 -0
- package/docs/concepts/composite-scoring.md +133 -0
- package/docs/concepts/hooks-vs-mcp.md +156 -0
- package/docs/concepts/multi-vault.md +71 -0
- package/docs/contributing.md +101 -0
- package/docs/guides/cloud-embedding.md +134 -0
- package/docs/guides/hermes-plugin.md +187 -0
- package/docs/guides/inference-services.md +144 -0
- package/docs/guides/multi-vault-config.md +84 -0
- package/docs/guides/openclaw-plugin.md +306 -0
- package/docs/guides/setup-hooks.md +146 -0
- package/docs/guides/setup-mcp.md +76 -0
- package/docs/guides/systemd-services.md +332 -0
- package/docs/guides/upgrading.md +566 -0
- package/docs/internals/entity-resolution.md +135 -0
- package/docs/internals/graph-traversal.md +85 -0
- package/docs/internals/intent-search-pipeline.md +103 -0
- package/docs/internals/query-pipeline.md +100 -0
- package/docs/introduction.md +104 -0
- package/docs/quickstart.md +158 -0
- package/docs/reference/cli.md +195 -0
- package/docs/reference/configuration.md +101 -0
- package/docs/reference/mcp-tools.md +336 -0
- package/docs/reference/rest-api.md +204 -0
- package/docs/troubleshooting.md +330 -0
- package/package.json +2 -1
- package/src/clawmem.ts +60 -0
- package/src/health/rerank-golden.json +54 -0
- package/src/health/rerank-health.ts +150 -0
- package/src/mcp.ts +20 -1
- package/src/memory.ts +2 -0
- package/src/search-utils.ts +35 -4
- package/src/store.ts +115 -22
package/README.md
CHANGED
|
@@ -114,8 +114,8 @@ After installing, here's the full journey from zero to working memory:
|
|
|
114
114
|
| Step | What | How | Details |
|
|
115
115
|
|------|------|-----|---------|
|
|
116
116
|
| **1. Bootstrap** | Create a vault, index your first collection, embed, install hooks and MCP | `clawmem bootstrap ~/notes --name notes` | One command does it all. Or run each step manually (see below). |
|
|
117
|
-
| **2. Choose models** | Pick embedding + reranker models based on your hardware | 16GB+ VRAM → SOTA stack (zembed-1 + zerank-2 sidecar). Less → QMD native combo. No GPU → cloud embedding or CPU fallback. | [
|
|
118
|
-
| **3. Download models** | Get the model files for your chosen stack (GGUFs for embedding/LLM/default-reranker; the zerank-2 SOTA reranker builds its own sidecar artifact) | `wget` from HuggingFace, let `node-llama-cpp` auto-download the QMD native models, or run the sidecar recipe | [
|
|
117
|
+
| **2. Choose models** | Pick embedding + reranker models based on your hardware | 16GB+ VRAM → SOTA stack (zembed-1 + zerank-2 sidecar). Less → QMD native combo. No GPU → cloud embedding or CPU fallback. | [Inference services](docs/guides/inference-services.md) |
|
|
118
|
+
| **3. Download models** | Get the model files for your chosen stack (GGUFs for embedding/LLM/default-reranker; the zerank-2 SOTA reranker builds its own sidecar artifact) | `wget` from HuggingFace, let `node-llama-cpp` auto-download the QMD native models, or run the sidecar recipe | [Inference services](docs/guides/inference-services.md) |
|
|
119
119
|
| **4. Start services** | Run GPU servers (if using dedicated GPU) and background services. Optionally enable the v0.8.2 background maintenance workers in the watcher unit so consolidation + deductive synthesis run automatically. | `llama-server` for each model. systemd units for watcher + embed timer. Drop-in for the watcher to enable workers + tune intervals + set the quiet window. | [systemd services](docs/guides/systemd-services.md), [background workers](docs/guides/systemd-services.md#background-maintenance-workers-v082) |
|
|
120
120
|
| **5. Decide what to index** | Add collections for your projects, notes, research, and domain docs | `clawmem collection add ~/project --name project` | The more relevant markdown you index, the better retrieval works. See [building a rich context field](docs/introduction.md#building-a-rich-context-field). |
|
|
121
121
|
| **6. Connect your agent** | Hook into Claude Code, OpenClaw, Hermes, or any MCP client | `clawmem setup hooks && clawmem setup mcp` for Claude Code. `clawmem setup openclaw` for OpenClaw. Copy `src/hermes/` to Hermes plugins for Hermes. | [Integration](#integration) |
|
|
@@ -303,193 +303,21 @@ vault_sync(vault="work", content_root="~/work/docs")
|
|
|
303
303
|
|
|
304
304
|
**Single-vault users:** No action needed. Everything works without configuration. The `vault` parameter is always optional and ignored when no vaults are configured.
|
|
305
305
|
|
|
306
|
-
### GPU
|
|
306
|
+
### Inference services (GPU, in-process, or cloud)
|
|
307
307
|
|
|
308
|
-
ClawMem uses three inference services — embedding
|
|
308
|
+
ClawMem uses three inference services — **embedding**, **LLM** (query expansion / intent / A-MEM), and **reranker**. In the **default** stack all three run as `llama-server` instances, each with an in-process `node-llama-cpp` fallback that auto-downloads on first use, so ClawMem works without a dedicated GPU (Metal on Apple Silicon, Vulkan where available, CPU as last resort). The `bin/clawmem` wrapper points at `localhost:8088/8089/8090`. **Always run via `bin/clawmem`** — it sets the endpoints.
|
|
309
309
|
|
|
310
|
-
**
|
|
310
|
+
**Choose a stack:**
|
|
311
311
|
|
|
312
|
-
|
|
|
312
|
+
| Stack | Models | VRAM | License | When |
|
|
313
313
|
|---|---|---|---|---|
|
|
314
|
-
|
|
|
315
|
-
|
|
|
316
|
-
|
|
|
314
|
+
| **QMD native** (default) | EmbeddingGemma-300M + qmd-query-expansion-1.7B + qwen3-reranker-0.6B | ~4 GB, or in-process | **Permissive — commercial OK** | Any GPU or none; commercial use; zero-config start |
|
|
315
|
+
| **z / SOTA** | zembed-1 + qmd-query-expansion-1.7B + zerank-2 seq-cls **sidecar** | ~16 GB | **CC-BY-NC-4.0 — non-commercial only** | 16 GB+ GPU and non-commercial; best recall |
|
|
316
|
+
| **Cloud embedding** | Jina / OpenAI / Voyage / Cohere (embedding only) | none | provider ToS | No local GPU for embedding; LLM + reranker stay local |
|
|
317
317
|
|
|
318
|
-
**
|
|
318
|
+
**Heads-up before you serve:** the zerank-2 **GGUF is deprecated and inert** — llama.cpp drops its score head, so the SOTA reranker must run as the [seq-cls sidecar](extras/rerankers/zerank-2-seq/), not a GGUF (verify with `clawmem rerank-health`). zembed-1 / reranking need `-ub` = `-b` (non-causal attention). Changing embedding dimensions requires `clawmem embed --force`. Set `CLAWMEM_NO_LOCAL_MODELS=true` to fail fast instead of silent CPU fallback.
|
|
319
319
|
|
|
320
|
-
**
|
|
321
|
-
|
|
322
|
-
**License:** zembed-1 and zerank-2 are released under **CC-BY-NC-4.0** — non-commercial only. The QMD native models below have no such restriction.
|
|
323
|
-
|
|
324
|
-
**No dedicated GPU / GPU without VRAM to spare:** The QMD native combo — total ~4GB VRAM, also runs via `node-llama-cpp` (Metal on Apple Silicon, Vulkan where available, CPU as last resort). Fast with GPU acceleration; significantly slower on CPU-only.
|
|
325
|
-
|
|
326
|
-
| Service | Port | Model | VRAM | Purpose |
|
|
327
|
-
|---|---|---|---|---|
|
|
328
|
-
| Embedding | 8088 | [EmbeddingGemma-300M-Q8_0](https://huggingface.co/ggml-org/embeddinggemma-300M-GGUF) | ~400MB | Vector search, indexing, context-surfacing (768d, 2K context) |
|
|
329
|
-
| LLM | 8089 | [qmd-query-expansion-1.7B-q4_k_m](https://huggingface.co/tobil/qmd-query-expansion-1.7B-gguf) | ~2.2GB | Intent classification, query expansion, A-MEM |
|
|
330
|
-
| Reranker | 8090 | [qwen3-reranker-0.6B-Q8_0](https://huggingface.co/ggml-org/Qwen3-Reranker-0.6B-Q8_0-GGUF) | ~1.3GB | Cross-encoder reranking (query, intent_search) |
|
|
331
|
-
|
|
332
|
-
The `bin/clawmem` wrapper defaults to `localhost:8088/8089/8090`. If a server is unreachable (transport error like ECONNREFUSED/ETIMEDOUT), ClawMem sets a 60-second cooldown and falls back to in-process inference via `node-llama-cpp` (auto-downloads the QMD native models on first use, uses Metal/Vulkan/CPU depending on hardware). HTTP errors (400/500) and user-cancelled requests do not trigger cooldown — the remote server is retried normally on the next call. With GPU acceleration the fallback is fast; on CPU-only it is significantly slower. ClawMem always works either way, but **if you're running dedicated GPU servers, use [systemd services](docs/guides/systemd-services.md) to ensure they stay up**.
|
|
333
|
-
|
|
334
|
-
To prevent fallback and fail fast instead, set `CLAWMEM_NO_LOCAL_MODELS=true`.
|
|
335
|
-
|
|
336
|
-
#### Remote GPU (optional)
|
|
337
|
-
|
|
338
|
-
If your GPU lives on a separate machine, point the env vars at it:
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
export CLAWMEM_EMBED_URL=http://gpu-host:8088
|
|
342
|
-
export CLAWMEM_LLM_URL=http://gpu-host:8089
|
|
343
|
-
export CLAWMEM_LLM_MODEL=qwen3
|
|
344
|
-
export CLAWMEM_RERANK_URL=http://gpu-host:8090
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
For remote setups, set `CLAWMEM_NO_LOCAL_MODELS=true` to prevent `node-llama-cpp` from auto-downloading multi-GB model files if a server is unreachable.
|
|
348
|
-
|
|
349
|
-
#### No Dedicated GPU (in-process inference)
|
|
350
|
-
|
|
351
|
-
All three QMD native models run locally without a dedicated GPU. `node-llama-cpp` auto-downloads them on first use (~300MB embedding + ~1.1GB LLM + ~600MB reranker) and auto-detects the best backend — **Metal on Apple Silicon** (fast, uses integrated GPU), **Vulkan where available** (fast, uses discrete or integrated GPU), or **CPU as last resort** (significantly slower). With Metal or Vulkan, in-process inference handles these small models well; CPU-only is functional but noticeably slower.
|
|
352
|
-
|
|
353
|
-
Alternatively, use a [cloud embedding provider](#option-c-cloud-embedding-api) if you prefer not to run models locally.
|
|
354
|
-
|
|
355
|
-
### Embedding
|
|
356
|
-
|
|
357
|
-
ClawMem calls the OpenAI-compatible `/v1/embeddings` endpoint for all embedding operations. This works with local llama-server instances and cloud providers alike.
|
|
358
|
-
|
|
359
|
-
#### Option A: GPU with VRAM to spare (recommended)
|
|
360
|
-
|
|
361
|
-
Use [zembed-1-Q4_K_M](https://huggingface.co/Abhiray/zembed-1-Q4_K_M-GGUF) — SOTA retrieval quality, distilled from zerank-2 via [ZeroEntropy's zELO methodology](https://docs.zeroentropy.dev). **CC-BY-NC-4.0** — non-commercial only.
|
|
362
|
-
|
|
363
|
-
- Size: 2.4GB, Dimensions: 2560, VRAM: ~4.4GB, Context: 32K tokens
|
|
364
|
-
|
|
365
|
-
```bash
|
|
366
|
-
wget https://huggingface.co/Abhiray/zembed-1-Q4_K_M-GGUF/resolve/main/zembed-1-Q4_K_M.gguf
|
|
367
|
-
|
|
368
|
-
# -ub must match -b for non-causal attention
|
|
369
|
-
llama-server -m zembed-1-Q4_K_M.gguf \
|
|
370
|
-
--embeddings --port 8088 --host 0.0.0.0 \
|
|
371
|
-
-ngl 99 -c 8192 -b 2048 -ub 2048
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
#### Option B: No GPU / GPU without VRAM to spare
|
|
375
|
-
|
|
376
|
-
Use [EmbeddingGemma-300M-Q8_0](https://huggingface.co/ggml-org/embeddinggemma-300M-GGUF) — the QMD native embedding model. Only 300MB, runs on CPU or any GPU.
|
|
377
|
-
|
|
378
|
-
- Size: 314MB, Dimensions: 768, VRAM: ~400MB (or CPU), Context: 2048 tokens
|
|
379
|
-
|
|
380
|
-
```bash
|
|
381
|
-
wget https://huggingface.co/ggml-org/embeddinggemma-300M-GGUF/resolve/main/embeddinggemma-300M-Q8_0.gguf
|
|
382
|
-
|
|
383
|
-
# On GPU (add -ngl 99):
|
|
384
|
-
llama-server -m embeddinggemma-300M-Q8_0.gguf \
|
|
385
|
-
--embeddings --port 8088 --host 0.0.0.0 \
|
|
386
|
-
-ngl 99 -c 2048 --batch-size 2048
|
|
387
|
-
|
|
388
|
-
# On CPU (omit -ngl):
|
|
389
|
-
llama-server -m embeddinggemma-300M-Q8_0.gguf \
|
|
390
|
-
--embeddings --port 8088 --host 0.0.0.0 \
|
|
391
|
-
-c 2048 --batch-size 2048
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
For multilingual corpora, the SOTA zembed-1 (Option A) supports multilingual out of the box. For a lightweight alternative: [granite-embedding-278m-multilingual-Q6_K](https://huggingface.co/bartowski/granite-embedding-278m-multilingual-GGUF) (314MB, set `CLAWMEM_EMBED_MAX_CHARS=1100` due to 512-token context).
|
|
395
|
-
|
|
396
|
-
#### Option C: Cloud Embedding API
|
|
397
|
-
|
|
398
|
-
Alternatively, use a cloud embedding provider instead of running a local server. Any provider with an OpenAI-compatible `/v1/embeddings` endpoint works.
|
|
399
|
-
|
|
400
|
-
**Configuration:** Copy `.env.example` to `.env` and set your provider credentials:
|
|
401
|
-
|
|
402
|
-
```bash
|
|
403
|
-
cp .env.example .env
|
|
404
|
-
# Edit .env:
|
|
405
|
-
CLAWMEM_EMBED_URL=https://api.jina.ai
|
|
406
|
-
CLAWMEM_EMBED_API_KEY=jina_your-key-here
|
|
407
|
-
CLAWMEM_EMBED_MODEL=jina-embeddings-v5-text-small
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
Or export them in your shell. **Precedence:** shell environment > `.env` file > `bin/clawmem` wrapper defaults.
|
|
411
|
-
|
|
412
|
-
| Provider | `CLAWMEM_EMBED_URL` | `CLAWMEM_EMBED_MODEL` | Dimensions | Notes |
|
|
413
|
-
|---|---|---|---|---|
|
|
414
|
-
| Jina AI | `https://api.jina.ai` | `jina-embeddings-v5-text-small` | 1024 | 32K context, task-specific LoRA adapters |
|
|
415
|
-
| OpenAI | `https://api.openai.com` | `text-embedding-3-small` | 1536 | 8K context, Matryoshka dimensions via `CLAWMEM_EMBED_DIMENSIONS` |
|
|
416
|
-
| Voyage AI | `https://api.voyageai.com` | `voyage-4-large` | 1024 | 32K context |
|
|
417
|
-
| Cohere | `https://api.cohere.com` | `embed-v4.0` | 1024 | 128K context |
|
|
418
|
-
|
|
419
|
-
Cloud mode auto-detects your provider from the URL and sends the right parameters (Jina `task`, Voyage/Cohere `input_type`, OpenAI `dimensions`). Batch embedding (50 fragments/request), server-side truncation, adaptive TPM-aware pacing, and retry with jitter are all handled automatically. Set `CLAWMEM_EMBED_TPM_LIMIT` to match your provider tier (default: 100000). See [docs/guides/cloud-embedding.md](docs/guides/cloud-embedding.md) for full details.
|
|
420
|
-
|
|
421
|
-
**Note:** Cloud providers handle their own context window limits — ClawMem skips client-side truncation when an API key is set. Local llama-server truncates at `CLAWMEM_EMBED_MAX_CHARS` (default: 6000 chars).
|
|
422
|
-
|
|
423
|
-
#### Verify and embed
|
|
424
|
-
|
|
425
|
-
```bash
|
|
426
|
-
# Verify endpoint is reachable
|
|
427
|
-
curl $CLAWMEM_EMBED_URL/v1/embeddings \
|
|
428
|
-
-H "Content-Type: application/json" \
|
|
429
|
-
-H "Authorization: Bearer $CLAWMEM_EMBED_API_KEY" \
|
|
430
|
-
-d "{\"input\":\"test\",\"model\":\"$CLAWMEM_EMBED_MODEL\"}"
|
|
431
|
-
|
|
432
|
-
# Embed your vault
|
|
433
|
-
./bin/clawmem embed
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
### LLM Server
|
|
437
|
-
|
|
438
|
-
Intent classification, query expansion, and A-MEM extraction use [qmd-query-expansion-1.7B](https://huggingface.co/tobil/qmd-query-expansion-1.7B-gguf) — a Qwen3-1.7B finetuned by QMD specifically for generating search expansion terms (hyde, lexical, and vector variants). ~1.1GB at q4_k_m quantization, served via `llama-server` on port 8089.
|
|
439
|
-
|
|
440
|
-
**Without a server:** If `CLAWMEM_LLM_URL` is unset, `node-llama-cpp` auto-downloads the model on first use.
|
|
441
|
-
|
|
442
|
-
**Performance (RTX 3090):**
|
|
443
|
-
- Intent classification: **27ms**
|
|
444
|
-
- Query expansion: **333 tok/s**
|
|
445
|
-
- VRAM: ~2.2-2.8GB depending on quantization
|
|
446
|
-
|
|
447
|
-
**Qwen3 /no_think flag:** Qwen3 uses thinking tokens by default. ClawMem appends `/no_think` to all prompts automatically to get structured output in the `content` field.
|
|
448
|
-
|
|
449
|
-
**Intent classification:** Uses a dual-path approach:
|
|
450
|
-
1. **Heuristic regex classifier** (instant) — handles strong signals (why/when/who keywords) with 0.8+ confidence
|
|
451
|
-
2. **LLM refinement** (27ms on GPU) — only for ambiguous queries below 0.8 confidence
|
|
452
|
-
|
|
453
|
-
**Server setup:**
|
|
454
|
-
|
|
455
|
-
```bash
|
|
456
|
-
# Download the finetuned model
|
|
457
|
-
wget https://huggingface.co/tobil/qmd-query-expansion-1.7B-gguf/resolve/main/qmd-query-expansion-1.7B-q4_k_m.gguf
|
|
458
|
-
|
|
459
|
-
# Start llama-server for LLM inference
|
|
460
|
-
llama-server -m qmd-query-expansion-1.7B-q4_k_m.gguf \
|
|
461
|
-
--port 8089 --host 0.0.0.0 \
|
|
462
|
-
-ngl 99 -c 4096 --batch-size 512
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
### Reranker Server
|
|
466
|
-
|
|
467
|
-
Cross-encoder reranking for `query` and `intent_search` pipelines on port 8090. ClawMem calls the `/v1/rerank` endpoint (or falls back to scoring via `/v1/completions` for compatible servers).
|
|
468
|
-
|
|
469
|
-
Scores each candidate against the original query (cross-encoder architecture). `query` pipeline: 4000 char context per doc (deep reranking); `intent_search`: 200 char context per doc (fast reranking).
|
|
470
|
-
|
|
471
|
-
**GPU with VRAM to spare (recommended):** the **[zerank-2 seq-cls sidecar](extras/rerankers/zerank-2-seq/)** (bf16, ~9GB VRAM). zerank-2's NDCG@10 is ahead of Cohere rerank-3.5 and Gemini 2.5 Flash. Optimal pairing with zembed-1 (same distillation architecture via zELO). **CC-BY-NC-4.0** — non-commercial only.
|
|
472
|
-
|
|
473
|
-
zerank-2 is **not** servable as a llama.cpp GGUF — its CrossEncoder/LogitScore head is dropped by the GGUF converter (the model becomes a headless causal LM that produces near-zero, uninformative scores under `--reranking`, leaving final ordering RRF-dominated). The sidecar serves the real head via transformers, with a reproducible correctness gate:
|
|
474
|
-
|
|
475
|
-
```bash
|
|
476
|
-
cd extras/rerankers/zerank-2-seq
|
|
477
|
-
docker compose build
|
|
478
|
-
HF_TOKEN=hf_xxx docker compose run --rm convert # download + convert + verify (all gates must pass)
|
|
479
|
-
docker compose up -d reranker # serves /v1/rerank on :8090
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
**CPU / GPU without VRAM to spare:** [qwen3-reranker-0.6B-Q8_0](https://huggingface.co/ggml-org/Qwen3-Reranker-0.6B-Q8_0-GGUF) (~600MB, ~1.3GB VRAM). The QMD native reranker — auto-downloaded by `node-llama-cpp` if no server is running.
|
|
483
|
-
|
|
484
|
-
```bash
|
|
485
|
-
wget https://huggingface.co/ggml-org/Qwen3-Reranker-0.6B-Q8_0-GGUF/resolve/main/Qwen3-Reranker-0.6B-Q8_0.gguf
|
|
486
|
-
|
|
487
|
-
llama-server -m Qwen3-Reranker-0.6B-Q8_0.gguf \
|
|
488
|
-
--reranking --port 8090 --host 0.0.0.0 \
|
|
489
|
-
-ngl 99 -c 2048 --batch-size 512
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
**Note:** zembed-1 (embedding) uses non-causal attention — `-ub` (ubatch) must equal `-b` (batch); omitting `-ub` or setting it lower causes assertion crashes. The qwen3-reranker-0.6B GGUF does not have this requirement, and the zerank-2 sidecar is served via transformers (no llama.cpp batch flags). See [llama.cpp#12836](https://github.com/ggml-org/llama.cpp/issues/12836).
|
|
320
|
+
→ **Full stack decision matrix, model/VRAM tables, and server-setup commands:** [docs/guides/inference-services.md](docs/guides/inference-services.md). Cloud providers, batch + TPM behavior: [docs/guides/cloud-embedding.md](docs/guides/cloud-embedding.md). All environment variables: [docs/reference/configuration.md](docs/reference/configuration.md). Keeping servers running: [docs/guides/systemd-services.md](docs/guides/systemd-services.md).
|
|
493
321
|
|
|
494
322
|
### MCP Server
|
|
495
323
|
|
|
@@ -574,22 +402,23 @@ bun test # Run test suite
|
|
|
574
402
|
|
|
575
403
|
## Agent Instructions
|
|
576
404
|
|
|
577
|
-
ClawMem ships
|
|
405
|
+
ClawMem ships agent instruction files and an optional maintenance agent:
|
|
578
406
|
|
|
579
407
|
| File | Loaded | Purpose |
|
|
580
408
|
|------|--------|---------|
|
|
581
|
-
| `
|
|
582
|
-
| `
|
|
583
|
-
| `SKILL.md` | On-demand (agent reads when needed) |
|
|
409
|
+
| `AGENTS.md` | Automatically (most agents, when working in this repo) | **Lean root SSOT** — agent-facing quick reference (inference at a glance, install, retrieval routing, MCP tools, indexing rules, integrations) + an index into `docs/` |
|
|
410
|
+
| `CLAUDE.md` | Automatically (Claude Code) | `@AGENTS.md` import — Claude Code reads `CLAUDE.md` natively, so it just pulls in the SSOT |
|
|
411
|
+
| `SKILL.md` | On-demand (agent reads when needed) | Portable operating reference — escalation gate, tool routing, the 4 query-optimization levers, pipeline behavior, composite scoring, lifecycle. Shipped with the package for cross-project use |
|
|
412
|
+
| `docs/` | On-demand (linked throughout `AGENTS.md`) | Deep reference — inference setup, configuration, concepts, internals, guides, troubleshooting |
|
|
584
413
|
| `agents/clawmem-curator.md` | On-demand via `clawmem setup curator` | Maintenance agent — lifecycle triage, retrieval health checks, dedup sweeps, graph rebuilds |
|
|
585
414
|
|
|
586
|
-
**Working in the ClawMem repo:** No action needed — `CLAUDE.md` loads automatically.
|
|
415
|
+
**Working in the ClawMem repo:** No action needed — `CLAUDE.md` (which imports `AGENTS.md`) loads automatically.
|
|
587
416
|
|
|
588
417
|
**Using ClawMem from other projects:** Your agent needs instructions on how to use ClawMem's hooks and MCP tools. Two options:
|
|
589
418
|
|
|
590
419
|
### Option A: Copy instructions into your project
|
|
591
420
|
|
|
592
|
-
Copy the contents of `
|
|
421
|
+
Copy the contents of `AGENTS.md` (or the relevant sections) into your project's own `AGENTS.md` or `CLAUDE.md`. Simple but requires manual updates when ClawMem changes.
|
|
593
422
|
|
|
594
423
|
### Option B: Add a trigger block (recommended)
|
|
595
424
|
|
|
@@ -645,7 +474,7 @@ ALWAYS `compact=true` first → review → `multi_get` for full content.
|
|
|
645
474
|
- Do NOT forget memories to "clean up" — let confidence decay handle it
|
|
646
475
|
- Do NOT wait for curator to pin decisions — pin immediately when critical
|
|
647
476
|
|
|
648
|
-
For detailed
|
|
477
|
+
For detailed operating guidance (escalation gate, tool routing, query-optimization levers, pipeline behavior, composite scoring, lifecycle), find and read the shipped SKILL.md (setup, inference, and internals live in AGENTS.md + docs/):
|
|
649
478
|
Bash: CLAWMEM_ROOT=$(cd "$(dirname "$(which clawmem)")/.." && pwd) && echo "$CLAWMEM_ROOT/SKILL.md"
|
|
650
479
|
Then: Read the file at that path.
|
|
651
480
|
```
|
|
@@ -1153,7 +982,7 @@ clawmem serve --port 7438 &
|
|
|
1153
982
|
|
|
1154
983
|
## Deployment
|
|
1155
984
|
|
|
1156
|
-
Three-tier retrieval architecture: infrastructure (watcher + embed timer) → hooks (~90%) → agent MCP (~10%). Works out of the box without a dedicated GPU (all models auto-download via `node-llama-cpp`, uses Metal on Apple Silicon). For best performance, run the inference services on GPU (three `llama-server` instances in the default stack; the SOTA reranker is a transformers sidecar) — see [
|
|
985
|
+
Three-tier retrieval architecture: infrastructure (watcher + embed timer) → hooks (~90%) → agent MCP (~10%). Works out of the box without a dedicated GPU (all models auto-download via `node-llama-cpp`, uses Metal on Apple Silicon). For best performance, run the inference services on GPU (three `llama-server` instances in the default stack; the SOTA reranker is a transformers sidecar) — see [Inference services](docs/guides/inference-services.md) for model tiers (SOTA vs QMD native) and [cloud embedding](docs/guides/cloud-embedding.md) for cloud embedding alternatives.
|
|
1157
986
|
|
|
1158
987
|
Key services: `clawmem-watcher` (auto-index on file change + beads sync), `clawmem-embed` timer (daily embedding sweep), 7 Claude Code hooks installed by default (context injection, curator nudge, compaction support, decision extraction, handoffs, feedback). Optional `clawmem-curator` agent for on-demand lifecycle triage, retrieval health checks, and maintenance (`clawmem setup curator`).
|
|
1159
988
|
|