Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
2a394e5
fix(docs): standardize recall latency to ~45ms
ajianaz Aug 11, 2026
e381b17
Merge pull request #999 from codecoradev/fix/docs-recall-latency-30ms…
ajianaz Aug 11, 2026
cc8a69b
chore: harden .gitignore + restructure repo for public safety
ajianaz Aug 13, 2026
c80655a
feat: hybrid as default recall strategy + import fixes (#1005, #1014)…
ajianaz Aug 13, 2026
4a56cac
perf: Phase 2 — skip update check in batch mode, pre-truncate embeddi…
ajianaz Aug 13, 2026
20a0455
feat: Phase 3 — lifecycle/deprecated, memory tools guide, source prov…
ajianaz Aug 13, 2026
6403f01
feat: scene-segmented extraction with priority scoring (#1009) (#1018)
ajianaz Aug 13, 2026
af0e500
chore: bump version to 0.14.0 (#1019)
ajianaz Aug 13, 2026
87a0280
fix: crates.io publish race condition + uteke-mcp metadata (#1021)
ajianaz Aug 14, 2026
5e063e2
fix(ci): switch deploy-website from npm to bun (#1022)
ajianaz Aug 14, 2026
4aea7c4
feat(test): adopt cargo-mutants for mutation testing (#1023)
ajianaz Aug 14, 2026
5441eab
fix(chunker): heading duplication + multibyte infinite loop; 40 mutat…
ajianaz Aug 14, 2026
6a1ec8e
chore: bump version to 0.14.1 (#1025)
ajianaz Aug 14, 2026
b98f579
fix(cli): uteke-cli crates.io publish failure + release verify step (…
ajianaz Aug 14, 2026
6e4dac1
chore: bump version to 0.14.2 (#1031)
ajianaz Aug 14, 2026
2253e07
ci(release): reject stale RELEASE_NOTES.md (#1033)
ajianaz Aug 14, 2026
9d3ad3a
fix: HTTP & MCP recall strategy — default hybrid, loud validation (#1…
ajianaz Aug 15, 2026
76d24b5
chore: bump version to 0.14.3 (#1039)
ajianaz Aug 15, 2026
c2d85de
fix(ci): release notes heredoc executed installer on runner — use tem…
ajianaz Aug 15, 2026
fdc0c68
docs: sync stale version refs, roadmap v0.13–v0.14, merge comparison …
ajianaz Aug 17, 2026
3780a3e
docs(agent): Critical Rule #14 — explicit approval before execution (…
ajianaz Aug 17, 2026
f5029a3
test: use ORT_LIB_NAME in find_ort_in_dir exact-match test (#1054) (#…
ajianaz Aug 17, 2026
de17609
chore: switch ID generation new_v4 → now_v7 (#1058) (#1060)
ajianaz Aug 17, 2026
ec23866
fix: soft-forgotten memories leak into list, search, and doctor count…
ajianaz Aug 17, 2026
8451a80
fix: search_content(None) coerced to default namespace — cross-namesp…
ajianaz Aug 17, 2026
5b8ec19
fix: recall cache hit skips salience/recency boosts — cold/warm score…
ajianaz Aug 17, 2026
021f22f
fix: /export drops namespace attribution + deprecated-row delta undoc…
ajianaz Aug 17, 2026
f6337fc
fix(mcp): uteke_dream destructive defaults — dry-run first, scope or …
ajianaz Aug 17, 2026
0a6331d
feat(mcp): enrich tool outputs agents need — stats tiers/namespaces, …
ajianaz Aug 17, 2026
faaf7f3
feat(mcp): uteke_get + uteke_update tools; short-ID resolution for al…
ajianaz Aug 17, 2026
b8c695e
feat: structural export — full-store round-trip (rooms, graph, edges,…
ajianaz Aug 17, 2026
33fad47
feat: supersession workflow — mark stale decisions superseded, flagge…
ajianaz Aug 17, 2026
db7299a
ci: add source-branch-check — PRs into main must come from develop (#…
ajianaz Aug 19, 2026
5983654
chore: bump version to 0.15.0 (#1073)
ajianaz Aug 19, 2026
072e188
ci: source-branch-check allows chore/release-* release branches (#1075)
ajianaz Aug 19, 2026
2102724
ci: bump actions/download-artifact v4 -> v8 (Node 24) (#1080)
ajianaz Aug 19, 2026
2076bc0
fix(core): structural import silently dropped room_documents + harden…
ajianaz Aug 19, 2026
38a5db8
fix(ci): skip CLA check for bots (dependabot, renovate, github-action…
ajianaz Aug 20, 2026
0dd4592
feat(core): add author_type (human|agent) to memory records (#1084)
ajianaz Aug 24, 2026
0ef1854
fix(server): wire 'at' time-travel param into /room/recall (#1085)
ajianaz Aug 24, 2026
d6ff6bb
docs(server): document deprecation time-travel limitation (#1086) (#1…
ajianaz Aug 24, 2026
bca7666
feat(core): room semantic segmentation (LLM-free, #1088) (#1090)
ajianaz Aug 25, 2026
1a61919
feat(core): expose semantic segments in room_summary (#1088) (#1091)
ajianaz Aug 25, 2026
5052c32
feat(core): segment-level consolidation planner, measure-only (#1088)…
ajianaz Aug 25, 2026
5ab4633
feat(core): provenance trust policy for consolidation (#1089) (#1093)
ajianaz Aug 25, 2026
f6bdb84
feat(core): LLM consolidation executor reusing extraction setup (#108…
ajianaz Aug 25, 2026
0c3f89e
feat: wire consolidation pipeline into core, CLI, and HTTP (#1088) (#…
ajianaz Aug 25, 2026
c1bba22
chore(docs): regenerate api-reference via docgen (#1095 follow-up) (#…
ajianaz Aug 25, 2026
9bc82c4
feat(core): vecq pure-Rust vector backend behind feature flag (#1099)
ajianaz Aug 26, 2026
17e2f91
fix(core): track deprecated_at for correct time-travel recall (#1086)…
ajianaz Aug 26, 2026
13b1d6d
chore: remove embed_cache.db artifact and ignore it (#1101)
ajianaz Aug 26, 2026
e7c127e
feat: per-pair dedup control via POST /consolidate/pair (#1076) (#1102)
ajianaz Aug 26, 2026
f07dfef
fix(ci): keep v prefix in release notes download table + pinned insta…
ajianaz Aug 26, 2026
19a1fe1
feat(server): add --version/-V flag to uteke-serve (#1044) (#1104)
ajianaz Aug 26, 2026
72fd7d9
fix(cli): honor UTEKE_HOME as store path override (#1105) (#1107)
ajianaz Aug 26, 2026
1a081e2
fix: echo author_type in remember responses + CLI --author-type flag …
ajianaz Aug 26, 2026
3f0cf32
fix(core): repair() no longer evicts document chunk vectors from inde…
ajianaz Aug 26, 2026
27a2b4f
fix(build): vecq binaries now buildable via forwarded backend feature…
ajianaz Aug 26, 2026
b4f0b8a
fix(core): backend-aware index filename, doctor label, forget --confi…
ajianaz Aug 26, 2026
668ed6c
fix(core): verify/doctor count doc chunks on DB side, no false MISMAT…
ajianaz Aug 26, 2026
9c1979e
fix(cli): repair report compares against memories + chunks (#1117)
ajianaz Aug 26, 2026
46e1c47
test(longmemeval): fast-eval foundation — datasets + Modal harness + …
ajianaz Aug 27, 2026
e65f36a
test(longmemeval): temporal date-window boost (#1119) (#1126)
ajianaz Aug 27, 2026
ac951f7
test(longmemeval): MMR diversity rerank flag + replay recording (#112…
ajianaz Aug 27, 2026
4e32746
fix(longmemeval): dataset-tagged volume paths + qid-set cache validat…
ajianaz Aug 27, 2026
9cb7cbb
fix(core): make sha2 non-optional — no-default-features profile compi…
ajianaz Aug 28, 2026
e27dbe5
feat(core): Fusion as default recall strategy + benchmark tooling (v0…
ajianaz Aug 28, 2026
c6cf669
feat(bench): UTEKE_GIT_REF — build validation binary from exact SHA i…
ajianaz Aug 29, 2026
bfbc296
fix(bench): install build-essential for git-ref image build (linker c…
ajianaz Aug 29, 2026
14b37ab
docs(bench): pure-default 500Q validation — fusion 0.946 R@5 (+9.2 vs…
ajianaz Aug 29, 2026
8a6d48f
docs: fusion weights = internal hasil tuning, bukan bagian kontrak pu…
ajianaz Aug 29, 2026
8dc6c4a
docs(bench): LongMemEval-S 500Q results page — dual-metric + comparis…
ajianaz Aug 29, 2026
bfed150
chore(release): CHANGELOG 0.16.0 — full-release validation numbers + …
ajianaz Aug 29, 2026
468f842
fix(core): repair --reembed can now repair NULL-embedding rows (#1146…
ajianaz Aug 29, 2026
7facdeb
fix(ci): CLA check skips bot PRs with exact allowlist (#1132) (#1148)
ajianaz Aug 29, 2026
18ff623
fix(cli): repair --reembed report reflects final index state (#1149) …
ajianaz Aug 29, 2026
da46d40
chore(ci): bump actions/github-script from v7 to v9 (#1151)
ajianaz Aug 29, 2026
febee27
test(cli): resolve_namespace precedence — flag > env > config > defau…
ajianaz Aug 29, 2026
512f379
test(cli,core): env parsing guards + validate_input_with_limits bound…
ajianaz Aug 29, 2026
d03375c
test(core): ensure_embedder branch coverage — unknown/custom/openai-m…
ajianaz Aug 29, 2026
978003f
test(cli): cover TOML helpers — migrate_content, global_config_path, …
ajianaz Aug 29, 2026
a0a400d
docs: refresh documentation for 0.16.0 — fusion default, updated benc…
ajianaz Aug 29, 2026
92b485b
chore: sync main back into develop after #1158 docs carry (#1159)
ajianaz Aug 29, 2026
a83987d
docs(contributing): require CLA + state contributions are unpaid (#1162)
ajianaz Aug 30, 2026
cf49be8
deps(core): bump vecq-core 0.1.1 -> 0.3.0, adopt 4-bit + residual pro…
ajianaz Aug 31, 2026
10ddcc4
fix(core): feature-aware embedder default in open() + open_with_backe…
ajianaz Aug 31, 2026
75b72ff
feat(core): runtime-selectable vector engine (usearch + vecq in one b…
ajianaz Aug 31, 2026
c0b92cb
feat(build): dual-engine default — official binaries ship usearch + v…
ajianaz Aug 31, 2026
652fca6
docs(bench): independent reproduction results + surfaced headline num…
ajianaz Sep 1, 2026
4dd7c54
chore(deps): bump flate2 from 1.1.9 to 1.1.10 (#1175)
dependabot[bot] Sep 3, 2026
39f877a
chore(deps): bump which from 8.0.5 to 8.0.6 (#1176)
dependabot[bot] Sep 3, 2026
2cc0474
chore(deps): bump usearch from 2.26.0 to 2.26.1 (#1177)
dependabot[bot] Sep 3, 2026
51707f3
chore(deps): bump uuid from 1.24.0 to 1.26.0 (#1178)
dependabot[bot] Sep 3, 2026
bd2288c
fix(room): honest room_delete reporting across CLI/HTTP/MCP — count u…
ajianaz Sep 3, 2026
cbccebb
fix(server): resolve memory IDs to graph nodes in /graph/edge endpoin…
ajianaz Sep 5, 2026
0f75a96
feat(api): namespace management — move, rename/merge, delete with str…
ajianaz Sep 5, 2026
16f1186
feat(core): provenance data model — source hash, event actor/evidence…
ajianaz Sep 5, 2026
841e990
feat: contradiction resolution ledger + undo across CLI/HTTP/MCP (#11…
ajianaz Sep 5, 2026
d0243a7
feat: explain recall — ranking signals on CLI, HTTP, and MCP (#1160) …
ajianaz Sep 6, 2026
8a28aef
fix: graph excludes stale memory nodes + readable node labels (#1189 …
ajianaz Sep 6, 2026
9bd004d
feat: /list pagination metadata envelope (#1188) (#1191)
ajianaz Sep 6, 2026
29d50d7
feat: contradiction benchmark segment + uteke supersede CLI (#1172 F3…
ajianaz Sep 6, 2026
b15c2c4
chore: release 0.17.0 (#1194)
ajianaz Sep 6, 2026
591f64d
chore: post-release sync main→develop + AGENTS.md (0.17.0) (#1198)
ajianaz Sep 6, 2026
100c3e2
docs: AGENTS.md points to codecora-workflow-standard room as workflow…
ajianaz Sep 6, 2026
c399678
feat(api): room rename, room update, memory room-move + CLI memory up…
ajianaz Sep 7, 2026
2da9693
docs(benchmarks): surface benchmark proof in README, fix stale versio…
ajianaz Sep 9, 2026
5ad4ce7
docs(benchmarks): restructure into internal/longmemeval/locomo, commi…
ajianaz Sep 9, 2026
5300c88
fix(core): verify dedup candidates are live before skipping insert (#…
ajianaz Sep 9, 2026
759dd13
docs(readme): benchmark-first restructure + self-service reproduction…
ajianaz Sep 9, 2026
fa38c48
bench(locomo): full 1536-QA results on v0.17.0 — fusion wins strict f…
ajianaz Sep 9, 2026
cfe217e
bench(longmemeval): v0.17.0 re-validation complete — headline numbers…
ajianaz Sep 9, 2026
05457d1
docs(readme): align headline numbers with owner decisions — 45ms late…
ajianaz Sep 9, 2026
d2aa018
docs(readme): fix badge anchor + humanizer/copywriting pass (zero em …
ajianaz Sep 9, 2026
2fbbd7d
docs(readme): embed v0.17 revalidation chart in the benchmark section…
ajianaz Sep 9, 2026
d1f2144
docs: sync Indonesian README + docs with v0.17.0 benchmark decisions …
ajianaz Sep 9, 2026
8657dbb
docs: document namespace management (#1181) and sync MCP tool table w…
ajianaz Sep 10, 2026
42d1e66
fix(benchmarks): correct LoCoMo category label mapping (official 1=si…
ajianaz Sep 10, 2026
b4d3991
fix(install): copy bundled ORT libs on binary install (#1221)
KazamiHazaki Sep 11, 2026
3fe6a6b
fix(ci): make cla-check work for fork PRs (#1224)
ajianaz Sep 11, 2026
7924453
chore(deps): bump usearch from 2.26.1 to 2.26.2 (#1204)
dependabot[bot] Sep 11, 2026
4e17273
chore(deps): bump tokenizers from 0.23.1 to 0.23.2 (#1206)
dependabot[bot] Sep 11, 2026
2804b55
chore(deps): bump dirs from 6.0.0 to 7.0.0 (#1207)
dependabot[bot] Sep 11, 2026
fd83959
fix(ci): skip branch naming and PR description checks for bot PRs (#1…
ajianaz Sep 11, 2026
b9bb420
chore(deps): bump toml from 1.1.4+spec-1.1.0 to 1.1.5+spec-1.1.0 (#1205)
dependabot[bot] Sep 11, 2026
f4bdae7
fix(cli): default recall min_score 0.3 -> 0.0 (#1223) (#1228)
ajianaz Sep 11, 2026
3b93b34
benchmarks: preserve AMB (agent-memory-benchmark) run kit (#1226) (#1…
ajianaz Sep 11, 2026
a6f1e5e
chore: revert "benchmarks: preserve AMB run kit (#1230)" (#1235)
ajianaz Sep 11, 2026
6ffd8db
feat(ingest): --timestamp date anchors for remember and text import (…
ajianaz Sep 12, 2026
c7329ab
test(recall): payload conformance — full payload contract, no stubs (…
ajianaz Sep 14, 2026
875a68a
chore: bump version 0.17.0 -> 0.18.0 (#1241)
ajianaz Sep 14, 2026
14da6d0
chore(release): v0.18.0 - changelog, docs, version refs (#1242)
ajianaz Sep 14, 2026
be8e99d
docs: sync remaining version refs to v0.18.0 (#1247)
ajianaz Sep 14, 2026
e5393e0
chore(deps): bump rustls to 0.23.45 for RUSTSEC-2026-0285 (#1250)
ajianaz Sep 15, 2026
d36e0c8
docs(changelog): add Contributors section to 0.18.0 (KazamiHazaki #12…
ajianaz Sep 15, 2026
0587024
ci(release): auto-append external contributor credits to release note…
ajianaz Sep 15, 2026
f914300
fix(export): keep junction dumps FK-consistent with soft-deleted memo…
ajianaz Sep 15, 2026
477ac67
fix(server): reject unknown keys in remember payloads with a 400 (#1254)
ajianaz Sep 15, 2026
2a2160b
fix(cli): upgrade companion binaries and ORT libs, normalize version …
ajianaz Sep 15, 2026
ae144a8
feat(cli): one-line footer after successful uteke doctor (#1256)
ajianaz Sep 15, 2026
564896d
fix(server): minimal health payload for tokenless requests (#1257)
ajianaz Sep 15, 2026
12cac65
chore(release): v0.18.1 - version bump, changelog, docs sync (#1259)
ajianaz Sep 15, 2026
8e57e1c
chore(deps): bump toml from 1.1.5+spec-1.1.0 to 1.1.6+spec-1.1.0 (#1263)
dependabot[bot] Sep 16, 2026
dc9c8d6
chore(deps): bump uuid from 1.26.0 to 1.26.1 (#1264)
dependabot[bot] Sep 16, 2026
c0573a4
docs: replace self-hosted star chart with star-history.com embed (#1265)
ajianaz Sep 16, 2026
e9f9fa5
fix: doc list honors --namespace on CLI, HTTP, and MCP (#1268) (#1269)
ajianaz Sep 17, 2026
8ccc600
fix: unified recall scopes docs to namespace, reports honest scores (…
ajianaz Sep 17, 2026
82caf9b
feat: expose verify/repair over HTTP and MCP (#1266) (#1272)
ajianaz Sep 17, 2026
e35ad95
feat: ship SKILL.md in version lockstep with the CLI (#1267) (#1274)
ajianaz Sep 17, 2026
9bdccbd
docs: point AGENTS.md at the written CORE/LAB contract (uteke doc kon…
ajianaz Sep 18, 2026
34fbc85
feat: tier-tag the API registry and generate the CORE contract list (…
ajianaz Sep 18, 2026
d09b2f6
fix: report embedding write failures honestly across remember surface…
ajianaz Sep 18, 2026
e2035d1
chore(release): v0.18.2 — backport unified doc recall fix (#1270) (#1…
ajianaz Sep 18, 2026
320ce62
chore(release): complete v0.18.2 metadata lost in #1278 squash (#1279)
ajianaz Sep 18, 2026
4cc1c13
feat(core): audit-grade timeline — history survives forget, deprecate…
ajianaz Sep 18, 2026
be905f1
chore(docs): evergreen README hero banner + install URL consistency (…
ajianaz Sep 23, 2026
11730c2
feat(recall): budgeted context pack — --pack on CLI, HTTP, and MCP (#…
ajianaz Sep 23, 2026
d9b29ac
chore(deps): bump clap_complete from 4.6.9 to 4.6.11 (#1285)
dependabot[bot] Sep 24, 2026
3298980
chore(deps): bump vecq-core from 0.3.0 to 0.3.1 (#1286)
dependabot[bot] Sep 24, 2026
7632a85
chore(deps): bump clap from 4.6.6 to 4.6.7 (#1287)
dependabot[bot] Sep 24, 2026
8e138ad
fix(api): honor namespace filter on GET /room/memories (#1288) (#1290)
ajianaz Sep 28, 2026
fbfed5f
feat(api): add GET /routes machine-readable endpoint registry (#1289)…
ajianaz Sep 28, 2026
a338176
chore: release v0.19.0 — version bump + CHANGELOG (#1292)
ajianaz Sep 28, 2026
29c9222
docs: remove non-existent Homebrew tap from install options (#1294)
ajianaz Sep 29, 2026
bf4b153
docs(benchmark): commit raw v0.19.0 500Q results (default-500q-v0.19.…
ajianaz Sep 29, 2026
5efe695
docs(benchmark): re-anchor headline to v0.19.0 raw (98.2% any@5) + th…
ajianaz Sep 29, 2026
4a7606c
docs(benchmark): fix v0.19.0 chart bottom spacing (tick gap + divider…
ajianaz Sep 29, 2026
d39a7b3
docs: sync mcp.md + architecture.md with 0.19.0 reality (#1298)
ajianaz Sep 29, 2026
aeee520
feat(integrations): committed Hermes plugin package + drift guard (#1…
ajianaz Oct 1, 2026
6307727
fix(server): honor explicit memory type on plain /remember (#1303)
ajianaz Oct 3, 2026
c545566
chore(deps): bump thiserror from 2.0.20 to 2.0.21 (#1299)
dependabot[bot] Oct 3, 2026
c862793
docs(branding): replace Zero cloud tagline with local-first wording (…
ajianaz Oct 3, 2026
2ad9e5c
fix(upgrade): make 302-redirect primary path actually work for latest…
ajianaz Oct 5, 2026
9c06b22
fix(upgrade): honor GITHUB_TOKEN in the API fallback (#1309)
ajianaz Oct 5, 2026
d9e3164
fix(upgrade): harden temp dir, download timeouts, checksum match, and…
ajianaz Oct 5, 2026
8cb2d47
ci(release): auto-update homebrew-tap formula on new release (#1311)
ajianaz Oct 5, 2026
fd6c0c1
docs: add Homebrew install option (#1312)
ajianaz Oct 5, 2026
f416076
chore(release): v0.19.1 - version bump, changelog, docs sync (#1313)
ajianaz Oct 5, 2026
31f6d53
fix: keep index on lock timeout, release server slot on panic, send C…
ajianaz Oct 7, 2026
8d225ed
security: untrusted project config, CORS off by default, list limit c…
ajianaz Oct 7, 2026
d47bdb9
docs(skill): refresh uteke-memory skill and add command coverage test…
ajianaz Oct 7, 2026
e49ce26
chore(deps): bump usearch from 2.26.2 to 2.26.3 (#1317)
dependabot[bot] Oct 7, 2026
1c1cb5a
chore(deps): bump uuid from 1.26.1 to 1.27.0 (#1316)
dependabot[bot] Oct 7, 2026
9d6d578
fix(upgrade): retry ETXTBSY when verifying the freshly copied binary …
ajianaz Oct 7, 2026
a1b6e07
fix(cli): checksum --json exit code, merge lifecycle/aging/top-level …
ajianaz Oct 7, 2026
12fe033
fix(core): FTS5 columns, unix index lock, pinned bulk delete, doc_sea…
ajianaz Oct 7, 2026
81189ef
refactor(core): share one column list between memory SELECTs and row_…
ajianaz Oct 7, 2026
6e00da0
refactor(core): index_sync module owns insert/remove/persist policy (…
ajianaz Oct 7, 2026
6aa7b37
refactor(core): route remaining index writes through index_sync (#1348)
ajianaz Oct 7, 2026
6d0b778
refactor(core): document upsert/update as embed-then-commit (#1350)
ajianaz Oct 7, 2026
b92f139
fix(core): correct documents_fts update/delete triggers for external-…
ajianaz Oct 7, 2026
9af3f07
refactor: shared config layer resolution in uteke-core (#1354)
ajianaz Oct 7, 2026
6748e47
docs(skill): add namespace/room/tag conventions to uteke-memory skill…
ajianaz Oct 7, 2026
c06e549
fix(mcp): add full_ids option so UUIDv7 id prefixes can be disambigua…
ajianaz Oct 7, 2026
efafe94
fix(server,mcp): harden /import limit, /mcp body+CORS, and resolve_id…
ajianaz Oct 7, 2026
8c25563
security(server): validate Host header to block DNS rebinding (#1360)
ajianaz Oct 7, 2026
05ce8b2
perf(core): release the embedder lock between document chunks (#1323)…
ajianaz Oct 7, 2026
bab1767
fix(core): verify index/.keys sidecar consistency on load (#1325) (#1…
ajianaz Oct 7, 2026
07f5328
perf(core): batch vector-index saves instead of rewriting per write (…
ajianaz Oct 7, 2026
c0b713d
perf(core): compact the vecq index when dead rows pass 25% (#1364)
ajianaz Oct 8, 2026
b1056e4
fix(graph): serve memory_edges in GET /graph; fix FK violations in MC…
ajianaz Oct 8, 2026
a1d5dc2
chore(bench): fix fast-eval id path; make Modal model dir and ORT rel…
ajianaz Oct 8, 2026
77f4bf9
fix(core): edges to deprecated memories no longer count in graph rera…
ajianaz Oct 8, 2026
4bd5592
perf(core): remember() no longer scans the namespace or holds the ind…
ajianaz Oct 8, 2026
686b73c
fix(core): documents has_children, legacy-path move, tag rename dupes…
ajianaz Oct 8, 2026
52c685d
fix(cli): recall flags via server, list filters, doc tree/export, upg…
ajianaz Oct 8, 2026
75a5324
fix(core): re-parenting doc upsert carries the whole subtree (#1378)
ajianaz Oct 8, 2026
939ab56
chore(release): v0.20.0 - version bump, changelog, docs sync (#1379)
ajianaz Oct 8, 2026
2713cf0
chore(release): merge main into develop for v0.20.0 (develop side kep…
ajianaz Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 82 additions & 8 deletions .agents/skills/uteke-memory/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: "Persistent memory engine for AI agents via the uteke CLI — remem
# Uteke Memory Skill

Persistent memory engine for AI agents via the `uteke` CLI.
Version: **0.19.1** — 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.
Version: **0.20.0** — SQLite + HNSW vector index (usearch default, or vecq) + FTS5 hybrid search (RRF k=60); `fusion` (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. `unsafe_code = "forbid"` workspace-wide.

> This skill ships with each release — its version tracks the CLI version
> (a CI gate fails when they drift, see `skill-version-parity` test).
Expand All @@ -22,7 +22,7 @@ Version: **0.19.1** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `

| Flag | Description |
|------|-------------|
| `--store <PATH>` | Override store path (default: `~/.uteke`) |
| `--store <PATH>` | Override store path (default: `~/.codecora/uteke`) |
| `--namespace <NS>` | Multi-agent isolation (default: `"default"`) |
| `--json` | Machine-readable JSON output |
| `--verbose` | Debug logging |
Expand All @@ -34,10 +34,14 @@ Version: **0.19.1** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `
| 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 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), `--explain` (real vector similarity), `--budget`, `--pack`, `--strict`, `--enrich`, `--exclude-ids`, `--content-format`, `--no-salience`, `--no-recency` |
| `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 update <ID>` | Update a memory in place | `--content`, `--tags` (replaces set), `--importance`, `--pinned`, `--type` |
| `uteke context` | Project context summary (counts, top tags, recent activity) | `--namespace` |
| `uteke guide` | Print the agent-facing memory tools guide for system-prompt injection | |
| `uteke feedback <ID> <helpful\|unhelpful>` | Record usefulness (importance +0.05 / −0.10) | |
| `uteke forget <ID>` | Delete memory by ID, tag, tier, or all | `--tag`, `--cold`, `--all`, `--confirm` |

### Documents (Wiki / Knowledge Base)
Expand Down Expand Up @@ -79,13 +83,30 @@ Version: **0.19.1** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `
| Command | Description | Key Options |
|---------|-------------|-------------|
| `uteke room create <ID>` | Create a room | `--title` |
| `uteke room update <ID>` | Update title/description | `--title`, `--description` |
| `uteke room rename <OLD> <NEW>` | Rename a room (members and document links move too) | |
| `uteke room move-memory <MEMORY_ID>` | Move a memory between rooms, keeping link provenance | `--from`, `--to` |
| `uteke room add-document <ROOM> <SLUG>` | Link a document to a room | |
| `uteke room remove-document <ROOM> <SLUG>` | Unlink a document | |
| `uteke room list-documents <ROOM>` | List documents linked to a room | |
| `uteke room list-rooms <SLUG>` | List rooms that reference a document | |
| `uteke room consolidate <ID>` | Merge a room's memories into denser records (dry-run unless `--apply`; uses LLM calls) | `--apply`, `--max-calls` |
| `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` |

### Conflict Resolution

| Command | Description |
|---------|-------------|
| `uteke supersede <OLD> <NEW>` | Mark `OLD` superseded by `NEW` (resolves a contradiction) |
| `uteke contradictions list` | Resolution ledger: superseded-but-not-restored memories |
| `uteke contradictions undo <ID>` | Restore a superseded memory (undoes the pair) |
| `uteke provenance <ID>` | Full provenance report for a memory |

### Pinning & Importance

| Command | Description |
Expand Down Expand Up @@ -115,6 +136,9 @@ Version: **0.19.1** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `
| `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 |
| `uteke namespace move <ID> <NS>` | Move a memory to another namespace |
| `uteke namespace rename <FROM> <TO>` | Rename a namespace (merges if the target exists) |
| `uteke namespace delete <NAME>` | Delete with `--strategy refuse\|merge\|deprecate` (`--target` for merge, `--confirm` required) |

### Memory Aging

Expand All @@ -132,13 +156,15 @@ Version: **0.19.1** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `
| `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 |
| `uteke repair` | Rebuild vector index from SQLite (`--rebuild` deletes corrupt index files first, `--reembed` regenerates missing embeddings) |

> **Stale-index symptom (pitfall 0g):** a memory is recallable via
> **Stale-index symptom:** 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.
> A held index lock (another `uteke`/`uteke-serve` process) never deletes the
> index in builds after 0.19.1: the CLI falls back to an in-memory index instead.
> Run `verify` after every serve upgrade (#1245 class: CLI upgraded, serve left
> behind → index written by the old binary reads as mismatched).
>
Expand Down Expand Up @@ -175,13 +201,13 @@ Version: **0.19.1** — SQLite + usearch HNSW + FTS5 hybrid search (RRF k=60); `
## Architecture

- **Storage:** SQLite (WAL mode) with namespace column + FTS5 virtual table
- **Vector index:** usearch persistent HNSW (768d, cosine similarity)
- **Vector index:** usearch persistent HNSW (default) or vecq (quantized, no C++ dependency), 768d cosine. Select with `UTEKE_VECTOR_BACKEND=usearch|vecq` or `[vector] backend` in `uteke.toml`; switching engines on an existing store rebuilds the index from SQLite
- **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"`)
- **`unsafe_code = "forbid"`** at the workspace level
- **Project-scoped stores:** `uteke --store .uteke remember "..."`

## Usage Patterns
Expand Down Expand Up @@ -254,6 +280,14 @@ uteke orphans --threshold 0.2 # Find disconnected
- `/home/user/repos/my-saas-app/` → `project:my-saas-app`
2. From file paths mentioned in the conversation
3. From the project name the user mentions
4. If the project has a registry (a doc such as `uteke-project-registry`), use the
canonical name from it, resolving aliases (e.g. a folder `api-v2` that the
registry lists as `recruitment-api`).

**Never derive a tag from a generic folder name** (`development`, `projects`,
`documents`, `desktop`, `downloads`, `tmp`, `src`, `code`, `work`, `workspace`,
`repos`, or your home folder). Those are not projects; when `cwd` is one of them
and the conversation names no project, add no `project:` tag.

### Rules

Expand All @@ -262,7 +296,40 @@ uteke orphans --threshold 0.2 # Find disconnected
| **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`) |
| **TAG FORMAT** | Lowercase with hyphens only — no uppercase, underscores, or spaces: `project:bond`, `project:my-saas-app` |
| **HIERARCHY** | A component of a larger project carries two tags, the component and its parent (`project:samson-mobile` + `project:samson`): the component matches the folder name, the parent recalls the whole project |
| **NO GENERIC TAGS** | No tags from generic folder names, no tags that act as ids, no tags that mimic a field (use `--type`, not `qtype:`) |

## Namespace, Room and Tag Conventions

Keep the three axes distinct so recall stays filterable:

| Axis | Means | Rule |
|------|-------|------|
| **Namespace** | Workspace / whose area | Few and coarse (e.g. one per agent family or tool). Not one per project: project identity lives in the room and tags. Avoid `repo-*` / `project:*` namespaces. Do not keep writing to `default` once you have chosen real ones |
| **Room** | One project or discussion | One room per parent project named `<name>` (lowercase, hyphens; no `project:` / `repo-` prefix, no `-dev` suffix). Discussions `disc:<topic>`, research `riset:<topic>`. Always set `--title` |
| **Tag** | Search aid | `project:<name>` (registry names only), `tool:<name>` for items about a specific tool or agent (`tool:claude-code`), `agent:<role>` only for the origin of a multi-profile agent |

- **A room's namespace cannot be changed after creation** (#1352) and merging
namespaces does not relabel rooms: create the room in the right namespace
from the start.
- `uteke update --tags` **replaces** the whole tag set — read the memory first
and write back the merged list; there is no bulk add-tag operation.
- `uteke namespace rename` changes only the memories' namespace, not the `rooms` table.

### What to store

Store only what is worth recalling again: decisions with their reason, causes of
non-obvious bugs, gotchas, procedures — one fact per memory. Never store tokens,
passwords, or other credentials. Do not auto-save every prompt; automatic writers
produce noise and junk tags.

### Destructive cleanup needs the owner's go-ahead

Writing bulk changes (tag deletes, namespace merges/deletes, room deletes, memory
moves) is not reversible in general. Take a backup first (`uteke export`, plus a
map of ids before/after), do a dry run and a small pilot, and ask for explicit
confirmation per step. `uteke room delete` keeps the memories; `uteke forget` does not.

### Examples

Expand Down Expand Up @@ -330,3 +397,10 @@ uteke-serve --port 8767
```

Endpoints mirror CLI commands (e.g., `POST /remember`, `POST /recall`). Supports read-only API tokens for restricted access.

Security defaults (builds after 0.19.1):

- **Auth:** `--auth-token` / `UTEKE_AUTH_TOKEN` (admin) and `UTEKE_READ_ONLY_TOKEN`. When the CLI routes through the server (`[server] enabled = true`) it forwards `UTEKE_AUTH_TOKEN` as a bearer token, to loopback servers only.
- **CORS is off unless configured:** set `cors_origins` in `uteke.toml` / `--cors-origin`. `"*"` is an explicit opt-in — avoid it without auth.
- **Project config is not trusted for endpoints:** a `.uteke/uteke.toml` in the working directory cannot set `[server]`, `[extraction]`, embedding/extraction `base_url`, `endpoint_path`, `api_key`, `embedding.backend`, or `server.host/port` (set them in the global config). `UTEKE_TRUST_PROJECT_CONFIG=1` overrides this.
- List-style endpoints cap `limit` at 1000; `/extract` caps `max_facts` at 100.
Loading
Loading