Uteke Memory Skill
Persistent memory engine for AI agents via the uteke CLI.
Version: 0.18.2 — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); fusion (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. Zero unsafe code.
This skill ships with each release — its version tracks the CLI version
(a CI gate fails when they drift, see skill-version-parity test).
If this file is older than your uteke --version, run uteke init again
or re-read the docs for the current release.
Hermes integration: Install the uteke-memory plugin for automatic recall
on every turn via the pre_llm_call hook. No shell hook or daemon needed.
See extensions/hermes-uteke-memory/ for the plugin source.
Manual tool calls via uteke-tool plugin remain available for explicit
remember/forget/room operations.
Global Flags (all commands)
| Flag |
Description |
--store <PATH> |
Override store path (default: ~/.uteke) |
--namespace <NS> |
Multi-agent isolation (default: "default") |
--json |
Machine-readable JSON output |
--verbose |
Debug logging |
Commands
Core Memory Operations
| Command |
Description |
Key Options |
uteke remember <TEXT> |
Store a new memory |
--tags, --type, --entity, --category, --meta, --room, --author, --source, --source-type, --detect-contradiction |
uteke recall <QUERY> |
Fusion search (default since 0.16.0 — weighted RRF of vector + hybrid rankings) |
--limit, --tags, --entity, --category, --min, --strategy (fusion/vector/fts5/hybrid/graph), --salience, --recency, --related, --depth, --context, --at (time-travel), --type (all/memory/doc), --where (JSON field filter) |
uteke search <QUERY> |
Keyword text search |
--limit, --tags |
uteke list |
List memories with filters |
--tag, --entity, --category, --limit, --offset, --at |
uteke get <ID> |
Get single memory by UUID |
|
uteke forget <ID> |
Delete memory by ID, tag, tier, or all |
--tag, --cold, --all, --confirm |
Documents (Wiki / Knowledge Base)
| Command |
Description |
Key Options |
uteke doc create <SLUG> |
Create document from file/stdin |
--title, --file, --content, --tags, --parent |
uteke doc get <ID_OR_SLUG> |
Get a document |
|
uteke doc update <ID_OR_SLUG> |
Partial update — only provided fields change |
--title, --content, --file, --tags, --metadata |
uteke doc delete <ID> |
Delete document (cascades to children) |
|
uteke doc list |
List documents |
--limit, --tree (hierarchy) |
uteke doc search <QUERY> |
Search documents (semantic + FTS5) |
--limit, --mode (semantic/fts/hybrid) |
uteke doc children <PARENT> |
List child documents |
--limit |
uteke doc move <ID_OR_SLUG> |
Move to new parent or root |
--parent |
uteke doc breadcrumbs <ID_OR_SLUG> |
Show path from root |
|
uteke doc descendants <ID_OR_SLUG> |
List all descendants |
--max-depth, --limit |
uteke doc export |
Export all documents as JSON |
--output |
Knowledge Graph
| Command |
Description |
Key Options |
uteke graph nodes |
List all graph nodes |
--entity-type |
uteke graph edges |
List all graph edges |
--relation |
uteke graph neighbors <LABEL> |
Find neighbors (BFS) |
--depth |
uteke graph path <SRC> <TGT> |
Shortest path (BFS) |
--max-depth |
uteke graph query <RELATION> |
Query edges by relation type |
|
uteke graph stats |
Graph statistics |
|
Memory Relationships
| Command |
Description |
Key Options |
uteke edges <ID> |
List edges for a memory (auto-wired backlinks/forward links) |
--deep (BFS depth), --direction (incoming/outgoing/both) |
uteke rebuild-backlinks |
Rebuild referenced_by from forward edges |
--quiet |
Rooms (Collaborative Memory)
| Command |
Description |
Key Options |
uteke room create <ID> |
Create a room |
--title |
uteke room list |
List all rooms |
--namespace |
uteke room stats <ID> |
Room statistics and participants |
|
uteke room recall <ID> |
Recall room memories |
--query, --author, --limit, --min |
uteke room summary <ID> |
Topic clustering summary |
|
uteke room document <ID> |
Generate structured document from room |
|
uteke room delete <ID> |
Delete room (memories preserved) |
--confirm |
Pinning & Importance
| Command |
Description |
uteke pin <ID> |
Pin a memory (never decays) |
uteke unpin <ID> |
Unpin a memory |
uteke importance |
Recalculate importance scores for all memories |
uteke orphans |
Find disconnected memories with low importance |
Maintenance
| Command |
Description |
Key Options |
uteke dream |
Full maintenance pipeline: lint → backlinks → dedup → orphans → compact → verify (dry-run first by default) |
--phases, --skip, --dry-run, --quiet |
uteke lifecycle <cycle|promote|status> |
Safe lifecycle: soft-deprecate aged memories, promote back, status |
--namespace |
uteke consolidate |
Merge near-duplicate memories |
--threshold (default 0.90), --dry-run |
uteke prune |
Remove deprecated/expired memories |
--ttl (default 30), --dry-run |
uteke timeline <ID> |
Show audit log events for a memory |
--limit (default 20) |
Tags & Namespaces
| Command |
Description |
uteke tags list |
List all tags with counts (--by-count) |
uteke tags rename <old> <new> |
Rename a tag across all memories |
uteke tags delete <tag> |
Delete a tag from all memories (--confirm) |
uteke namespace list |
List all namespaces with counts |
uteke namespace stats <name> |
Stats for a specific namespace |
uteke namespace switch <name> |
Set default namespace in config |
Memory Aging
| Command |
Description |
Key Options |
uteke aging status |
Hot/warm/cold/never-accessed breakdown |
|
uteke aging preview |
Preview stale memories |
--older-than-days (default 180), --max-access-count (default 1) |
uteke aging cleanup |
Delete aged memories |
--older-than-days, --max-access-count, --yes |
Health, Stats & Data
| Command |
Description |
uteke stats |
Memory store statistics + tier breakdown |
uteke doctor |
Full health check: DB, index, embedding model, consistency |
uteke verify |
Compare DB count vs vector index count |
uteke verify-checksums |
Verify binary integrity against SHA256 checksums |
uteke repair |
Rebuild vector index from SQLite |
Stale-index symptom (pitfall 0g): a memory is recallable via
--strategy fts5 but missing under the default fusion/hybrid — that is a
vector-index desync, not data loss. Run uteke verify, then uteke repair.
On uteke-serve, use POST /verify / POST /repair (HTTP) or the
uteke_verify / uteke_repair MCP tools — no restart needed.
Run verify after every serve upgrade (#1245 class: CLI upgraded, serve left
behind → index written by the old binary reads as mismatched).
Search strategy guide — filters, not silos:
namespace = agent/workspace identity — pass it explicitly on recall.
room = collaborative discussion context (uteke room recall).
tags (e.g. project:<repo>) = the primary project filter.
- Strategies:
fusion (default), hybrid (RRF vector+FTS5), fts5
(keyword — best for short 1–3 word queries and exact terms), vector
(pure semantic), graph. Scores are rank-based (RRF), not cosine —
don't threshold them like similarity; use recall --explain for the
real vector similarity.
- Prefer 2–3 core keywords: FTS5 AND-matches all tokens, long natural
sentences can zero out the keyword arm.
Import / Export / Bench
| Command |
Description |
uteke export [FILE] |
Export to JSONL (no embeddings). Default: stdout |
uteke import [FILE] |
Import from JSONL/Markdown/text. Default: stdin |
uteke bench |
Performance benchmarks |
Setup & Upgrade
| Command |
Description |
uteke init --agent <TYPE> |
Initialize integration (pi/claude/cursor/opencode/hermes) |
uteke hook install <SHELL> |
Install shell hook (bash/zsh/fish) |
uteke completions <SHELL> |
Generate shell completions (bash/zsh/fish/powershell) |
uteke upgrade |
Check for updates and upgrade |
uteke onboard |
Interactive setup wizard: detect install, pick agent, toggle features, write config |
Architecture
- Storage: SQLite (WAL mode) with namespace column + FTS5 virtual table
- Vector index: usearch persistent HNSW (768d, cosine similarity)
- Hybrid search: RRF (k=60) merges vector + FTS5 results; graph strategy adds graph-signal reranking
- Fusion (default since 0.16.0): weighted RRF of the vector and hybrid rankings — LongMemEval 500Q R@5 0.946
- Embedding: ONNX EmbeddingGemma Q4 (768d), auto-downloaded
- Tiered memory: Hot (<7d, +0.1 boost), Warm (<30d), Cold (>30d)
- Schema versioning: Integer counter, auto-migration on upgrade
- Zero unsafe code (
unsafe_code = "forbid")
- Project-scoped stores:
uteke --store .uteke remember "..."
Usage Patterns
Session lifecycle
uteke recall "project architecture decisions" --namespace pi-agent
uteke remember "Use WAL mode for concurrent reads" --tags architecture,db --entity db-layer
uteke recall "last session state" --namespace pi-agent
Metadata-enriched storage
uteke remember "Deploy staging to AWS us-east-1" \
--tags deploy,aws --entity staging-server --category infrastructure \
--source "meeting-notes.md" --source-type file
Time-travel queries
uteke recall "auth flow" --at 2026-06-01T12:00:00Z
uteke list --at 2026-06-01T12:00:00Z
Graph-enhanced recall
uteke recall "database design" --strategy graph --related --depth 2
uteke graph neighbors "auth-service" --depth 3
uteke graph path "api-gateway" "database"
Document wiki
uteke doc create architecture/overview --title "Architecture Overview" --file overview.md --parent docs
uteke doc search "authentication" --mode hybrid
uteke doc list --tree
Room collaboration
uteke remember "Decision: use PostgreSQL" --room design-review --author alice
uteke room recall design-review --query "database"
uteke room summary design-review
Programmatic (JSON)
uteke recall "auth flow" --json --limit 3
uteke stats --json
uteke list --tag architecture --json --limit 50
Maintenance pipeline
uteke dream # Full pipeline
uteke dream --phases lint,verify --dry-run # Selective, safe
uteke importance # Recompute scores
uteke orphans --threshold 0.2 # Find disconnected
Project-Aware Memory (MANDATORY)
Always tag memories with project:<name> when working in a project. This prevents noise when recalling — you only see memories relevant to the current project.
How to detect the project name
- From
workdir / cwd — extract the repo folder name:
/home/user/repos/bond/ → project:bond
/home/user/repos/uteke/ → project:uteke
/home/user/repos/my-saas-app/ → project:my-saas-app
- From file paths mentioned in the conversation
- From the project name the user mentions
Rules
| Rule |
Details |
| REMEMBER |
Always include project:<name> in --tags when the memory is project-specific |
| RECALL |
Always include --tags project:<name> to scope recall to the current project |
| NO PROJECT |
If the conversation is not about any specific project (e.g., general chat), do NOT add a project: tag |
| TAG FORMAT |
Always lowercase: project:bond, project:uteke (not project:Bond) |
Examples
# Working on the "bond" project
uteke recall "auth flow" --tags project:bond
uteke remember "JWT rotation implemented with refresh tokens" --tags project:bond,decision,auth
uteke remember "DB schema uses UUID v7 for primary keys" --tags project:bond,architecture,db
# Working on the "uteke" project
uteke recall "vector index corruption" --tags project:uteke
uteke remember "Fixed usearch rebuild race condition" --tags project:uteke,bugfix,index
# General conversation — no project tag
uteke remember "User prefers concise responses" --tags preference
# Cross-project recall (explicitly requested)
uteke recall "shared auth pattern" --tags project:bond,project:corin
Why this matters
Without project tags, memories from all projects mix together. When you recall "fix auth bug" while working on project Bond, you might get results from project Corin's auth system — causing confusion and wasted context. Project tags ensure recall is scoped and noise-free.
When to Use
| Trigger |
Action |
| Before starting work |
uteke recall "<project context>" --tags project:<name> |
| After making decisions |
uteke remember "<decision>" --tags project:<name>,<other tags> |
| Important documents |
uteke doc create <slug> --file <path> --parent <slug> |
| Collaborative decisions |
uteke remember "..." --room <room> --author <name> |
| Memory feels stale |
uteke dream or uteke importance |
| Index feels corrupt |
uteke doctor → uteke repair |
Hermes Auto-Recall Plugin
The uteke-memory plugin registers a pre_llm_call hook that automatically
recalls relevant memories on every turn and injects them into the user message.
No shell hook, no daemon required (subprocess transport). Supports HTTP transport
to uteke-serve for container deployments.
# Generate and install the plugin
uteke init --agent hermes
# → writes to ~/.hermes/plugins/uteke-memory/
# Enable in config.yaml
# plugins:
# enabled:
# - uteke-memory
Config via ~/.hermes/uteke.json or env vars:
UTEKE_BIN, UTEKE_NAMESPACE, UTEKE_SERVER_URL, UTEKE_TOKEN,
UTEKE_RECALL_LIMIT (default 5), UTEKE_RECALL_MIN_SCORE (default 0.40).
Server Mode (uteke-serve)
HTTP daemon with REST API for all operations + monitoring/maintenance endpoints.
uteke-serve --port 8767
# CLI auto-routes to server when running: ~42ms recall vs ~3s cold start
Endpoints mirror CLI commands (e.g., POST /remember, POST /recall). Supports read-only API tokens for restricted access.
1---2name: uteke-memory3description: Persistent memory engine for AI agents via the uteke CLI — remember, recall, search, forget with hybrid + fusion semantic search (fusion default since 0.16.0), documents, knowledge graph, rooms, tiered memory, and multi-agent namespaces.4---56# Uteke Memory Skill78Persistent memory engine for AI agents via the `uteke` CLI.9Version: **0.18.2** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `fusion` (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. Zero unsafe code.1011> This skill ships with each release — its version tracks the CLI version12> (a CI gate fails when they drift, see `skill-version-parity` test).13> If this file is older than your `uteke --version`, run `uteke init` again14> or re-read the docs for the current release.1516> **Hermes integration:** Install the `uteke-memory` plugin for automatic recall17> on every turn via the `pre_llm_call` hook. No shell hook or daemon needed.18> See `extensions/hermes-uteke-memory/` for the plugin source.19> Manual tool calls via `uteke-tool` plugin remain available for explicit20> remember/forget/room operations.2122## Global Flags (all commands)2324| Flag | Description |25|------|-------------|26| `--store <PATH>` | Override store path (default: `~/.uteke`) |27| `--namespace <NS>` | Multi-agent isolation (default: `"default"`) |28| `--json` | Machine-readable JSON output |29| `--verbose` | Debug logging |3031## Commands3233### Core Memory Operations3435| Command | Description | Key Options |36|---------|-------------|-------------|37| `uteke remember <TEXT>` | Store a new memory | `--tags`, `--type`, `--entity`, `--category`, `--meta`, `--room`, `--author`, `--source`, `--source-type`, `--detect-contradiction` |38| `uteke recall <QUERY>` | Fusion search (default since 0.16.0 — weighted RRF of vector + hybrid rankings) | `--limit`, `--tags`, `--entity`, `--category`, `--min`, `--strategy` (fusion/vector/fts5/hybrid/graph), `--salience`, `--recency`, `--related`, `--depth`, `--context`, `--at` (time-travel), `--type` (all/memory/doc), `--where` (JSON field filter) |39| `uteke search <QUERY>` | Keyword text search | `--limit`, `--tags` |40| `uteke list` | List memories with filters | `--tag`, `--entity`, `--category`, `--limit`, `--offset`, `--at` |41| `uteke get <ID>` | Get single memory by UUID | |42| `uteke forget <ID>` | Delete memory by ID, tag, tier, or all | `--tag`, `--cold`, `--all`, `--confirm` |4344### Documents (Wiki / Knowledge Base)4546| Command | Description | Key Options |47|---------|-------------|-------------|48| `uteke doc create <SLUG>` | Create document from file/stdin | `--title`, `--file`, `--content`, `--tags`, `--parent` |49| `uteke doc get <ID_OR_SLUG>` | Get a document | |50| `uteke doc update <ID_OR_SLUG>` | Partial update — only provided fields change | `--title`, `--content`, `--file`, `--tags`, `--metadata` |51| `uteke doc delete <ID>` | Delete document (cascades to children) | |52| `uteke doc list` | List documents | `--limit`, `--tree` (hierarchy) |53| `uteke doc search <QUERY>` | Search documents (semantic + FTS5) | `--limit`, `--mode` (semantic/fts/hybrid) |54| `uteke doc children <PARENT>` | List child documents | `--limit` |55| `uteke doc move <ID_OR_SLUG>` | Move to new parent or root | `--parent` |56| `uteke doc breadcrumbs <ID_OR_SLUG>` | Show path from root | |57| `uteke doc descendants <ID_OR_SLUG>` | List all descendants | `--max-depth`, `--limit` |58| `uteke doc export` | Export all documents as JSON | `--output` |5960### Knowledge Graph6162| Command | Description | Key Options |63|---------|-------------|-------------|64| `uteke graph nodes` | List all graph nodes | `--entity-type` |65| `uteke graph edges` | List all graph edges | `--relation` |66| `uteke graph neighbors <LABEL>` | Find neighbors (BFS) | `--depth` |67| `uteke graph path <SRC> <TGT>` | Shortest path (BFS) | `--max-depth` |68| `uteke graph query <RELATION>` | Query edges by relation type | |69| `uteke graph stats` | Graph statistics | |7071### Memory Relationships7273| Command | Description | Key Options |74|---------|-------------|-------------|75| `uteke edges <ID>` | List edges for a memory (auto-wired backlinks/forward links) | `--deep` (BFS depth), `--direction` (incoming/outgoing/both) |76| `uteke rebuild-backlinks` | Rebuild `referenced_by` from forward edges | `--quiet` |7778### Rooms (Collaborative Memory)7980| Command | Description | Key Options |81|---------|-------------|-------------|82| `uteke room create <ID>` | Create a room | `--title` |83| `uteke room list` | List all rooms | `--namespace` |84| `uteke room stats <ID>` | Room statistics and participants | |85| `uteke room recall <ID>` | Recall room memories | `--query`, `--author`, `--limit`, `--min` |86| `uteke room summary <ID>` | Topic clustering summary | |87| `uteke room document <ID>` | Generate structured document from room | |88| `uteke room delete <ID>` | Delete room (memories preserved) | `--confirm` |8990### Pinning & Importance9192| Command | Description |93|---------|-------------|94| `uteke pin <ID>` | Pin a memory (never decays) |95| `uteke unpin <ID>` | Unpin a memory |96| `uteke importance` | Recalculate importance scores for all memories |97| `uteke orphans` | Find disconnected memories with low importance | `--threshold` (default 0.3), `--limit` (default 50) |9899### Maintenance100101| Command | Description | Key Options |102|---------|-------------|-------------|103| `uteke dream` | Full maintenance pipeline: lint → backlinks → dedup → orphans → compact → verify (dry-run first by default) | `--phases`, `--skip`, `--dry-run`, `--quiet` |104| `uteke lifecycle <cycle\|promote\|status>` | Safe lifecycle: soft-deprecate aged memories, promote back, status | `--namespace` |105| `uteke consolidate` | Merge near-duplicate memories | `--threshold` (default 0.90), `--dry-run` |106| `uteke prune` | Remove deprecated/expired memories | `--ttl` (default 30), `--dry-run` |107| `uteke timeline <ID>` | Show audit log events for a memory | `--limit` (default 20) |108109### Tags & Namespaces110111| Command | Description |112|---------|-------------|113| `uteke tags list` | List all tags with counts (`--by-count`) |114| `uteke tags rename <old> <new>` | Rename a tag across all memories |115| `uteke tags delete <tag>` | Delete a tag from all memories (`--confirm`) |116| `uteke namespace list` | List all namespaces with counts |117| `uteke namespace stats <name>` | Stats for a specific namespace |118| `uteke namespace switch <name>` | Set default namespace in config |119120### Memory Aging121122| Command | Description | Key Options |123|---------|-------------|-------------|124| `uteke aging status` | Hot/warm/cold/never-accessed breakdown | |125| `uteke aging preview` | Preview stale memories | `--older-than-days` (default 180), `--max-access-count` (default 1) |126| `uteke aging cleanup` | Delete aged memories | `--older-than-days`, `--max-access-count`, `--yes` |127128### Health, Stats & Data129130| Command | Description |131|---------|-------------|132| `uteke stats` | Memory store statistics + tier breakdown |133| `uteke doctor` | Full health check: DB, index, embedding model, consistency |134| `uteke verify` | Compare DB count vs vector index count |135| `uteke verify-checksums` | Verify binary integrity against SHA256 checksums |136| `uteke repair` | Rebuild vector index from SQLite |137138> **Stale-index symptom (pitfall 0g):** a memory is recallable via139> `--strategy fts5` but missing under the default fusion/hybrid — that is a140> vector-index desync, not data loss. Run `uteke verify`, then `uteke repair`.141> On uteke-serve, use `POST /verify` / `POST /repair` (HTTP) or the142> `uteke_verify` / `uteke_repair` MCP tools — no restart needed.143> Run `verify` after every serve upgrade (#1245 class: CLI upgraded, serve left144> behind → index written by the old binary reads as mismatched).145>146> **Search strategy guide — filters, not silos:**147> - `namespace` = agent/workspace identity — pass it explicitly on recall.148> - `room` = collaborative discussion context (`uteke room recall`).149> - `tags` (e.g. `project:<repo>`) = the primary project filter.150> - Strategies: `fusion` (default), `hybrid` (RRF vector+FTS5), `fts5`151> (keyword — best for short 1–3 word queries and exact terms), `vector`152> (pure semantic), `graph`. Scores are rank-based (RRF), not cosine —153> don't threshold them like similarity; use `recall --explain` for the154> real vector similarity.155> - Prefer 2–3 core keywords: FTS5 AND-matches all tokens, long natural156> sentences can zero out the keyword arm.157158### Import / Export / Bench159160| Command | Description |161|---------|-------------|162| `uteke export [FILE]` | Export to JSONL (no embeddings). Default: stdout |163| `uteke import [FILE]` | Import from JSONL/Markdown/text. Default: stdin |164| `uteke bench` | Performance benchmarks | `--counts`, `--json` |165166### Setup & Upgrade167168| Command | Description |169|---------|-------------|170| `uteke init --agent <TYPE>` | Initialize integration (pi/claude/cursor/opencode/hermes) |171| `uteke hook install <SHELL>` | Install shell hook (bash/zsh/fish) |172| `uteke completions <SHELL>` | Generate shell completions (bash/zsh/fish/powershell) |173| `uteke upgrade` | Check for updates and upgrade | `-y` (skip confirmation) |174| `uteke onboard` | Interactive setup wizard: detect install, pick agent, toggle features, write config | `--yes --agent <TYPE>` |175176## Architecture177178- **Storage:** SQLite (WAL mode) with namespace column + FTS5 virtual table179- **Vector index:** usearch persistent HNSW (768d, cosine similarity)180- **Hybrid search:** RRF (k=60) merges vector + FTS5 results; graph strategy adds graph-signal reranking181- **Fusion (default since 0.16.0):** weighted RRF of the vector and hybrid rankings — LongMemEval 500Q R@5 0.946182- **Embedding:** ONNX EmbeddingGemma Q4 (768d), auto-downloaded183- **Tiered memory:** Hot (<7d, +0.1 boost), Warm (<30d), Cold (>30d)184- **Schema versioning:** Integer counter, auto-migration on upgrade185- **Zero unsafe code** (`unsafe_code = "forbid"`)186- **Project-scoped stores:** `uteke --store .uteke remember "..."`187188## Usage Patterns189190### Session lifecycle191```bash192uteke recall "project architecture decisions" --namespace pi-agent193uteke remember "Use WAL mode for concurrent reads" --tags architecture,db --entity db-layer194uteke recall "last session state" --namespace pi-agent195```196197### Metadata-enriched storage198```bash199uteke remember "Deploy staging to AWS us-east-1" \200 --tags deploy,aws --entity staging-server --category infrastructure \201 --source "meeting-notes.md" --source-type file202```203204### Time-travel queries205```bash206uteke recall "auth flow" --at 2026-06-01T12:00:00Z207uteke list --at 2026-06-01T12:00:00Z208```209210### Graph-enhanced recall211```bash212uteke recall "database design" --strategy graph --related --depth 2213uteke graph neighbors "auth-service" --depth 3214uteke graph path "api-gateway" "database"215```216217### Document wiki218```bash219uteke doc create architecture/overview --title "Architecture Overview" --file overview.md --parent docs220uteke doc search "authentication" --mode hybrid221uteke doc list --tree222```223224### Room collaboration225```bash226uteke remember "Decision: use PostgreSQL" --room design-review --author alice227uteke room recall design-review --query "database"228uteke room summary design-review229```230231### Programmatic (JSON)232```bash233uteke recall "auth flow" --json --limit 3234uteke stats --json235uteke list --tag architecture --json --limit 50236```237238### Maintenance pipeline239```bash240uteke dream # Full pipeline241uteke dream --phases lint,verify --dry-run # Selective, safe242uteke importance # Recompute scores243uteke orphans --threshold 0.2 # Find disconnected244```245246## Project-Aware Memory (MANDATORY)247248**Always tag memories with `project:<name>` when working in a project.** This prevents noise when recalling — you only see memories relevant to the current project.249250### How to detect the project name2512521. From `workdir` / `cwd` — extract the repo folder name:253 - `/home/user/repos/bond/` → `project:bond`254 - `/home/user/repos/uteke/` → `project:uteke`255 - `/home/user/repos/my-saas-app/` → `project:my-saas-app`2562. From file paths mentioned in the conversation2573. From the project name the user mentions258259### Rules260261| Rule | Details |262|------|---------|263| **REMEMBER** | Always include `project:<name>` in `--tags` when the memory is project-specific |264| **RECALL** | Always include `--tags project:<name>` to scope recall to the current project |265| **NO PROJECT** | If the conversation is not about any specific project (e.g., general chat), do NOT add a `project:` tag |266| **TAG FORMAT** | Always lowercase: `project:bond`, `project:uteke` (not `project:Bond`) |267268### Examples269270```bash271# Working on the "bond" project272uteke recall "auth flow" --tags project:bond273uteke remember "JWT rotation implemented with refresh tokens" --tags project:bond,decision,auth274uteke remember "DB schema uses UUID v7 for primary keys" --tags project:bond,architecture,db275276# Working on the "uteke" project277uteke recall "vector index corruption" --tags project:uteke278uteke remember "Fixed usearch rebuild race condition" --tags project:uteke,bugfix,index279280# General conversation — no project tag281uteke remember "User prefers concise responses" --tags preference282283# Cross-project recall (explicitly requested)284uteke recall "shared auth pattern" --tags project:bond,project:corin285```286287### Why this matters288289Without project tags, memories from all projects mix together. When you recall "fix auth bug" while working on project Bond, you might get results from project Corin's auth system — causing confusion and wasted context. Project tags ensure recall is scoped and noise-free.290291## When to Use292293| Trigger | Action |294|---------|--------|295| Before starting work | `uteke recall "<project context>" --tags project:<name>` |296| After making decisions | `uteke remember "<decision>" --tags project:<name>,<other tags>` |297| Important documents | `uteke doc create <slug> --file <path> --parent <slug>` |298| Collaborative decisions | `uteke remember "..." --room <room> --author <name>` |299| Memory feels stale | `uteke dream` or `uteke importance` |300| Index feels corrupt | `uteke doctor` → `uteke repair` |301302## Hermes Auto-Recall Plugin303304The `uteke-memory` plugin registers a `pre_llm_call` hook that automatically305recalls relevant memories on every turn and injects them into the user message.306No shell hook, no daemon required (subprocess transport). Supports HTTP transport307to `uteke-serve` for container deployments.308309```bash310# Generate and install the plugin311uteke init --agent hermes312# → writes to ~/.hermes/plugins/uteke-memory/313314# Enable in config.yaml315# plugins:316# enabled:317# - uteke-memory318```319320Config via `~/.hermes/uteke.json` or env vars:321`UTEKE_BIN`, `UTEKE_NAMESPACE`, `UTEKE_SERVER_URL`, `UTEKE_TOKEN`,322`UTEKE_RECALL_LIMIT` (default 5), `UTEKE_RECALL_MIN_SCORE` (default 0.40).323324## Server Mode (uteke-serve)325326HTTP daemon with REST API for all operations + monitoring/maintenance endpoints.327328```bash329uteke-serve --port 8767330# CLI auto-routes to server when running: ~42ms recall vs ~3s cold start331```332333Endpoints mirror CLI commands (e.g., `POST /remember`, `POST /recall`). Supports read-only API tokens for restricted access.