hippo-memory 1.13.4 → 1.14.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.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/dist/api.d.ts +20 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +43 -4
  5. package/dist/api.js.map +1 -1
  6. package/dist/audit.d.ts +1 -1
  7. package/dist/audit.d.ts.map +1 -1
  8. package/dist/audit.js +1 -1
  9. package/dist/audit.js.map +1 -1
  10. package/dist/availability.d.ts +65 -0
  11. package/dist/availability.d.ts.map +1 -0
  12. package/dist/availability.js +94 -0
  13. package/dist/availability.js.map +1 -0
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +523 -484
  16. package/dist/cli.js.map +1 -1
  17. package/dist/mcp/server.d.ts.map +1 -1
  18. package/dist/mcp/server.js +41 -0
  19. package/dist/mcp/server.js.map +1 -1
  20. package/dist/memory.d.ts +10 -0
  21. package/dist/memory.d.ts.map +1 -1
  22. package/dist/memory.js +106 -4
  23. package/dist/memory.js.map +1 -1
  24. package/dist/server.d.ts.map +1 -1
  25. package/dist/server.js +1 -0
  26. package/dist/server.js.map +1 -1
  27. package/dist/src/api.js +43 -4
  28. package/dist/src/api.js.map +1 -1
  29. package/dist/src/audit.js +1 -1
  30. package/dist/src/audit.js.map +1 -1
  31. package/dist/src/availability.js +94 -0
  32. package/dist/src/availability.js.map +1 -0
  33. package/dist/src/cli.js +523 -484
  34. package/dist/src/cli.js.map +1 -1
  35. package/dist/src/mcp/server.js +41 -0
  36. package/dist/src/mcp/server.js.map +1 -1
  37. package/dist/src/memory.js +106 -4
  38. package/dist/src/memory.js.map +1 -1
  39. package/dist/src/server.js +1 -0
  40. package/dist/src/server.js.map +1 -1
  41. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  42. package/extensions/openclaw-plugin/package.json +5 -3
  43. package/openclaw.plugin.json +1 -1
  44. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -60,6 +60,7 @@ import * as predictionsModule from './predictions.js';
60
60
  import { computePlanningFallacyOutput } from './predictions.js';
61
61
  import { createHash } from 'node:crypto';
62
62
  import { detectAnchoring, hashQueryText, buildSessionKey, getOrCreateRing, appendRecall, snapshotRing, } from './recall-history.js';
63
+ import { detectAvailabilityBias } from './availability.js';
63
64
  // v0.33 / J1 — Module-level per-(tenant, session) recall-history ring map.
64
65
  // Each CLI process maintains its OWN Map; no IPC / no cross-process sharing
65
66
  // (plan v3 decision: per-pipeline rings, see docs/plans/2026-05-26-j1-anchoring-detector.md).
@@ -1106,6 +1107,27 @@ async function cmdRecall(hippoRoot, query, flags) {
1106
1107
  memory_id: cmdAnchoringHint.memoryId,
1107
1108
  });
1108
1109
  }
1110
+ // v1.13.x / J2 — CLI per-pipeline availability/recency-bias detector. Each
1111
+ // pipeline computes its own hint (this one against the CLI's returned top-K
1112
+ // and the full local+global candidate pool). Soft warning only. Gated by
1113
+ // HIPPO_AVAILABILITY=off, which short-circuits BEFORE the detect call so
1114
+ // disabled tenants pay zero work. Audit emission is pipeline-local, lockstep
1115
+ // with the anchoring emitCliAudit calls above. cmdAvailabilityHint is null on
1116
+ // the zero-result branch (topK < minReturned), so the splat is a no-op there.
1117
+ let cmdAvailabilityHint = null;
1118
+ if (process.env.HIPPO_AVAILABILITY !== 'off') {
1119
+ cmdAvailabilityHint = detectAvailabilityBias({
1120
+ topK: results.map((r) => ({ id: r.entry.id, created: r.entry.created })),
1121
+ pool: [...localEntries, ...globalEntries].map((e) => ({ id: e.id, created: e.created })),
1122
+ });
1123
+ if (cmdAvailabilityHint) {
1124
+ emitCliAudit(hippoRoot, 'recall_availability_detected', undefined, {
1125
+ recent_fraction: cmdAvailabilityHint.recentFraction,
1126
+ older_passed_over: cmdAvailabilityHint.olderCandidatesPassedOver,
1127
+ returned_count: cmdAvailabilityHint.returnedCount,
1128
+ });
1129
+ }
1130
+ }
1109
1131
  // v0.32 / J3.2 — auto-injection of reference-class baserate when the
1110
1132
  // CLI query carries a forward-prediction phrase AND a class matches.
1111
1133
  // cmdRecall runs its own pipeline (doesn't go through api.recall for
@@ -1213,6 +1235,7 @@ async function cmdRecall(hippoRoot, query, flags) {
1213
1235
  ...(cmdPlanningFallacyHint ? { planningFallacyHint: cmdPlanningFallacyHint } : {}),
1214
1236
  ...(cmdPlanningFallacyWatching ? { planningFallacyWatching: cmdPlanningFallacyWatching } : {}),
1215
1237
  ...(cmdAnchoringHint ? { anchoringHint: cmdAnchoringHint } : {}),
1238
+ ...(cmdAvailabilityHint ? { availabilityHint: cmdAvailabilityHint } : {}),
1216
1239
  };
1217
1240
  if (includeContinuity) {
1218
1241
  out.continuity = {
@@ -1230,6 +1253,13 @@ async function cmdRecall(hippoRoot, query, flags) {
1230
1253
  if (cmdAnchoringHint) {
1231
1254
  console.log(`[anchored_on: ${cmdAnchoringHint.memoryId}] ${cmdAnchoringHint.summary}`);
1232
1255
  }
1256
+ // v1.13.x / J2 — render availability/recency-bias hint below anchoring and
1257
+ // above the planning-fallacy hint. Soft warning; absent (env disabled or no
1258
+ // bias detected) is silent. Null on this zero-result branch anyway since
1259
+ // topK < minReturned, so this is effectively a no-op here; wired for parity.
1260
+ if (cmdAvailabilityHint) {
1261
+ console.log(`Availability bias (${cmdAvailabilityHint.recentCount}/${cmdAvailabilityHint.returnedCount} recent): ${cmdAvailabilityHint.summary}`);
1262
+ }
1233
1263
  // v0.32 / J3.2 — render hint BEFORE the no-memories message so the
1234
1264
  // calling agent sees its track record even when the query missed
1235
1265
  // every memory. Same single-line shape + JSON.stringify-safe phrase
@@ -1314,6 +1344,7 @@ async function cmdRecall(hippoRoot, query, flags) {
1314
1344
  ...(cmdPlanningFallacyHint ? { planningFallacyHint: cmdPlanningFallacyHint } : {}),
1315
1345
  ...(cmdPlanningFallacyWatching ? { planningFallacyWatching: cmdPlanningFallacyWatching } : {}),
1316
1346
  ...(cmdAnchoringHint ? { anchoringHint: cmdAnchoringHint } : {}),
1347
+ ...(cmdAvailabilityHint ? { availabilityHint: cmdAvailabilityHint } : {}),
1317
1348
  };
1318
1349
  if (includeContinuity) {
1319
1350
  jsonOut.continuity = {
@@ -1343,6 +1374,13 @@ async function cmdRecall(hippoRoot, query, flags) {
1343
1374
  console.log(`[anchored_on: ${cmdAnchoringHint.memoryId}] ${cmdAnchoringHint.summary}`);
1344
1375
  console.log();
1345
1376
  }
1377
+ // v1.13.x / J2 — render availability/recency-bias hint below anchoring and
1378
+ // above the planning-fallacy hint. Soft warning; absent (env disabled or no
1379
+ // bias detected) is silent.
1380
+ if (cmdAvailabilityHint) {
1381
+ console.log(`Availability bias (${cmdAvailabilityHint.recentCount}/${cmdAvailabilityHint.returnedCount} recent): ${cmdAvailabilityHint.summary}`);
1382
+ console.log();
1383
+ }
1346
1384
  // v0.32 / J3.2 — render planning-fallacy hint ABOVE the result list so
1347
1385
  // the agent sees its track record before scrolling. Hint absent (env
1348
1386
  // disabled or no forward-claim match) is silent. detectedPhrase is
@@ -3830,166 +3868,166 @@ const HOOKS = {
3830
3868
  'claude-code': {
3831
3869
  file: 'CLAUDE.md',
3832
3870
  description: 'Claude Code',
3833
- content: `
3834
- ## Project Memory (Hippo)
3835
-
3836
- Before starting work, load relevant context:
3837
- \`\`\`bash
3838
- hippo context --auto --budget 1500
3839
- \`\`\`
3840
-
3841
- When you learn something important:
3842
- \`\`\`bash
3843
- hippo remember "<lesson>"
3844
- \`\`\`
3845
-
3846
- When you hit an error or discover a gotcha:
3847
- \`\`\`bash
3848
- hippo remember "<what went wrong and why>" --error
3849
- \`\`\`
3850
-
3851
- After completing work successfully:
3852
- \`\`\`bash
3853
- hippo outcome --good
3854
- \`\`\`
3855
-
3856
- When the user ends the session, capture a brief summary:
3857
- \`\`\`bash
3858
- hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3859
- \`\`\`
3871
+ content: `
3872
+ ## Project Memory (Hippo)
3873
+
3874
+ Before starting work, load relevant context:
3875
+ \`\`\`bash
3876
+ hippo context --auto --budget 1500
3877
+ \`\`\`
3878
+
3879
+ When you learn something important:
3880
+ \`\`\`bash
3881
+ hippo remember "<lesson>"
3882
+ \`\`\`
3883
+
3884
+ When you hit an error or discover a gotcha:
3885
+ \`\`\`bash
3886
+ hippo remember "<what went wrong and why>" --error
3887
+ \`\`\`
3888
+
3889
+ After completing work successfully:
3890
+ \`\`\`bash
3891
+ hippo outcome --good
3892
+ \`\`\`
3893
+
3894
+ When the user ends the session, capture a brief summary:
3895
+ \`\`\`bash
3896
+ hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3897
+ \`\`\`
3860
3898
  `.trim(),
3861
3899
  },
3862
3900
  'codex': {
3863
3901
  file: 'AGENTS.md',
3864
3902
  description: 'OpenAI Codex',
3865
- content: `
3866
- ## Project Memory (Hippo)
3867
-
3868
- At the start of every task, run:
3869
- \`\`\`bash
3870
- hippo context --auto --budget 1500
3871
- \`\`\`
3872
- Read the output before writing any code.
3873
-
3874
- On errors or unexpected behaviour:
3875
- \`\`\`bash
3876
- hippo remember "<description of what went wrong>" --error
3877
- \`\`\`
3878
-
3879
- On task completion:
3880
- \`\`\`bash
3881
- hippo outcome --good
3882
- \`\`\`
3883
-
3884
- When Hippo's Codex wrapper is installed, session-end capture runs automatically.
3885
- If the wrapper is not installed, capture a brief summary manually:
3886
- \`\`\`bash
3887
- hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3888
- \`\`\`
3903
+ content: `
3904
+ ## Project Memory (Hippo)
3905
+
3906
+ At the start of every task, run:
3907
+ \`\`\`bash
3908
+ hippo context --auto --budget 1500
3909
+ \`\`\`
3910
+ Read the output before writing any code.
3911
+
3912
+ On errors or unexpected behaviour:
3913
+ \`\`\`bash
3914
+ hippo remember "<description of what went wrong>" --error
3915
+ \`\`\`
3916
+
3917
+ On task completion:
3918
+ \`\`\`bash
3919
+ hippo outcome --good
3920
+ \`\`\`
3921
+
3922
+ When Hippo's Codex wrapper is installed, session-end capture runs automatically.
3923
+ If the wrapper is not installed, capture a brief summary manually:
3924
+ \`\`\`bash
3925
+ hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3926
+ \`\`\`
3889
3927
  `.trim(),
3890
3928
  },
3891
3929
  'cursor': {
3892
3930
  file: '.cursorrules',
3893
3931
  description: 'Cursor',
3894
- content: `
3895
- # Project Memory (Hippo)
3896
- # Before each task, load context:
3897
- # hippo context --auto --budget 1500
3898
- # After errors:
3899
- # hippo remember "<error description>" --error
3900
- # After completing:
3901
- # hippo outcome --good
3932
+ content: `
3933
+ # Project Memory (Hippo)
3934
+ # Before each task, load context:
3935
+ # hippo context --auto --budget 1500
3936
+ # After errors:
3937
+ # hippo remember "<error description>" --error
3938
+ # After completing:
3939
+ # hippo outcome --good
3902
3940
  `.trim(),
3903
3941
  },
3904
3942
  'openclaw': {
3905
3943
  file: 'AGENTS.md',
3906
3944
  description: 'OpenClaw',
3907
- content: `
3908
- ## Project Memory (Hippo)
3909
-
3910
- At the start of every session, run:
3911
- \`\`\`bash
3912
- hippo context --auto --budget 1500
3913
- \`\`\`
3914
- Read the output before writing any code.
3915
-
3916
- On errors or unexpected behaviour:
3917
- \`\`\`bash
3918
- hippo remember "<description of what went wrong>" --error
3919
- \`\`\`
3920
-
3921
- On task completion:
3922
- \`\`\`bash
3923
- hippo outcome --good
3924
- \`\`\`
3925
-
3926
- When ending a session, capture a brief summary:
3927
- \`\`\`bash
3928
- hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3929
- \`\`\`
3945
+ content: `
3946
+ ## Project Memory (Hippo)
3947
+
3948
+ At the start of every session, run:
3949
+ \`\`\`bash
3950
+ hippo context --auto --budget 1500
3951
+ \`\`\`
3952
+ Read the output before writing any code.
3953
+
3954
+ On errors or unexpected behaviour:
3955
+ \`\`\`bash
3956
+ hippo remember "<description of what went wrong>" --error
3957
+ \`\`\`
3958
+
3959
+ On task completion:
3960
+ \`\`\`bash
3961
+ hippo outcome --good
3962
+ \`\`\`
3963
+
3964
+ When ending a session, capture a brief summary:
3965
+ \`\`\`bash
3966
+ hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3967
+ \`\`\`
3930
3968
  `.trim(),
3931
3969
  },
3932
3970
  'opencode': {
3933
3971
  file: 'AGENTS.md',
3934
3972
  description: 'OpenCode',
3935
- content: `
3936
- ## Project Memory (Hippo)
3937
-
3938
- At the start of every task, run:
3939
- \`\`\`bash
3940
- hippo context --auto --budget 1500
3941
- \`\`\`
3942
- Read the output before writing any code.
3943
-
3944
- When you learn something important or hit an error:
3945
- \`\`\`bash
3946
- hippo remember "<lesson>" --error
3947
- \`\`\`
3948
-
3949
- When stuck or repeating yourself, check if this happened before:
3950
- \`\`\`bash
3951
- hippo recall "<what's going wrong>" --budget 2000
3952
- \`\`\`
3953
-
3954
- On task completion:
3955
- \`\`\`bash
3956
- hippo outcome --good
3957
- \`\`\`
3958
-
3959
- When ending a session, capture a brief summary:
3960
- \`\`\`bash
3961
- hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3962
- \`\`\`
3973
+ content: `
3974
+ ## Project Memory (Hippo)
3975
+
3976
+ At the start of every task, run:
3977
+ \`\`\`bash
3978
+ hippo context --auto --budget 1500
3979
+ \`\`\`
3980
+ Read the output before writing any code.
3981
+
3982
+ When you learn something important or hit an error:
3983
+ \`\`\`bash
3984
+ hippo remember "<lesson>" --error
3985
+ \`\`\`
3986
+
3987
+ When stuck or repeating yourself, check if this happened before:
3988
+ \`\`\`bash
3989
+ hippo recall "<what's going wrong>" --budget 2000
3990
+ \`\`\`
3991
+
3992
+ On task completion:
3993
+ \`\`\`bash
3994
+ hippo outcome --good
3995
+ \`\`\`
3996
+
3997
+ When ending a session, capture a brief summary:
3998
+ \`\`\`bash
3999
+ hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
4000
+ \`\`\`
3963
4001
  `.trim(),
3964
4002
  },
3965
4003
  'pi': {
3966
4004
  file: 'AGENTS.md',
3967
4005
  description: 'Pi',
3968
- content: `
3969
- ## Project Memory (Hippo)
3970
-
3971
- At the start of every session, run:
3972
- \`\`\`bash
3973
- hippo context --auto --budget 1500
3974
- \`\`\`
3975
- Read the output before writing any code.
3976
-
3977
- On errors or unexpected behaviour:
3978
- \`\`\`bash
3979
- hippo remember "<description of what went wrong>" --error
3980
- \`\`\`
3981
-
3982
- On task completion:
3983
- \`\`\`bash
3984
- hippo outcome --good
3985
- \`\`\`
3986
-
3987
- When ending a session, capture a brief summary:
3988
- \`\`\`bash
3989
- hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
3990
- \`\`\`
3991
-
3992
- For full integration, copy the hippo-memory Pi extension to \`~/.pi/agent/extensions/hippo-memory/\`.
4006
+ content: `
4007
+ ## Project Memory (Hippo)
4008
+
4009
+ At the start of every session, run:
4010
+ \`\`\`bash
4011
+ hippo context --auto --budget 1500
4012
+ \`\`\`
4013
+ Read the output before writing any code.
4014
+
4015
+ On errors or unexpected behaviour:
4016
+ \`\`\`bash
4017
+ hippo remember "<description of what went wrong>" --error
4018
+ \`\`\`
4019
+
4020
+ On task completion:
4021
+ \`\`\`bash
4022
+ hippo outcome --good
4023
+ \`\`\`
4024
+
4025
+ When ending a session, capture a brief summary:
4026
+ \`\`\`bash
4027
+ hippo capture --stdin <<< '<decisions, errors, lessons — 2-5 bullets>'
4028
+ \`\`\`
4029
+
4030
+ For full integration, copy the hippo-memory Pi extension to \`~/.pi/agent/extensions/hippo-memory/\`.
3993
4031
  `.trim(),
3994
4032
  },
3995
4033
  };
@@ -4677,6 +4715,7 @@ const VALID_AUDIT_OPS = new Set([
4677
4715
  'recall_anchor_detected_query_repeat', // v0.33 / J1 — emitted by detector on R1 fire
4678
4716
  'recall_anchor_detected_memory_dominance', // v0.33 / J1 — emitted by detector on R2 fire
4679
4717
  'recall_anchor_skipped_no_session', // v0.33 / J1 — telemetry: no sessionId, ring skipped
4718
+ 'recall_availability_detected', // v1.13.x / J2 - emitted when availability/recency-bias hint fires
4680
4719
  ]);
4681
4720
  function formatAuditRow(ev) {
4682
4721
  const target = ev.targetId ?? '-';
@@ -4882,12 +4921,12 @@ function cmdGoalPush(hippoRoot, args, flags) {
4882
4921
  function listAllGoals(hippoRoot, sessionId, tenantId) {
4883
4922
  const db = openHippoDb(hippoRoot);
4884
4923
  try {
4885
- const rows = db.prepare(`
4886
- SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
4887
- success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
4888
- FROM goal_stack
4889
- WHERE tenant_id = ? AND session_id = ?
4890
- ORDER BY created_at ASC
4924
+ const rows = db.prepare(`
4925
+ SELECT id, session_id, tenant_id, goal_name, level, parent_goal_id, status,
4926
+ success_condition, retrieval_policy_id, created_at, completed_at, outcome_score
4927
+ FROM goal_stack
4928
+ WHERE tenant_id = ? AND session_id = ?
4929
+ ORDER BY created_at ASC
4891
4930
  `).all(tenantId, sessionId);
4892
4931
  return rows.map(rowToGoal);
4893
4932
  }
@@ -5210,349 +5249,349 @@ function cmdSlack(hippoRoot, args, flags) {
5210
5249
  process.exit(1);
5211
5250
  }
5212
5251
  function printUsage() {
5213
- console.log(`
5214
- Hippo - biologically-inspired memory system for AI agents
5215
-
5216
- Usage: hippo <command> [options]
5217
-
5218
- Commands:
5219
- init Create .hippo/ structure in current directory
5220
- --scan [dir] Find all git repos under dir (default: ~) and init each
5221
- --days <n> Days of git history to seed (default: 365 for --scan, 30 for single)
5222
- --global Init the global store ($HIPPO_HOME or ~/.hippo/)
5223
- --no-hooks Skip auto-detecting and installing agent hooks
5224
- --no-schedule Skip auto-creating the machine-level daily runner
5225
- --no-learn Skip seeding memories from git history
5226
- remember <text> Store a memory
5227
- --tag <tag> Add a tag (repeatable)
5228
- --error Tag as error (boosts retention)
5229
- --pin Pin memory (never decays)
5230
- --verified Set confidence: verified (default)
5231
- --observed Set confidence: observed
5232
- --inferred Set confidence: inferred
5233
- --global Store in global store ($HIPPO_HOME or ~/.hippo/)
5234
- recall <query> Search and retrieve memories (local + global)
5235
- --budget <n> Token budget (default: 4000)
5236
- --min-results <n> Minimum results regardless of budget (default: 1)
5237
- --json Output as JSON
5238
- --why Show match reasons and source annotations
5239
- --no-mmr Disable MMR diversity re-ranking
5240
- --mmr-lambda <f> MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
5241
- --evc-adaptive ACC-style: when top-K shows high inter-item overlap
5242
- (= conflict cluster), expand pool and re-rank by
5243
- recency. Default off. RESEARCH.md §PFC.ACC.
5244
- --filter-conflicts vlPFC interference filter: drop superseded entries
5245
- and 0.3x-downweight entries flagged in an open
5246
- conflict with a peer in the same result set.
5247
- Uses recorded supersession + conflicts only — never
5248
- lexical inference. Default off. RESEARCH.md §PFC.vlPFC.
5249
- --value-aware vmPFC value attribution: boost memories with positive
5250
- cumulative outcomes and demote those with negative
5251
- outcomes during ranking. Multiplier
5252
- clip(1 + 0.3*tanh(pos - neg), 0.7, 1.3). Reuses
5253
- outcome_positive / outcome_negative; no schema
5254
- change. Default off. RESEARCH.md §PFC.vmPFC.
5255
- --rerank-utility OFC option-value re-ranker: combine relevance,
5256
- strength, and integration cost into a single utility
5257
- = score * (0.5 + 0.5 * strength) * (1 - cost_factor)
5258
- where cost_factor = min(0.3, tokens / 10000). Re-sorts
5259
- results by utility. Default off. RESEARCH.md §PFC.OFC.
5260
- --reranker <name> Apply a reranker pass after retrieval
5261
- (cross-encoder|llm). Looks up the named
5262
- reranker from src/rerankers/index.ts and re-orders
5263
- the top-K candidates. Default unset (no reranker).
5264
- See docs/plans/2026-05-10-f6-reranker-hardening.md.
5265
- --reranker-top-k <n> Cap candidates passed to the reranker (default 50).
5266
- --goal <tag> dlPFC goal-conditioned recall: memories tagged with
5267
- the goal tag get a 1.5x score boost and results are
5268
- re-sorted. Default off. RESEARCH.md §PFC.dlPFC.
5269
- --session-id <id> Session identifier for dlPFC goal-stack boost.
5270
- Defaults to \$HIPPO_SESSION_ID. When set and the
5271
- (tenant, session) has active goals (see
5272
- 'hippo goal push'), recall auto-boosts memories
5273
- whose tags match an active goal name. Boost stacks
5274
- on top of base BM25 score, capped at 3.0x.
5275
- --salience-threshold <n>
5276
- Pineal salience: down-weight memories whose
5277
- retrieval_count is below n. score *= max(0.5,
5278
- retrieval_count / n) for entries with count < n;
5279
- entries at or above n are unchanged. Salience emerges
5280
- from USE, not from lexical overlap. Default off.
5281
- RESEARCH.md §"AI Pineal Gland". (v1's creation-time
5282
- lexical gate destroyed LoCoMo 0.28 -> 0.02; this v2
5283
- is retrieval-side, opt-in only — see MEMORY.md
5284
- "Hippo salience gate destroys benchmark recall".)
5285
- --continuity Include continuity block (active task snapshot,
5286
- latest matching session handoff, last 5 session
5287
- events) above the memory list. Useful at agent
5288
- boot when you want both relevant memories AND
5289
- where you left off in one call. Anchored on the
5290
- active snapshot's session_id; no anchor = no
5291
- handoff/events (use 'hippo session resume' for
5292
- the explicit handoff-without-snapshot path).
5293
- explain <query> Show full score breakdown for each retrieved memory
5294
- --budget <n> Token budget (default: 4000)
5295
- --limit <n> Cap the number of results displayed
5296
- --json Output as JSON
5297
- --physics | --classic Force search mode (default: from config)
5298
- --no-mmr Disable MMR diversity re-ranking
5299
- --mmr-lambda <f> MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
5300
- trace <id> Memory dossier: content, decay trajectory, retrievals,
5301
- outcomes, consolidation parents, open conflicts
5302
- --json Output as JSON
5303
- refine Rewrite consolidated semantic memories with Claude
5304
- --limit <n> Cap the number of memories processed this run
5305
- --all Ignore \`llm-refined\` tag and re-refine everything
5306
- --dry-run Call the API but don't write results back
5307
- --model <id> Override the default model (claude-sonnet-4-6)
5308
- --json Output summary as JSON
5309
- (requires ANTHROPIC_API_KEY in env)
5310
- eval [<corpus.json>] Measure recall quality against a test corpus
5311
- --bootstrap Generate a synthetic corpus from current memories
5312
- --out <path> With --bootstrap, write to file instead of stdout
5313
- --max-cases <n> With --bootstrap, cap case count (default: 50)
5314
- --show-cases Print per-case details (query, R@10, missed, top 3)
5315
- --compare <path> JSON from a prior \`eval --json\` run; print deltas
5316
- --no-mmr Disable MMR for this eval run
5317
- --mmr-lambda <f> Override MMR lambda for this run
5318
- --embedding-weight <f> Override cosine weight (default: 0.6)
5319
- --local-bump <f> Local-over-global priority multiplier (default: 1.2)
5320
- --equal-sources Shortcut for --local-bump 1.0
5321
- --min-mrr <f> Exit non-zero if mean MRR falls below this
5322
- --json Output full summary as JSON
5323
- context Smart context injection for AI agents
5324
- --auto Auto-detect task from git state
5325
- --budget <n> Token budget (default: 1500)
5326
- --pinned-only Only inject pinned memories (used by UserPromptSubmit hook)
5327
- --include-recent <n> With --pinned-only, also inject the last N writes regardless of pinning
5328
- --format <fmt> Output format: markdown (default), json, or additional-context (Claude Code hook JSON)
5329
- --framing <mode> Framing: observe (default), suggest, assert
5330
- sleep Run consolidation pass (auto-learns + dedup + auto-shares)
5331
- --dry-run Preview without writing
5332
- --no-learn Skip auto git-learn before consolidation
5333
- --no-share Skip auto-sharing to global store
5334
- daily-runner Sweep registered workspaces and run daily learn+sleep
5335
- dedup Remove duplicate memories (keeps stronger copy)
5336
- --dry-run Preview without removing
5337
- --threshold <n> Overlap threshold 0-1 (default: 0.7)
5338
- status Show memory health stats
5339
- audit [--fix] Check memory quality (--fix removes junk)
5340
- github GitHub connector subcommands (backfill, dlq)
5341
- backfill --repo <owner/name> [--since ISO] [--max <N>]
5342
- Paginated backfill of issues + comments
5343
- dlq list List DLQ entries for the active tenant
5344
- dlq replay <id> [--force]
5345
- Re-ingest a DLQ entry (--force skips sig check)
5346
- provenance Provenance coverage gate for kind='raw' rows
5347
- --json Output as JSON
5348
- --strict Exit non-zero when coverage < 100%
5349
- drill <summary-id> Walk down a DAG level-2 summary to its children
5350
- --limit N Cap children list (default 50)
5351
- --budget N Cap total child token cost (≈ chars/4)
5352
- --json Output as JSON
5353
- assemble --session <id> Build a session's chronological context window
5354
- --budget N Token budget (default 4000)
5355
- --fresh-tail N Recent rows always kept verbatim (default 10)
5356
- --no-summarize-older Disable older-row summary substitution
5357
- --scope <s> Restrict to exact scope (default: deny *:private:*)
5358
- --json Output as JSON
5359
- correction-latency Wall-clock lag from receipt to supersession (p50/p95/max)
5360
- --json Output as JSON
5361
- outcome Apply feedback to last recall
5362
- --good Memories were helpful
5363
- --bad Memories were irrelevant
5364
- --id <id> Target a specific memory
5365
- conflicts List detected open memory conflicts
5366
- --status <status> Filter by status (default: open)
5367
- --json Output as JSON
5368
- resolve <conflict_id> Resolve a memory conflict
5369
- --keep <memory_id> Memory to keep (required)
5370
- --forget Delete the losing memory (default: halve half-life)
5371
- snapshot <sub> Persist or inspect the current active task
5372
- snapshot save Save active task state
5373
- --task <task>
5374
- --summary <summary>
5375
- --next-step <step>
5376
- --source <source> Optional source label
5377
- --session <id> Link snapshot to a session trail
5378
- snapshot show Show the active task snapshot
5379
- --json Output as JSON
5380
- snapshot clear Clear the active task snapshot
5381
- --status <status> Mark final status (default: cleared)
5382
- session <sub> Append or inspect short-term session history
5383
- session log Append a structured session event
5384
- --id <session-id>
5385
- --content <text>
5386
- --type <type> Event type (default: note)
5387
- --task <task> Optional task label
5388
- --source <source> Optional source label
5389
- session show Show recent events for a session or task
5390
- --id <session-id>
5391
- --task <task>
5392
- --limit <n> Event limit (default: 8)
5393
- --json Output as JSON
5394
- session latest Show latest task snapshot + events
5395
- --id <session-id> Filter by session
5396
- --json Output as JSON
5397
- session resume Re-inject latest handoff as context output
5398
- --id <session-id> Filter by session
5399
- handoff <sub> Manage session handoffs for continuity
5400
- handoff create Create a new session handoff
5401
- --summary <text> Handoff summary (required)
5402
- --next <text> Next action for successor
5403
- --session <id> Session ID (auto-generated if omitted)
5404
- --task <id> Associated task ID
5405
- --artifact <path> Related file path (repeatable)
5406
- handoff latest Show the most recent handoff
5407
- --session <id> Filter by session
5408
- --json Output as JSON
5409
- handoff show <id> Show a specific handoff by ID
5410
- current <sub> Show compact current state for agent injection
5411
- current show Active task + recent session events (default)
5412
- --json Output as JSON
5413
- forget <id> Force remove a memory
5414
- --archive Archive a raw (append-only) memory instead of deleting
5415
- --reason "<why>" Reason recorded on the archive (required with --archive)
5416
- inspect <id> Show full memory detail
5417
- embed Embed all memories for semantic search
5418
- --status Show embedding coverage
5419
- watch "<command>" Run command, auto-learn from failures
5420
- learn Learn lessons from repository history
5421
- --git Scan recent git commits for lessons
5422
- --days <n> Scan this many days back (default: 7)
5423
- --repos <paths> Comma-separated repo paths to scan
5424
- promote <id> Copy a local memory to the global store
5425
- share <id> Share a memory with attribution + transfer scoring
5426
- --force Share even if transfer score is low
5427
- --auto Auto-share all high-transfer-score memories
5428
- --dry-run Preview what would be shared
5429
- --min-score <n> Minimum transfer score (default: 0.6)
5430
- peers List projects contributing to global store
5431
- sync Pull global memories into local project
5432
- import Import memories from other AI tools
5433
- --chatgpt <path> Import from ChatGPT memory export (JSON or txt)
5434
- --claude <path> Import from CLAUDE.md or Claude memory.json
5435
- --cursor <path> Import from .cursorrules or .cursor/rules
5436
- --file <path> Import from any markdown or text file
5437
- --markdown <path> Import from structured MEMORY.md / AGENTS.md
5438
- --dry-run Preview without writing
5439
- --global Write to global store ($HIPPO_HOME or ~/.hippo/)
5440
- --tag <tag> Add extra tag (repeatable)
5441
- export [file] Export all memories (default: stdout)
5442
- --format <fmt> Output format: json (default) or markdown
5443
- capture Extract memories from conversation text
5444
- --stdin Read from piped input
5445
- --file <path> Read from a file
5446
- --last-session Read from the most recent agent session transcript
5447
- --transcript <path> Explicit transcript path (implies --last-session)
5448
- --log-file <path> Tee output to a log file (paired with 'hippo last-sleep')
5449
- --dry-run Preview without writing
5450
- --global Write to global store ($HIPPO_HOME or ~/.hippo/)
5451
- setup One-shot: detect installed AI tools and install all
5452
- available SessionEnd+SessionStart hooks
5453
- --all Install for every JSON-hook tool, even if not detected
5454
- --dry-run Show what would be installed without writing
5455
- --no-schedule Skip installing or repairing the daily runner
5456
- last-sleep Print the last 'hippo sleep --log-file' output and clear it
5457
- --path <p> Log path (default: ~/.hippo/logs/last-sleep.log)
5458
- --keep Print without clearing
5459
- codex-run [-- ...args] Launch real Codex behind Hippo's session-end wrapper
5460
- hook <sub> [target] Manage framework integrations
5461
- hook list Show available hooks
5462
- hook install <target> Install hook (claude-code|codex|cursor|openclaw|opencode|pi)
5463
- claude-code/opencode install SessionEnd+SessionStart;
5464
- codex wraps the detected launcher in place
5465
- hook uninstall <target> Remove hook
5466
- decide "<decision>" Record an architectural decision (90-day half-life)
5467
- --context "<why>" Why this decision was made
5468
- --supersedes <id> Supersede a previous decision (weakens it)
5469
- invalidate "<pattern>" Actively weaken memories matching an old pattern
5470
- --reason "<why>" Optional: what replaced it
5471
- wm <sub> Working memory — bounded buffer for current state
5472
- wm push Push a working memory entry
5473
- --scope <scope> Scope name (default: default)
5474
- --content <text> Content to store (required)
5475
- --importance <n> Priority 0-1 (default: 0.5)
5476
- --session <id> Session ID
5477
- --task <id> Task ID
5478
- wm read Read working memory entries
5479
- --scope <scope> Filter by scope
5480
- --session <id> Filter by session
5481
- --limit <n> Max entries (default: 20)
5482
- --json Output as JSON
5483
- wm clear Clear working memory entries
5484
- --scope <scope> Filter by scope
5485
- --session <id> Filter by session
5486
- wm flush Flush working memory (session end)
5487
- --scope <scope> Filter by scope
5488
- --session <id> Filter by session
5489
- dashboard Open web dashboard for memory health
5490
- --port <n> Port to serve on (default: 3333)
5491
- mcp Start MCP server (stdio transport)
5492
- goal <sub> dlPFC goal stack (B3) — scoped per session
5493
- goal push <name> Push a new active goal; prints the new goal id
5494
- --policy <type> schema-fit-biased | error-prioritized |
5495
- recency-first | hybrid
5496
- --success "<cond>" Optional success condition text
5497
- --level <n> Goal level (default: 0)
5498
- --parent <goalId> Parent goal id (for sub-goals)
5499
- --session-id <s> Override session (defaults to HIPPO_SESSION_ID)
5500
- --tenant-id <t> Override tenant (defaults to HIPPO_TENANT)
5501
- goal list Show active goals as a table
5502
- --all Include suspended/completed goals
5503
- goal complete <id> Mark a goal completed
5504
- --outcome <0..1> Outcome score; >=0.7 boosts, <0.3 decays recalled mems
5505
- --no-propagate Close the goal without applying strength side-effects
5506
- goal suspend <id> Move an active goal to suspended
5507
- goal resume <id> Move a suspended goal back to active (depth-capped)
5508
- auth <sub> Manage API keys (A5 stub auth)
5509
- auth create Mint a new API key (plaintext shown ONCE)
5510
- --label <s> Optional human label
5511
- --role <r> admin | member (default: admin; member blocked from /v1/sleep)
5512
- --tenant <id> Override tenant (defaults to HIPPO_TENANT)
5513
- --json Output as JSON
5514
- --global Operate on the global store
5515
- auth list List API keys (active by default)
5516
- --all Include revoked keys
5517
- --json Output as JSON
5518
- --global Operate on the global store
5519
- auth revoke <key_id> Revoke an API key (subsequent validate fails)
5520
- --json Output as JSON
5521
- --global Operate on the global store
5522
- audit <sub> Query the append-only audit log (A5 stub auth)
5523
- audit list List audit events for the active tenant
5524
- --op <op> Filter by op (remember | recall | promote |
5525
- supersede | forget | archive_raw | auth_revoke)
5526
- --since <iso> Lower bound on ts (ISO timestamp)
5527
- --limit <n> Max events (default: 100, max: 10000)
5528
- --json Output as JSON
5529
- --global Operate on the global store
5530
-
5531
- Examples:
5532
- hippo init
5533
- hippo remember "FRED cache can silently drop series" --tag error
5534
- hippo recall "data pipeline issues" --budget 2000
5535
- hippo context --auto --budget 1500
5536
- hippo conflicts
5537
- hippo session log --id sess_123 --task "Ship feature" --type progress --content "Build is green, next step is docs"
5538
- hippo session latest --json
5539
- hippo session resume
5540
- hippo snapshot save --task "Ship feature" --summary "Tests are green" --next-step "Open the PR" --session sess_123
5541
- hippo handoff create --summary "PR is open, tests green" --next "Merge after review" --session sess_123 --artifact src/foo.ts
5542
- hippo embed --status
5543
- hippo watch "npm run build"
5544
- hippo learn --git --days 30
5545
- hippo promote mem_abc123
5546
- hippo sync
5547
- hippo setup
5548
- hippo hook install claude-code
5549
- hippo decide "Use PostgreSQL for new services" --context "JSONB support"
5550
- hippo invalidate "REST API" --reason "migrated to GraphQL"
5551
- hippo export memories.json
5552
- hippo export --format markdown memories.md
5553
- hippo sleep --dry-run
5554
- hippo outcome --good
5555
- hippo status
5252
+ console.log(`
5253
+ Hippo - biologically-inspired memory system for AI agents
5254
+
5255
+ Usage: hippo <command> [options]
5256
+
5257
+ Commands:
5258
+ init Create .hippo/ structure in current directory
5259
+ --scan [dir] Find all git repos under dir (default: ~) and init each
5260
+ --days <n> Days of git history to seed (default: 365 for --scan, 30 for single)
5261
+ --global Init the global store ($HIPPO_HOME or ~/.hippo/)
5262
+ --no-hooks Skip auto-detecting and installing agent hooks
5263
+ --no-schedule Skip auto-creating the machine-level daily runner
5264
+ --no-learn Skip seeding memories from git history
5265
+ remember <text> Store a memory
5266
+ --tag <tag> Add a tag (repeatable)
5267
+ --error Tag as error (boosts retention)
5268
+ --pin Pin memory (never decays)
5269
+ --verified Set confidence: verified (default)
5270
+ --observed Set confidence: observed
5271
+ --inferred Set confidence: inferred
5272
+ --global Store in global store ($HIPPO_HOME or ~/.hippo/)
5273
+ recall <query> Search and retrieve memories (local + global)
5274
+ --budget <n> Token budget (default: 4000)
5275
+ --min-results <n> Minimum results regardless of budget (default: 1)
5276
+ --json Output as JSON
5277
+ --why Show match reasons and source annotations
5278
+ --no-mmr Disable MMR diversity re-ranking
5279
+ --mmr-lambda <f> MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
5280
+ --evc-adaptive ACC-style: when top-K shows high inter-item overlap
5281
+ (= conflict cluster), expand pool and re-rank by
5282
+ recency. Default off. RESEARCH.md §PFC.ACC.
5283
+ --filter-conflicts vlPFC interference filter: drop superseded entries
5284
+ and 0.3x-downweight entries flagged in an open
5285
+ conflict with a peer in the same result set.
5286
+ Uses recorded supersession + conflicts only — never
5287
+ lexical inference. Default off. RESEARCH.md §PFC.vlPFC.
5288
+ --value-aware vmPFC value attribution: boost memories with positive
5289
+ cumulative outcomes and demote those with negative
5290
+ outcomes during ranking. Multiplier
5291
+ clip(1 + 0.3*tanh(pos - neg), 0.7, 1.3). Reuses
5292
+ outcome_positive / outcome_negative; no schema
5293
+ change. Default off. RESEARCH.md §PFC.vmPFC.
5294
+ --rerank-utility OFC option-value re-ranker: combine relevance,
5295
+ strength, and integration cost into a single utility
5296
+ = score * (0.5 + 0.5 * strength) * (1 - cost_factor)
5297
+ where cost_factor = min(0.3, tokens / 10000). Re-sorts
5298
+ results by utility. Default off. RESEARCH.md §PFC.OFC.
5299
+ --reranker <name> Apply a reranker pass after retrieval
5300
+ (cross-encoder|llm). Looks up the named
5301
+ reranker from src/rerankers/index.ts and re-orders
5302
+ the top-K candidates. Default unset (no reranker).
5303
+ See docs/plans/2026-05-10-f6-reranker-hardening.md.
5304
+ --reranker-top-k <n> Cap candidates passed to the reranker (default 50).
5305
+ --goal <tag> dlPFC goal-conditioned recall: memories tagged with
5306
+ the goal tag get a 1.5x score boost and results are
5307
+ re-sorted. Default off. RESEARCH.md §PFC.dlPFC.
5308
+ --session-id <id> Session identifier for dlPFC goal-stack boost.
5309
+ Defaults to \$HIPPO_SESSION_ID. When set and the
5310
+ (tenant, session) has active goals (see
5311
+ 'hippo goal push'), recall auto-boosts memories
5312
+ whose tags match an active goal name. Boost stacks
5313
+ on top of base BM25 score, capped at 3.0x.
5314
+ --salience-threshold <n>
5315
+ Pineal salience: down-weight memories whose
5316
+ retrieval_count is below n. score *= max(0.5,
5317
+ retrieval_count / n) for entries with count < n;
5318
+ entries at or above n are unchanged. Salience emerges
5319
+ from USE, not from lexical overlap. Default off.
5320
+ RESEARCH.md §"AI Pineal Gland". (v1's creation-time
5321
+ lexical gate destroyed LoCoMo 0.28 -> 0.02; this v2
5322
+ is retrieval-side, opt-in only — see MEMORY.md
5323
+ "Hippo salience gate destroys benchmark recall".)
5324
+ --continuity Include continuity block (active task snapshot,
5325
+ latest matching session handoff, last 5 session
5326
+ events) above the memory list. Useful at agent
5327
+ boot when you want both relevant memories AND
5328
+ where you left off in one call. Anchored on the
5329
+ active snapshot's session_id; no anchor = no
5330
+ handoff/events (use 'hippo session resume' for
5331
+ the explicit handoff-without-snapshot path).
5332
+ explain <query> Show full score breakdown for each retrieved memory
5333
+ --budget <n> Token budget (default: 4000)
5334
+ --limit <n> Cap the number of results displayed
5335
+ --json Output as JSON
5336
+ --physics | --classic Force search mode (default: from config)
5337
+ --no-mmr Disable MMR diversity re-ranking
5338
+ --mmr-lambda <f> MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
5339
+ trace <id> Memory dossier: content, decay trajectory, retrievals,
5340
+ outcomes, consolidation parents, open conflicts
5341
+ --json Output as JSON
5342
+ refine Rewrite consolidated semantic memories with Claude
5343
+ --limit <n> Cap the number of memories processed this run
5344
+ --all Ignore \`llm-refined\` tag and re-refine everything
5345
+ --dry-run Call the API but don't write results back
5346
+ --model <id> Override the default model (claude-sonnet-4-6)
5347
+ --json Output summary as JSON
5348
+ (requires ANTHROPIC_API_KEY in env)
5349
+ eval [<corpus.json>] Measure recall quality against a test corpus
5350
+ --bootstrap Generate a synthetic corpus from current memories
5351
+ --out <path> With --bootstrap, write to file instead of stdout
5352
+ --max-cases <n> With --bootstrap, cap case count (default: 50)
5353
+ --show-cases Print per-case details (query, R@10, missed, top 3)
5354
+ --compare <path> JSON from a prior \`eval --json\` run; print deltas
5355
+ --no-mmr Disable MMR for this eval run
5356
+ --mmr-lambda <f> Override MMR lambda for this run
5357
+ --embedding-weight <f> Override cosine weight (default: 0.6)
5358
+ --local-bump <f> Local-over-global priority multiplier (default: 1.2)
5359
+ --equal-sources Shortcut for --local-bump 1.0
5360
+ --min-mrr <f> Exit non-zero if mean MRR falls below this
5361
+ --json Output full summary as JSON
5362
+ context Smart context injection for AI agents
5363
+ --auto Auto-detect task from git state
5364
+ --budget <n> Token budget (default: 1500)
5365
+ --pinned-only Only inject pinned memories (used by UserPromptSubmit hook)
5366
+ --include-recent <n> With --pinned-only, also inject the last N writes regardless of pinning
5367
+ --format <fmt> Output format: markdown (default), json, or additional-context (Claude Code hook JSON)
5368
+ --framing <mode> Framing: observe (default), suggest, assert
5369
+ sleep Run consolidation pass (auto-learns + dedup + auto-shares)
5370
+ --dry-run Preview without writing
5371
+ --no-learn Skip auto git-learn before consolidation
5372
+ --no-share Skip auto-sharing to global store
5373
+ daily-runner Sweep registered workspaces and run daily learn+sleep
5374
+ dedup Remove duplicate memories (keeps stronger copy)
5375
+ --dry-run Preview without removing
5376
+ --threshold <n> Overlap threshold 0-1 (default: 0.7)
5377
+ status Show memory health stats
5378
+ audit [--fix] Check memory quality (--fix removes junk)
5379
+ github GitHub connector subcommands (backfill, dlq)
5380
+ backfill --repo <owner/name> [--since ISO] [--max <N>]
5381
+ Paginated backfill of issues + comments
5382
+ dlq list List DLQ entries for the active tenant
5383
+ dlq replay <id> [--force]
5384
+ Re-ingest a DLQ entry (--force skips sig check)
5385
+ provenance Provenance coverage gate for kind='raw' rows
5386
+ --json Output as JSON
5387
+ --strict Exit non-zero when coverage < 100%
5388
+ drill <summary-id> Walk down a DAG level-2 summary to its children
5389
+ --limit N Cap children list (default 50)
5390
+ --budget N Cap total child token cost (≈ chars/4)
5391
+ --json Output as JSON
5392
+ assemble --session <id> Build a session's chronological context window
5393
+ --budget N Token budget (default 4000)
5394
+ --fresh-tail N Recent rows always kept verbatim (default 10)
5395
+ --no-summarize-older Disable older-row summary substitution
5396
+ --scope <s> Restrict to exact scope (default: deny *:private:*)
5397
+ --json Output as JSON
5398
+ correction-latency Wall-clock lag from receipt to supersession (p50/p95/max)
5399
+ --json Output as JSON
5400
+ outcome Apply feedback to last recall
5401
+ --good Memories were helpful
5402
+ --bad Memories were irrelevant
5403
+ --id <id> Target a specific memory
5404
+ conflicts List detected open memory conflicts
5405
+ --status <status> Filter by status (default: open)
5406
+ --json Output as JSON
5407
+ resolve <conflict_id> Resolve a memory conflict
5408
+ --keep <memory_id> Memory to keep (required)
5409
+ --forget Delete the losing memory (default: halve half-life)
5410
+ snapshot <sub> Persist or inspect the current active task
5411
+ snapshot save Save active task state
5412
+ --task <task>
5413
+ --summary <summary>
5414
+ --next-step <step>
5415
+ --source <source> Optional source label
5416
+ --session <id> Link snapshot to a session trail
5417
+ snapshot show Show the active task snapshot
5418
+ --json Output as JSON
5419
+ snapshot clear Clear the active task snapshot
5420
+ --status <status> Mark final status (default: cleared)
5421
+ session <sub> Append or inspect short-term session history
5422
+ session log Append a structured session event
5423
+ --id <session-id>
5424
+ --content <text>
5425
+ --type <type> Event type (default: note)
5426
+ --task <task> Optional task label
5427
+ --source <source> Optional source label
5428
+ session show Show recent events for a session or task
5429
+ --id <session-id>
5430
+ --task <task>
5431
+ --limit <n> Event limit (default: 8)
5432
+ --json Output as JSON
5433
+ session latest Show latest task snapshot + events
5434
+ --id <session-id> Filter by session
5435
+ --json Output as JSON
5436
+ session resume Re-inject latest handoff as context output
5437
+ --id <session-id> Filter by session
5438
+ handoff <sub> Manage session handoffs for continuity
5439
+ handoff create Create a new session handoff
5440
+ --summary <text> Handoff summary (required)
5441
+ --next <text> Next action for successor
5442
+ --session <id> Session ID (auto-generated if omitted)
5443
+ --task <id> Associated task ID
5444
+ --artifact <path> Related file path (repeatable)
5445
+ handoff latest Show the most recent handoff
5446
+ --session <id> Filter by session
5447
+ --json Output as JSON
5448
+ handoff show <id> Show a specific handoff by ID
5449
+ current <sub> Show compact current state for agent injection
5450
+ current show Active task + recent session events (default)
5451
+ --json Output as JSON
5452
+ forget <id> Force remove a memory
5453
+ --archive Archive a raw (append-only) memory instead of deleting
5454
+ --reason "<why>" Reason recorded on the archive (required with --archive)
5455
+ inspect <id> Show full memory detail
5456
+ embed Embed all memories for semantic search
5457
+ --status Show embedding coverage
5458
+ watch "<command>" Run command, auto-learn from failures
5459
+ learn Learn lessons from repository history
5460
+ --git Scan recent git commits for lessons
5461
+ --days <n> Scan this many days back (default: 7)
5462
+ --repos <paths> Comma-separated repo paths to scan
5463
+ promote <id> Copy a local memory to the global store
5464
+ share <id> Share a memory with attribution + transfer scoring
5465
+ --force Share even if transfer score is low
5466
+ --auto Auto-share all high-transfer-score memories
5467
+ --dry-run Preview what would be shared
5468
+ --min-score <n> Minimum transfer score (default: 0.6)
5469
+ peers List projects contributing to global store
5470
+ sync Pull global memories into local project
5471
+ import Import memories from other AI tools
5472
+ --chatgpt <path> Import from ChatGPT memory export (JSON or txt)
5473
+ --claude <path> Import from CLAUDE.md or Claude memory.json
5474
+ --cursor <path> Import from .cursorrules or .cursor/rules
5475
+ --file <path> Import from any markdown or text file
5476
+ --markdown <path> Import from structured MEMORY.md / AGENTS.md
5477
+ --dry-run Preview without writing
5478
+ --global Write to global store ($HIPPO_HOME or ~/.hippo/)
5479
+ --tag <tag> Add extra tag (repeatable)
5480
+ export [file] Export all memories (default: stdout)
5481
+ --format <fmt> Output format: json (default) or markdown
5482
+ capture Extract memories from conversation text
5483
+ --stdin Read from piped input
5484
+ --file <path> Read from a file
5485
+ --last-session Read from the most recent agent session transcript
5486
+ --transcript <path> Explicit transcript path (implies --last-session)
5487
+ --log-file <path> Tee output to a log file (paired with 'hippo last-sleep')
5488
+ --dry-run Preview without writing
5489
+ --global Write to global store ($HIPPO_HOME or ~/.hippo/)
5490
+ setup One-shot: detect installed AI tools and install all
5491
+ available SessionEnd+SessionStart hooks
5492
+ --all Install for every JSON-hook tool, even if not detected
5493
+ --dry-run Show what would be installed without writing
5494
+ --no-schedule Skip installing or repairing the daily runner
5495
+ last-sleep Print the last 'hippo sleep --log-file' output and clear it
5496
+ --path <p> Log path (default: ~/.hippo/logs/last-sleep.log)
5497
+ --keep Print without clearing
5498
+ codex-run [-- ...args] Launch real Codex behind Hippo's session-end wrapper
5499
+ hook <sub> [target] Manage framework integrations
5500
+ hook list Show available hooks
5501
+ hook install <target> Install hook (claude-code|codex|cursor|openclaw|opencode|pi)
5502
+ claude-code/opencode install SessionEnd+SessionStart;
5503
+ codex wraps the detected launcher in place
5504
+ hook uninstall <target> Remove hook
5505
+ decide "<decision>" Record an architectural decision (90-day half-life)
5506
+ --context "<why>" Why this decision was made
5507
+ --supersedes <id> Supersede a previous decision (weakens it)
5508
+ invalidate "<pattern>" Actively weaken memories matching an old pattern
5509
+ --reason "<why>" Optional: what replaced it
5510
+ wm <sub> Working memory — bounded buffer for current state
5511
+ wm push Push a working memory entry
5512
+ --scope <scope> Scope name (default: default)
5513
+ --content <text> Content to store (required)
5514
+ --importance <n> Priority 0-1 (default: 0.5)
5515
+ --session <id> Session ID
5516
+ --task <id> Task ID
5517
+ wm read Read working memory entries
5518
+ --scope <scope> Filter by scope
5519
+ --session <id> Filter by session
5520
+ --limit <n> Max entries (default: 20)
5521
+ --json Output as JSON
5522
+ wm clear Clear working memory entries
5523
+ --scope <scope> Filter by scope
5524
+ --session <id> Filter by session
5525
+ wm flush Flush working memory (session end)
5526
+ --scope <scope> Filter by scope
5527
+ --session <id> Filter by session
5528
+ dashboard Open web dashboard for memory health
5529
+ --port <n> Port to serve on (default: 3333)
5530
+ mcp Start MCP server (stdio transport)
5531
+ goal <sub> dlPFC goal stack (B3) — scoped per session
5532
+ goal push <name> Push a new active goal; prints the new goal id
5533
+ --policy <type> schema-fit-biased | error-prioritized |
5534
+ recency-first | hybrid
5535
+ --success "<cond>" Optional success condition text
5536
+ --level <n> Goal level (default: 0)
5537
+ --parent <goalId> Parent goal id (for sub-goals)
5538
+ --session-id <s> Override session (defaults to HIPPO_SESSION_ID)
5539
+ --tenant-id <t> Override tenant (defaults to HIPPO_TENANT)
5540
+ goal list Show active goals as a table
5541
+ --all Include suspended/completed goals
5542
+ goal complete <id> Mark a goal completed
5543
+ --outcome <0..1> Outcome score; >=0.7 boosts, <0.3 decays recalled mems
5544
+ --no-propagate Close the goal without applying strength side-effects
5545
+ goal suspend <id> Move an active goal to suspended
5546
+ goal resume <id> Move a suspended goal back to active (depth-capped)
5547
+ auth <sub> Manage API keys (A5 stub auth)
5548
+ auth create Mint a new API key (plaintext shown ONCE)
5549
+ --label <s> Optional human label
5550
+ --role <r> admin | member (default: admin; member blocked from /v1/sleep)
5551
+ --tenant <id> Override tenant (defaults to HIPPO_TENANT)
5552
+ --json Output as JSON
5553
+ --global Operate on the global store
5554
+ auth list List API keys (active by default)
5555
+ --all Include revoked keys
5556
+ --json Output as JSON
5557
+ --global Operate on the global store
5558
+ auth revoke <key_id> Revoke an API key (subsequent validate fails)
5559
+ --json Output as JSON
5560
+ --global Operate on the global store
5561
+ audit <sub> Query the append-only audit log (A5 stub auth)
5562
+ audit list List audit events for the active tenant
5563
+ --op <op> Filter by op (remember | recall | promote |
5564
+ supersede | forget | archive_raw | auth_revoke)
5565
+ --since <iso> Lower bound on ts (ISO timestamp)
5566
+ --limit <n> Max events (default: 100, max: 10000)
5567
+ --json Output as JSON
5568
+ --global Operate on the global store
5569
+
5570
+ Examples:
5571
+ hippo init
5572
+ hippo remember "FRED cache can silently drop series" --tag error
5573
+ hippo recall "data pipeline issues" --budget 2000
5574
+ hippo context --auto --budget 1500
5575
+ hippo conflicts
5576
+ hippo session log --id sess_123 --task "Ship feature" --type progress --content "Build is green, next step is docs"
5577
+ hippo session latest --json
5578
+ hippo session resume
5579
+ hippo snapshot save --task "Ship feature" --summary "Tests are green" --next-step "Open the PR" --session sess_123
5580
+ hippo handoff create --summary "PR is open, tests green" --next "Merge after review" --session sess_123 --artifact src/foo.ts
5581
+ hippo embed --status
5582
+ hippo watch "npm run build"
5583
+ hippo learn --git --days 30
5584
+ hippo promote mem_abc123
5585
+ hippo sync
5586
+ hippo setup
5587
+ hippo hook install claude-code
5588
+ hippo decide "Use PostgreSQL for new services" --context "JSONB support"
5589
+ hippo invalidate "REST API" --reason "migrated to GraphQL"
5590
+ hippo export memories.json
5591
+ hippo export --format markdown memories.md
5592
+ hippo sleep --dry-run
5593
+ hippo outcome --good
5594
+ hippo status
5556
5595
  `);
5557
5596
  }
5558
5597
  // ---------------------------------------------------------------------------