You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Highest-confidence memory: \ β stale workflow \ files repeatedly cause CI churn; run \ after markdown workflow edits.
Top Memories Surfaced
\ β stale workflow \ files cause churn and CI friction; run \ after markdown workflow edits.
\ β use \ as the fast pre-PR validation gate.
\ β run \ after Go changes and \ after workflow markdown edits.
\ β \ validates YAML for ANSI escape sequences before other jobs.
\ β compiler sanitizes ANSI codes in workflow YAML generation via .
\ β validate workflow changes by compiling a representative workflow with .
\ β prefer selective Go test patterns such as .
Suggested Improvements
Error Patterns
Workflow markdown edits still create recurring CI friction when \ files are left stale (, ). Prevent this by tightening authoring guidance around \ edits and ensuring \ is part of every workflow-edit playbook.
ANSI contamination remains a recurring concern in workflow YAML (, , ). The preventive move is to keep generation paths sanitized and add focused tests around \ and any code that emits workflow YAML.
Code Quality
The memory store repeatedly surfaces command-development checklist items and semantic type guidance, suggesting uneven enforcement of CLI patterns (, , ). Files under \ and shared workflow typing in \ remain strong candidates for targeted cleanup.
Deprecated workflow expression forms still appear in memory (). Cleaning remaining uses of \ in \ would reduce warning noise and future migration risk.
CI Health
Validation discipline dominates the strongest CI memories: run \Syncing actions-lock.json from .github/aw to pkg/actionpins/data/action_pins.json and pkg/workflow/data/action_pins.json...
β Action pins synced successfully
Syncing install-gh-aw.sh to actions/setup-cli/install.sh...
β Action scripts synced successfully
go build -ldflags "-s -w -X main.version=c4fc1f2" -o gh-aw ./cmd/gh-aw early, then \ before shipping (, , ). This indicates CI failures are often preventable with better local gates rather than new infrastructure.
Developers are still encouraged to use broad test suites too late or too often; memories favor selective tests and representative compile checks first (, , ). Tightening docs and scripts around targeted validation would reduce wasted cycle time.
Quick Wins
Add a small validation/helper path that detects modified \ files and reminds or fails fast unless \ has been run recently. Memory: , .
Add focused tests for ANSI stripping in workflow generation around \ and CI expectations in . Memory: , , .
Audit and replace remaining deprecated \ references in workflow markdown with . Memory: .
Longer-term Themes
The repository relies heavily on remembered process rules instead of hard guardrails. Repeated memories about formatting, recompilation, and validation suggest these conventions should be encoded more directly in tooling.
Workflow authoring remains a high-friction area: YAML hygiene, generated lock files, expression migrations, and compile-time validation appear repeatedly across memories, implying a need for a dedicated workflow-authoring UX pass.
Memory Health
Hippo - biologically-inspired memory system for AI agents
Usage: hippo (command) [options]
Commands:
init Create .hippo/ structure in current directory
--scan [dir] Find all git repos under dir (default: ~) and init each
--days (n) Days of git history to seed (default: 365 for --scan, 30 for single)
--global Init the global store ($HIPPO_HOME or ~/.hippo/)
--no-hooks Skip auto-detecting and installing agent hooks
--no-schedule Skip auto-creating the machine-level daily runner
--no-learn Skip seeding memories from git history
remember (text) Store a memory
--tag (tag) Add a tag (repeatable)
--error Tag as error (boosts retention)
--pin Pin memory (never decays)
--verified Set confidence: verified (default)
--observed Set confidence: observed
--inferred Set confidence: inferred
--global Store in global store ($HIPPO_HOME or ~/.hippo/)
recall (query) Search and retrieve memories (local + global)
--budget (n) Token budget (default: 4000)
--min-results (n) Minimum results regardless of budget (default: 1)
--json Output as JSON
--why Show match reasons and source annotations
--hops (n) E3.2 multi-hop graph recall: also surface memories
reached by walking the entities/relations graph (n)
hops (0..3, default off) out from the lexical seeds.
Graph hits are tagged [graph: Nhop (rel)]. Today the
graph holds supersedes edges (E3.1); cross-object edges
light up the same traversal once extracted.
--max-neighbors (n) Per-hop fanout cap for --hops (1..200, default 25).
--graph-stream L1: fuse a graph-retrieval stream into RRF, re-ranking
in-pool results by graph proximity to the strong lexical
seeds. Implies rrf scoring (default is blend). Local store
only. Distinct from --hops (which injects out-of-pool
neighbours); this re-ranks within the candidate pool.
--graph-hops (n) Hops for --graph-stream (1..3, default 2).
--graph-seeds (n) Lexical anchors for --graph-stream (default 10). The stream
re-ranks the rank>seeds tail; on a pool with <= n candidates
every candidate is a seed and the stream is inert.
--no-mmr Disable MMR diversity re-ranking
--mmr-lambda (f) MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
--evc-adaptive ACC-style: when top-K shows high inter-item overlap
(= conflict cluster), expand pool and re-rank by
recency. Default off. RESEARCH.md Β§PFC.ACC.
--filter-conflicts vlPFC interference filter: drop superseded entries
and 0.3x-downweight entries flagged in an open
conflict with a peer in the same result set.
Uses recorded supersession + conflicts only β never
lexical inference. Default off. RESEARCH.md Β§PFC.vlPFC.
--value-aware vmPFC value attribution: boost memories with positive
cumulative outcomes and demote those with negative
outcomes during ranking. Multiplier
clip(1 + 0.3*tanh(pos - neg), 0.7, 1.3). Reuses
outcome_positive / outcome_negative; no schema
change. Default off. RESEARCH.md Β§PFC.vmPFC.
--rerank-utility OFC option-value re-ranker: combine relevance,
strength, and integration cost into a single utility
= score * (0.5 + 0.5 * strength) * (1 - cost_factor)
where cost_factor = min(0.3, tokens / 10000). Re-sorts
results by utility. Default off. RESEARCH.md Β§PFC.OFC.
--reranker (name) Apply a reranker pass after retrieval
(cross-encoder|llm). Looks up the named
reranker from src/rerankers/index.ts and re-orders
the top-K candidates. Default unset (no reranker).
See docs/plans/2026-05-10-f6-reranker-hardening.md.
--reranker-top-k (n) Cap candidates passed to the reranker (default 50).
--goal (tag) dlPFC goal-conditioned recall: memories tagged with
the goal tag get a 1.5x score boost and results are
re-sorted. Default off. RESEARCH.md Β§PFC.dlPFC.
--session-id (id) Session identifier for dlPFC goal-stack boost.
Defaults to $HIPPO_SESSION_ID. When set and the
(tenant, session) has active goals (see
'hippo goal push'), recall auto-boosts memories
whose tags match an active goal name. Boost stacks
on top of base BM25 score, capped at 3.0x.
--salience-threshold (n)
Pineal salience: down-weight memories whose
retrieval_count is below n. score *= max(0.5,
retrieval_count / n) for entries with count < n;
entries at or above n are unchanged. Salience emerges
from USE, not from lexical overlap. Default off.
RESEARCH.md Β§"AI Pineal Gland". (v1's creation-time
lexical gate destroyed LoCoMo 0.28 -> 0.02; this v2
is retrieval-side, opt-in only β see MEMORY.md
"Hippo salience gate destroys benchmark recall".)
--continuity Include continuity block (active task snapshot,
latest matching session handoff, last 5 session
events) above the memory list. Useful at agent
boot when you want both relevant memories AND
where you left off in one call. Anchored on the
active snapshot's session_id; no anchor = no
handoff/events (use 'hippo session resume' for
the explicit handoff-without-snapshot path).
explain (query) Show full score breakdown for each retrieved memory
--budget (n) Token budget (default: 4000)
--limit (n) Cap the number of results displayed
--json Output as JSON
--physics | --classic Force search mode (default: from config)
--no-mmr Disable MMR diversity re-ranking
--mmr-lambda (f) MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
trace (id) Memory dossier: content, decay trajectory, retrievals,
outcomes, consolidation parents, open conflicts
--json Output as JSON
refine Rewrite consolidated semantic memories with Claude
--limit (n) Cap the number of memories processed this run
--all Ignore llm-refined tag and re-refine everything
--dry-run Call the API but don't write results back
--model (id) Override the default model (claude-sonnet-4-6)
--json Output summary as JSON
(requires ANTHROPIC_API_KEY in env)
eval [(corpus.json)] Measure recall quality against a test corpus
--bootstrap Generate a synthetic corpus from current memories
--out (path) With --bootstrap, write to file instead of stdout
--max-cases (n) With --bootstrap, cap case count (default: 50)
--show-cases Print per-case details (query, R@10, missed, top 3)
--compare (path) JSON from a prior eval --json run; print deltas
--no-mmr Disable MMR for this eval run
--mmr-lambda (f) Override MMR lambda for this run
--embedding-weight (f) Override cosine weight (default: 0.6)
--local-bump (f) Local-over-global priority multiplier (default: 1.2)
--equal-sources Shortcut for --local-bump 1.0
--min-mrr (f) Exit non-zero if mean MRR falls below this
--json Output full summary as JSON
context Smart context injection for AI agents
--auto Auto-detect task from git state
--budget (n) Token budget (default: 1500)
--pinned-only Only inject pinned memories (used by UserPromptSubmit hook)
--include-recent (n) With --pinned-only, also inject the last N writes regardless of pinning
--format (fmt) Output format: markdown (default), json, or additional-context (Claude Code hook JSON)
--framing (mode) Framing: observe (default), suggest, assert
sleep Run consolidation pass (auto-learns + dedup + auto-shares)
--dry-run Preview without writing
--no-learn Skip auto git-learn before consolidation
--no-share Skip auto-sharing to global store
daily-runner Sweep registered workspaces and run daily learn+sleep
dedup Remove duplicate memories (keeps stronger copy)
--dry-run Preview without removing
--threshold (n) Overlap threshold 0-1 (default: 0.7)
status Show memory health stats
audit [--fix] Check memory quality (--fix removes junk)
github GitHub connector subcommands (backfill, dlq)
backfill --repo (owner/name) [--since ISO] [--max (N)]
Paginated backfill of issues + comments
dlq list List DLQ entries for the active tenant
dlq replay (id) [--force]
Re-ingest a DLQ entry (--force skips sig check)
provenance Provenance coverage gate for kind='raw' rows
--json Output as JSON
--strict Exit non-zero when coverage < 100%
drill Walk down a DAG level-2 summary to its children
--limit N Cap children list (default 50)
--budget N Cap total child token cost (β chars/4)
--json Output as JSON
assemble --session (id) Build a session's chronological context window
--budget N Token budget (default 4000)
--fresh-tail N Recent rows always kept verbatim (default 10)
--no-summarize-older Disable older-row summary substitution
--scope Restrict to exact scope (default: deny :private:)
--json Output as JSON
correction-latency Wall-clock lag from receipt to supersession (p50/p95/max)
--json Output as JSON
outcome Apply feedback to last recall
--good Memories were helpful
--bad Memories were irrelevant
--id (id) Target a specific memory
conflicts List detected open memory conflicts
--status (status) Filter by status (default: open)
--json Output as JSON
resolve (conflict_id) Resolve a memory conflict
--keep (memory_id) Memory to keep (required)
--forget Delete the losing memory (default: halve half-life)
snapshot Persist or inspect the current active task
snapshot save Save active task state
--task (task)
--summary
--next-step (step)
--source (source) Optional source label
--session (id) Link snapshot to a session trail
snapshot show Show the active task snapshot
--json Output as JSON
snapshot clear Clear the active task snapshot
--status (status) Mark final status (default: cleared)
session Append or inspect short-term session history
session log Append a structured session event
--id (session-id)
--content (text)
--type (type) Event type (default: note)
--task (task) Optional task label
--source (source) Optional source label
session show Show recent events for a session or task
--id (session-id)
--task (task)
--limit (n) Event limit (default: 8)
--json Output as JSON
session latest Show latest task snapshot + events
--id (session-id) Filter by session
--json Output as JSON
session resume Re-inject latest handoff as context output
--id (session-id) Filter by session
handoff Manage session handoffs for continuity
handoff create Create a new session handoff
--summary (text) Handoff summary (required)
--next (text) Next action for successor
--session (id) Session ID (auto-generated if omitted)
--task (id) Associated task ID
--artifact (path) Related file path (repeatable)
handoff latest Show the most recent handoff
--session (id) Filter by session
--json Output as JSON
handoff show (id) Show a specific handoff by ID
current Show compact current state for agent injection
current show Active task + recent session events (default)
--json Output as JSON
forget (id) Force remove a memory
--archive Archive a raw (append-only) memory instead of deleting
--reason "(why)" Reason recorded on the archive (required with --archive)
inspect (id) Show full memory detail
embed Embed all memories for semantic search
--status Show embedding coverage
watch "(command)" Run command, auto-learn from failures
learn Learn lessons from repository history
--git Scan recent git commits for lessons
--days (n) Scan this many days back (default: 7)
--repos (paths) Comma-separated repo paths to scan
promote (id) Copy a local memory to the global store
share (id) Share a memory with attribution + transfer scoring
--force Share even if transfer score is low
--auto Auto-share all high-transfer-score memories
--dry-run Preview what would be shared
--min-score (n) Minimum transfer score (default: 0.6)
peers List projects contributing to global store
sync Pull global memories into local project
import Import memories from other AI tools
--chatgpt (path) Import from ChatGPT memory export (JSON or txt)
--claude (path) Import from CLAUDE.md or Claude memory.json
--cursor (path) Import from .cursorrules or .cursor/rules
--file (path) Import from any markdown or text file
--markdown (path) Import from structured MEMORY.md / AGENTS.md
--vault (path) Import a markdown-vault FOLDER as kind='raw' notes
(Obsidian/Foam/Dendron). Requires --name (vault).
[--scope (scope)]
--dry-run Preview without writing
--global Write to global store ($HIPPO_HOME or ~/.hippo/)
--tag (tag) Add extra tag (repeatable)
export [file] Export all memories (default: stdout)
--format (fmt) Output format: json (default) or markdown
capture Extract memories from conversation text
--stdin Read from piped input
--file (path) Read from a file
--last-session Read from the most recent agent session transcript
--transcript (path) Explicit transcript path (implies --last-session)
--log-file (path) Tee output to a log file (paired with 'hippo last-sleep')
--dry-run Preview without writing
--global Write to global store ($HIPPO_HOME or ~/.hippo/)
setup One-shot: detect installed AI tools and install all
available SessionEnd+SessionStart hooks
--all Install for every JSON-hook tool, even if not detected
--dry-run Show what would be installed without writing
--no-schedule Skip installing or repairing the daily runner
last-sleep Print the last 'hippo sleep --log-file' output and clear it
--path
Log path (default: ~/.hippo/logs/last-sleep.log)
--keep Print without clearing
codex-run [-- ...args] Launch real Codex behind Hippo's session-end wrapper
hook [target] Manage framework integrations
hook list Show available hooks
hook install (target) Install hook (claude-code|codex|cursor|openclaw|opencode|pi)
claude-code/opencode install SessionEnd+SessionStart;
codex wraps the detected launcher in place
hook uninstall (target) Remove hook
decide "(decision)" Record a decision (first-class object + memory mirror)
--context "(why)" Why this decision was made
--supersedes (mem-id) Supersede the decision backed by this memory id
decide list [--status active|superseded|closed|all] [--limit N]
List decisions (table is authoritative, survives decay)
decide get (id) Show a decision by its table id
decide close (id) Retire (close) an active decision by its table id
incident "(incident)" Record an incident (first-class object + memory mirror)
--context "
Details" What happened / surrounding detail
--link (mem-id) Link a memory as evidence (repeatable)
incident list [--status open|resolved|closed|all] [--limit N]
List incidents (table is authoritative, survives decay)
incident get (id) Show an incident by its table id
incident resolve (id) Resolve an open incident (open -> resolved)
--resolution "(text)" How it was resolved (required)
incident close (id) Retire (close) an open or resolved incident by its table id
process new "(name)" Record a process map (first-class object + memory mirror)
--step "(text)" An ordered step (repeatable)
--description "(text)" Optional summary of the process
process list [--status active|superseded|closed|all] [--limit N]
List processes (table is authoritative, survives decay)
process get (id) Show a process (with its steps) by its table id
process supersede (id) Record a new version that supersedes an active process
--step "(text)" A step of the new version (repeatable, required)
--change "" What changed in this version (the delta note)
--description "(text)" Optional summary of the new version
process close (id) Retire (close) an active process by its table id
policy new "(name)" Record a policy (bi-temporal first-class object + mirror)
--text "(rule)" The policy rule/statement (required)
--from "(iso)" Effective-from date (default: now)
--to "(iso)" Effective-to date (optional; open-ended if omitted)
policy list [--status active|superseded|closed|all] [--limit N]
List policies (table is authoritative, survives decay)
policy get (id) Show a policy by its table id
policy asof "(iso-date)" Show active policies in force at a valid-time
--name "(policy)" Filter to one policy by name
policy supersede (id) Record a new version that supersedes an active policy
--text "(rule)" The new rule (required)
--from "(iso)" New effective-from (default: now)
--to "(iso)" New effective-to (optional)
--change "" What changed in this version (the delta note)
policy close (id) Retire (close) an active policy by its table id
skill new "(name)" Record a skill (reusable agent-followable capability)
--instructions "(txt)" The skill body (required)
--trigger "(when)" Optional: when to apply this skill
skill list [--status active|superseded|closed|all] [--limit N]
List skills (table is authoritative, survives decay)
skill get (id) Show a skill by its table id
skill export Render active skills as an AGENTS.md/CLAUDE.md markdown block
skill supersede (id) Record a new version that supersedes an active skill
--instructions "(txt)" The new skill body (required)
--trigger "(when)" Optional new trigger
--change "" What changed in this version (the delta note)
skill close (id) Retire (close) an active skill by its table id
brief new "(repo)" Record a repo-scoped project brief
--summary "(text)" The brief body (required)
brief list [--status active|superseded|closed|all] [--repo "(repo)"] [--limit N]
List project briefs (table is authoritative, survives decay)
brief get (id) Show a project brief by its table id
brief supersede (id) Record a new version that supersedes an active brief
--summary "(text)" The new brief body (required)
--change "" What changed in this version (the delta note)
brief close (id) Retire (close) an active project brief by its table id
brief refresh "(repo)" Auto-assemble the brief from the repo's receipts (path:(repo))
--dry-run Print the assembled brief without writing it
note new "(customer)" Record a customer/account-scoped note
--text "(note)" The note body (required)
note list [--status active|superseded|closed|all] [--customer "(id)"] [--limit N]
List customer notes (table is authoritative, survives decay)
note get (id) Show a customer note by its table id
note supersede (id) Record a new version that supersedes an active note
--text "(note)" The new note body (required)
--change "" What changed in this version (the delta note)
note close (id) Retire (close) an active customer note by its table id
graph extract Rebuild the entity/relation graph from consolidated objects
(decisions/policies/customer-notes/project-briefs); idempotent
invalidate "(pattern)" Actively weaken memories matching an old pattern
--reason "(why)" Optional: what replaced it
wm Working memory β bounded buffer for current state
wm push Push a working memory entry
--scope (scope) Scope name (default: default)
--content (text) Content to store (required)
--importance (n) Priority 0-1 (default: 0.5)
--session (id) Session ID
--task (id) Task ID
wm read Read working memory entries
--scope (scope) Filter by scope
--session (id) Filter by session
--limit (n) Max entries (default: 20)
--json Output as JSON
wm clear Clear working memory entries
--scope (scope) Filter by scope
--session (id) Filter by session
wm flush Flush working memory (session end)
--scope (scope) Filter by scope
--session (id) Filter by session
dashboard Open web dashboard for memory health
--port (n) Port to serve on (default: 3333)
mcp Start MCP server (stdio transport)
goal dlPFC goal stack (B3) β scoped per session
goal push (name) Push a new active goal; prints the new goal id
--policy (type) schema-fit-biased | error-prioritized |
recency-first | hybrid
--success "(cond)" Optional success condition text
--level (n) Goal level (default: 0)
--parent (goalId) Parent goal id (for sub-goals)
--session-id Override session (defaults to HIPPO_SESSION_ID)
--tenant-id (t) Override tenant (defaults to HIPPO_TENANT)
goal list Show active goals as a table
--all Include suspended/completed goals
goal complete (id) Mark a goal completed
--outcome <0..1> Outcome score; >=0.7 boosts, <0.3 decays recalled mems
--no-propagate Close the goal without applying strength side-effects
goal suspend (id) Move an active goal to suspended
goal resume (id) Move a suspended goal back to active (depth-capped)
auth Manage API keys (A5 stub auth)
auth create Mint a new API key (plaintext shown ONCE)
--label Optional human label
--role (r) admin | member (default: admin; member blocked from /v1/sleep)
--tenant (id) Override tenant (defaults to HIPPO_TENANT)
--json Output as JSON
--global Operate on the global store
auth list List API keys (active by default)
--all Include revoked keys
--json Output as JSON
--global Operate on the global store
auth revoke (key_id) Revoke an API key (subsequent validate fails)
--json Output as JSON
--global Operate on the global store
audit Query the append-only audit log (A5 stub auth)
audit list List audit events for the active tenant
--op (op) Filter by op (remember | recall | promote |
supersede | forget | archive_raw | auth_revoke)
--since (iso) Lower bound on ts (ISO timestamp)
--limit (n) Max events (default: 100, max: 10000)
--json Output as JSON
--global Operate on the global store
Examples:
hippo init
hippo remember "FRED cache can silently drop series" --tag error
hippo recall "data pipeline issues" --budget 2000
hippo context --auto --budget 1500
hippo conflicts
hippo session log --id sess_123 --task "Ship feature" --type progress --content "Build is green, next step is docs"
hippo session latest --json
hippo session resume
hippo snapshot save --task "Ship feature" --summary "Tests are green" --next-step "Open the PR" --session sess_123
hippo handoff create --summary "PR is open, tests green" --next "Merge after review" --session sess_123 --artifact src/foo.ts
hippo embed --status
hippo watch "npm run build"
hippo learn --git --days 30
hippo promote mem_abc123
hippo sync
hippo setup
hippo hook install claude-code
hippo decide "Use PostgreSQL for new services" --context "JSONB support"
hippo incident "Prod outage: DB connection pool exhausted" --context "spike at 14:00"
hippo process new "Release" --step "run tests" --step "bump version" --step "publish"
hippo policy new "Data retention" --text "Delete logs after 90 days" --from 2026-01-01
hippo policy asof 2026-03-01 --name "Data retention"
hippo skill new "Run tests" --instructions "npm test before every commit" --trigger "before commit"
hippo skill export
hippo brief new "hippo" --summary "Agent-memory library; E2 first-class objects in progress"
hippo brief refresh "hippo"
hippo note new "Acme Corp" --text "Renewal call: wants SSO before Q3; champion is the VP Eng"
hippo note list --customer "Acme Corp" --status active
hippo graph extract
hippo invalidate "REST API" --reason "migrated to GraphQL"
hippo export memories.json
hippo export --format markdown memories.md
hippo sleep --dry-run
hippo outcome --good
hippo status reported 339 active memories, 13 episodic merges, 5 new semantic memories, and 5 duplicates removed.
The consolidation pass flagged 4 low-quality memories worth review with .
Some recall commands hit , so recall/export orchestration should avoid parallel hippo access in future runs.
Operational notes
\ found no fix/revert/bug commits in the last 7 days.
\ auto-shared 255 high-value memories to the global store.
\ reported 339/339 memories embedded and no pending items.
Next Actions
Review the 4 low-quality memories with .
Convert the 3 quick wins above into tracked follow-up work.
Update the hippo runner to serialize recall/export steps to avoid SQLite lock contention.
[!WARNING]
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
proxy.golang.org
To allow these domains, add them to the network.allowed list in your workflow frontmatter:
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
Top Memories Surfaced
Suggested Improvements
Error Patterns
Code Quality
CI Health
β Action pins synced successfully
Syncing install-gh-aw.sh to actions/setup-cli/install.sh...
β Action scripts synced successfully
go build -ldflags "-s -w -X main.version=c4fc1f2" -o gh-aw ./cmd/gh-aw early, then \ before shipping (, , ). This indicates CI failures are often preventable with better local gates rather than new infrastructure.
Quick Wins
Longer-term Themes
Memory Health
Hippo - biologically-inspired memory system for AI agents
Usage: hippo (command) [options]
Commands:
init Create .hippo/ structure in current directory
--scan [dir] Find all git repos under dir (default: ~) and init each
--days (n) Days of git history to seed (default: 365 for --scan, 30 for single)
--global Init the global store ($HIPPO_HOME or ~/.hippo/)
--no-hooks Skip auto-detecting and installing agent hooks
--no-schedule Skip auto-creating the machine-level daily runner
--no-learn Skip seeding memories from git history
remember (text) Store a memory
--tag (tag) Add a tag (repeatable)
--error Tag as error (boosts retention)
--pin Pin memory (never decays)
--verified Set confidence: verified (default)
--observed Set confidence: observed
--inferred Set confidence: inferred
--global Store in global store ($HIPPO_HOME or ~/.hippo/)
recall (query) Search and retrieve memories (local + global)
--budget (n) Token budget (default: 4000)
--min-results (n) Minimum results regardless of budget (default: 1)
--json Output as JSON
--why Show match reasons and source annotations
--hops (n) E3.2 multi-hop graph recall: also surface memories
reached by walking the entities/relations graph (n)
hops (0..3, default off) out from the lexical seeds.
Graph hits are tagged [graph: Nhop (rel)]. Today the
graph holds supersedes edges (E3.1); cross-object edges
light up the same traversal once extracted.
--max-neighbors (n) Per-hop fanout cap for --hops (1..200, default 25).
--graph-stream L1: fuse a graph-retrieval stream into RRF, re-ranking
in-pool results by graph proximity to the strong lexical
seeds. Implies rrf scoring (default is blend). Local store
only. Distinct from --hops (which injects out-of-pool
neighbours); this re-ranks within the candidate pool.
--graph-hops (n) Hops for --graph-stream (1..3, default 2).
--graph-seeds (n) Lexical anchors for --graph-stream (default 10). The stream
re-ranks the rank>seeds tail; on a pool with <= n candidates
every candidate is a seed and the stream is inert.
--no-mmr Disable MMR diversity re-ranking
--mmr-lambda (f) MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
--evc-adaptive ACC-style: when top-K shows high inter-item overlap
(= conflict cluster), expand pool and re-rank by
recency. Default off. RESEARCH.md Β§PFC.ACC.
--filter-conflicts vlPFC interference filter: drop superseded entries
and 0.3x-downweight entries flagged in an open
conflict with a peer in the same result set.
Uses recorded supersession + conflicts only β never
lexical inference. Default off. RESEARCH.md Β§PFC.vlPFC.
--value-aware vmPFC value attribution: boost memories with positive
cumulative outcomes and demote those with negative
outcomes during ranking. Multiplier
clip(1 + 0.3*tanh(pos - neg), 0.7, 1.3). Reuses
outcome_positive / outcome_negative; no schema
change. Default off. RESEARCH.md Β§PFC.vmPFC.
--rerank-utility OFC option-value re-ranker: combine relevance,
strength, and integration cost into a single utility
= score * (0.5 + 0.5 * strength) * (1 - cost_factor)
where cost_factor = min(0.3, tokens / 10000). Re-sorts
results by utility. Default off. RESEARCH.md Β§PFC.OFC.
--reranker (name) Apply a reranker pass after retrieval
(cross-encoder|llm). Looks up the named
reranker from src/rerankers/index.ts and re-orders
the top-K candidates. Default unset (no reranker).
See docs/plans/2026-05-10-f6-reranker-hardening.md.
--reranker-top-k (n) Cap candidates passed to the reranker (default 50).
--goal (tag) dlPFC goal-conditioned recall: memories tagged with
the goal tag get a 1.5x score boost and results are
re-sorted. Default off. RESEARCH.md Β§PFC.dlPFC.
--session-id (id) Session identifier for dlPFC goal-stack boost.
Defaults to $HIPPO_SESSION_ID. When set and the
(tenant, session) has active goals (see
'hippo goal push'), recall auto-boosts memories
whose tags match an active goal name. Boost stacks
on top of base BM25 score, capped at 3.0x.
--salience-threshold (n)
Pineal salience: down-weight memories whose
retrieval_count is below n. score *= max(0.5,
retrieval_count / n) for entries with count < n;
entries at or above n are unchanged. Salience emerges
from USE, not from lexical overlap. Default off.
RESEARCH.md Β§"AI Pineal Gland". (v1's creation-time
lexical gate destroyed LoCoMo 0.28 -> 0.02; this v2
is retrieval-side, opt-in only β see MEMORY.md
"Hippo salience gate destroys benchmark recall".)
--continuity Include continuity block (active task snapshot,
latest matching session handoff, last 5 session
events) above the memory list. Useful at agent
boot when you want both relevant memories AND
where you left off in one call. Anchored on the
active snapshot's session_id; no anchor = no
handoff/events (use 'hippo session resume' for
the explicit handoff-without-snapshot path).
explain (query) Show full score breakdown for each retrieved memory
--budget (n) Token budget (default: 4000)
--limit (n) Cap the number of results displayed
--json Output as JSON
--physics | --classic Force search mode (default: from config)
--no-mmr Disable MMR diversity re-ranking
--mmr-lambda (f) MMR balance 0..1 (default: 0.7, 1.0 = pure relevance)
trace (id) Memory dossier: content, decay trajectory, retrievals,
outcomes, consolidation parents, open conflicts
--json Output as JSON
refine Rewrite consolidated semantic memories with Claude
--limit (n) Cap the number of memories processed this run
--all Ignore
llm-refinedtag and re-refine everything--dry-run Call the API but don't write results back
--model (id) Override the default model (claude-sonnet-4-6)
--json Output summary as JSON
(requires ANTHROPIC_API_KEY in env)
eval [(corpus.json)] Measure recall quality against a test corpus
--bootstrap Generate a synthetic corpus from current memories
--out (path) With --bootstrap, write to file instead of stdout
--max-cases (n) With --bootstrap, cap case count (default: 50)
--show-cases Print per-case details (query, R@10, missed, top 3)
--compare (path) JSON from a prior
eval --jsonrun; print deltas--no-mmr Disable MMR for this eval run
--mmr-lambda (f) Override MMR lambda for this run
--embedding-weight (f) Override cosine weight (default: 0.6)
--local-bump (f) Local-over-global priority multiplier (default: 1.2)
--equal-sources Shortcut for --local-bump 1.0
--min-mrr (f) Exit non-zero if mean MRR falls below this
--json Output full summary as JSON
context Smart context injection for AI agents
--auto Auto-detect task from git state
--budget (n) Token budget (default: 1500)
--pinned-only Only inject pinned memories (used by UserPromptSubmit hook)
--include-recent (n) With --pinned-only, also inject the last N writes regardless of pinning
--format (fmt) Output format: markdown (default), json, or additional-context (Claude Code hook JSON)
--framing (mode) Framing: observe (default), suggest, assert
sleep Run consolidation pass (auto-learns + dedup + auto-shares)
--dry-run Preview without writing
--no-learn Skip auto git-learn before consolidation
--no-share Skip auto-sharing to global store
daily-runner Sweep registered workspaces and run daily learn+sleep
dedup Remove duplicate memories (keeps stronger copy)
--dry-run Preview without removing
--threshold (n) Overlap threshold 0-1 (default: 0.7)
status Show memory health stats
audit [--fix] Check memory quality (--fix removes junk)
github GitHub connector subcommands (backfill, dlq)
backfill --repo (owner/name) [--since ISO] [--max (N)]
Paginated backfill of issues + comments
dlq list List DLQ entries for the active tenant
dlq replay (id) [--force]
Re-ingest a DLQ entry (--force skips sig check)
provenance Provenance coverage gate for kind='raw' rows
--json Output as JSON
--strict Exit non-zero when coverage < 100%
drill Walk down a DAG level-2 summary to its children
--limit N Cap children list (default 50)
--budget N Cap total child token cost (β chars/4)
--json Output as JSON
assemble --session (id) Build a session's chronological context window
--budget N Token budget (default 4000)
--fresh-tail N Recent rows always kept verbatim (default 10)
--no-summarize-older Disable older-row summary substitution
--scope
Restrict to exact scope (default: deny :private:)--json Output as JSON
correction-latency Wall-clock lag from receipt to supersession (p50/p95/max)
--json Output as JSON
outcome Apply feedback to last recall
--good Memories were helpful
--bad Memories were irrelevant
--id (id) Target a specific memory
conflicts List detected open memory conflicts
--status (status) Filter by status (default: open)
--json Output as JSON
resolve (conflict_id) Resolve a memory conflict
--keep (memory_id) Memory to keep (required)
--forget Delete the losing memory (default: halve half-life)
snapshot Persist or inspect the current active task
snapshot save Save active task state
--task (task)
--summary
--next-step (step)
--source (source) Optional source label
--session (id) Link snapshot to a session trail
snapshot show Show the active task snapshot
--json Output as JSON
snapshot clear Clear the active task snapshot
--status (status) Mark final status (default: cleared)
session Append or inspect short-term session history
session log Append a structured session event
--id (session-id)
--content (text)
--type (type) Event type (default: note)
--task (task) Optional task label
--source (source) Optional source label
session show Show recent events for a session or task
--id (session-id)
--task (task)
--limit (n) Event limit (default: 8)
--json Output as JSON
session latest Show latest task snapshot + events
--id (session-id) Filter by session
--json Output as JSON
session resume Re-inject latest handoff as context output
--id (session-id) Filter by session
handoff Manage session handoffs for continuity
handoff create Create a new session handoff
--summary (text) Handoff summary (required)
--next (text) Next action for successor
--session (id) Session ID (auto-generated if omitted)
--task (id) Associated task ID
--artifact (path) Related file path (repeatable)
handoff latest Show the most recent handoff
--session (id) Filter by session
--json Output as JSON
handoff show (id) Show a specific handoff by ID
current Show compact current state for agent injection
current show Active task + recent session events (default)
--json Output as JSON
forget (id) Force remove a memory
--archive Archive a raw (append-only) memory instead of deleting
--reason "(why)" Reason recorded on the archive (required with --archive)
inspect (id) Show full memory detail
embed Embed all memories for semantic search
--status Show embedding coverage
watch "(command)" Run command, auto-learn from failures
learn Learn lessons from repository history
--git Scan recent git commits for lessons
--days (n) Scan this many days back (default: 7)
--repos (paths) Comma-separated repo paths to scan
promote (id) Copy a local memory to the global store
share (id) Share a memory with attribution + transfer scoring
--force Share even if transfer score is low
--auto Auto-share all high-transfer-score memories
--dry-run Preview what would be shared
--min-score (n) Minimum transfer score (default: 0.6)
peers List projects contributing to global store
sync Pull global memories into local project
import Import memories from other AI tools
--chatgpt (path) Import from ChatGPT memory export (JSON or txt)
--claude (path) Import from CLAUDE.md or Claude memory.json
--cursor (path) Import from .cursorrules or .cursor/rules
--file (path) Import from any markdown or text file
--markdown (path) Import from structured MEMORY.md / AGENTS.md
--vault (path) Import a markdown-vault FOLDER as kind='raw' notes
(Obsidian/Foam/Dendron). Requires --name (vault).
[--scope (scope)]
--dry-run Preview without writing
--global Write to global store ($HIPPO_HOME or ~/.hippo/)
--tag (tag) Add extra tag (repeatable)
export [file] Export all memories (default: stdout)
--format (fmt) Output format: json (default) or markdown
capture Extract memories from conversation text
--stdin Read from piped input
--file (path) Read from a file
--last-session Read from the most recent agent session transcript
--transcript (path) Explicit transcript path (implies --last-session)
--log-file (path) Tee output to a log file (paired with 'hippo last-sleep')
--dry-run Preview without writing
--global Write to global store ($HIPPO_HOME or ~/.hippo/)
setup One-shot: detect installed AI tools and install all
available SessionEnd+SessionStart hooks
--all Install for every JSON-hook tool, even if not detected
--dry-run Show what would be installed without writing
--no-schedule Skip installing or repairing the daily runner
last-sleep Print the last 'hippo sleep --log-file' output and clear it
--path
Log path (default: ~/.hippo/logs/last-sleep.log)
--keep Print without clearing
codex-run [-- ...args] Launch real Codex behind Hippo's session-end wrapper
hook [target] Manage framework integrations
hook list Show available hooks
hook install (target) Install hook (claude-code|codex|cursor|openclaw|opencode|pi)
claude-code/opencode install SessionEnd+SessionStart;
codex wraps the detected launcher in place
hook uninstall (target) Remove hook
decide "(decision)" Record a decision (first-class object + memory mirror)
--context "(why)" Why this decision was made
--supersedes (mem-id) Supersede the decision backed by this memory id
decide list [--status active|superseded|closed|all] [--limit N]
List decisions (table is authoritative, survives decay)
decide get (id) Show a decision by its table id
decide close (id) Retire (close) an active decision by its table id
incident "(incident)" Record an incident (first-class object + memory mirror)
--context "
Details
" What happened / surrounding detail--link (mem-id) Link a memory as evidence (repeatable)
incident list [--status open|resolved|closed|all] [--limit N]
List incidents (table is authoritative, survives decay)
incident get (id) Show an incident by its table id
incident resolve (id) Resolve an open incident (open -> resolved)
--resolution "(text)" How it was resolved (required)
incident close (id) Retire (close) an open or resolved incident by its table id
process new "(name)" Record a process map (first-class object + memory mirror)
--step "(text)" An ordered step (repeatable)
--description "(text)" Optional summary of the process
process list [--status active|superseded|closed|all] [--limit N]
List processes (table is authoritative, survives decay)
process get (id) Show a process (with its steps) by its table id
process supersede (id) Record a new version that supersedes an active process
--step "(text)" A step of the new version (repeatable, required)
--change "
" What changed in this version (the delta note)
--description "(text)" Optional summary of the new version
process close (id) Retire (close) an active process by its table id
policy new "(name)" Record a policy (bi-temporal first-class object + mirror)
--text "(rule)" The policy rule/statement (required)
--from "(iso)" Effective-from date (default: now)
--to "(iso)" Effective-to date (optional; open-ended if omitted)
policy list [--status active|superseded|closed|all] [--limit N]
List policies (table is authoritative, survives decay)
policy get (id) Show a policy by its table id
policy asof "(iso-date)" Show active policies in force at a valid-time
--name "(policy)" Filter to one policy by name
policy supersede (id) Record a new version that supersedes an active policy
--text "(rule)" The new rule (required)
--from "(iso)" New effective-from (default: now)
--to "(iso)" New effective-to (optional)
--change "
" What changed in this version (the delta note)
policy close (id) Retire (close) an active policy by its table id
skill new "(name)" Record a skill (reusable agent-followable capability)
--instructions "(txt)" The skill body (required)
--trigger "(when)" Optional: when to apply this skill
skill list [--status active|superseded|closed|all] [--limit N]
List skills (table is authoritative, survives decay)
skill get (id) Show a skill by its table id
skill export Render active skills as an AGENTS.md/CLAUDE.md markdown block
skill supersede (id) Record a new version that supersedes an active skill
--instructions "(txt)" The new skill body (required)
--trigger "(when)" Optional new trigger
--change "
" What changed in this version (the delta note)
skill close (id) Retire (close) an active skill by its table id
brief new "(repo)" Record a repo-scoped project brief
--summary "(text)" The brief body (required)
brief list [--status active|superseded|closed|all] [--repo "(repo)"] [--limit N]
List project briefs (table is authoritative, survives decay)
brief get (id) Show a project brief by its table id
brief supersede (id) Record a new version that supersedes an active brief
--summary "(text)" The new brief body (required)
--change "
" What changed in this version (the delta note)
brief close (id) Retire (close) an active project brief by its table id
brief refresh "(repo)" Auto-assemble the brief from the repo's receipts (path:(repo))
--dry-run Print the assembled brief without writing it
note new "(customer)" Record a customer/account-scoped note
--text "(note)" The note body (required)
note list [--status active|superseded|closed|all] [--customer "(id)"] [--limit N]
List customer notes (table is authoritative, survives decay)
note get (id) Show a customer note by its table id
note supersede (id) Record a new version that supersedes an active note
--text "(note)" The new note body (required)
--change "
" What changed in this version (the delta note)- The consolidation pass flagged 4 low-quality memories worth review with .
- Some recall commands hit , so recall/export orchestration should avoid parallel hippo access in future runs.
- \ found no fix/revert/bug commits in the last 7 days.
- \ auto-shared 255 high-value memories to the global store.
- \ reported 339/339 memories embedded and no pending items.
- Review the 4 low-quality memories with .
- Convert the 3 quick wins above into tracked follow-up work.
- Update the hippo runner to serialize recall/export steps to avoid SQLite lock contention.
note close (id) Retire (close) an active customer note by its table id
graph extract Rebuild the entity/relation graph from consolidated objects
(decisions/policies/customer-notes/project-briefs); idempotent
invalidate "(pattern)" Actively weaken memories matching an old pattern
--reason "(why)" Optional: what replaced it
wm Working memory β bounded buffer for current state
wm push Push a working memory entry
--scope (scope) Scope name (default: default)
--content (text) Content to store (required)
--importance (n) Priority 0-1 (default: 0.5)
--session (id) Session ID
--task (id) Task ID
wm read Read working memory entries
--scope (scope) Filter by scope
--session (id) Filter by session
--limit (n) Max entries (default: 20)
--json Output as JSON
wm clear Clear working memory entries
--scope (scope) Filter by scope
--session (id) Filter by session
wm flush Flush working memory (session end)
--scope (scope) Filter by scope
--session (id) Filter by session
dashboard Open web dashboard for memory health
--port (n) Port to serve on (default: 3333)
mcp Start MCP server (stdio transport)
goal dlPFC goal stack (B3) β scoped per session
goal push (name) Push a new active goal; prints the new goal id
--policy (type) schema-fit-biased | error-prioritized |
recency-first | hybrid
--success "(cond)" Optional success condition text
--level (n) Goal level (default: 0)
--parent (goalId) Parent goal id (for sub-goals)
--session-id
Override session (defaults to HIPPO_SESSION_ID)--tenant-id (t) Override tenant (defaults to HIPPO_TENANT)
goal list Show active goals as a table
--all Include suspended/completed goals
goal complete (id) Mark a goal completed
--outcome <0..1> Outcome score; >=0.7 boosts, <0.3 decays recalled mems
--no-propagate Close the goal without applying strength side-effects
goal suspend (id) Move an active goal to suspended
goal resume (id) Move a suspended goal back to active (depth-capped)
auth Manage API keys (A5 stub auth)
auth create Mint a new API key (plaintext shown ONCE)
--label
Optional human label--role (r) admin | member (default: admin; member blocked from /v1/sleep)
--tenant (id) Override tenant (defaults to HIPPO_TENANT)
--json Output as JSON
--global Operate on the global store
auth list List API keys (active by default)
--all Include revoked keys
--json Output as JSON
--global Operate on the global store
auth revoke (key_id) Revoke an API key (subsequent validate fails)
--json Output as JSON
--global Operate on the global store
audit Query the append-only audit log (A5 stub auth)
audit list List audit events for the active tenant
--op (op) Filter by op (remember | recall | promote |
supersede | forget | archive_raw | auth_revoke)
--since (iso) Lower bound on ts (ISO timestamp)
--limit (n) Max events (default: 100, max: 10000)
--json Output as JSON
--global Operate on the global store
Examples:
hippo init
hippo remember "FRED cache can silently drop series" --tag error
hippo recall "data pipeline issues" --budget 2000
hippo context --auto --budget 1500
hippo conflicts
hippo session log --id sess_123 --task "Ship feature" --type progress --content "Build is green, next step is docs"
hippo session latest --json
hippo session resume
hippo snapshot save --task "Ship feature" --summary "Tests are green" --next-step "Open the PR" --session sess_123
hippo handoff create --summary "PR is open, tests green" --next "Merge after review" --session sess_123 --artifact src/foo.ts
hippo embed --status
hippo watch "npm run build"
hippo learn --git --days 30
hippo promote mem_abc123
hippo sync
hippo setup
hippo hook install claude-code
hippo decide "Use PostgreSQL for new services" --context "JSONB support"
hippo incident "Prod outage: DB connection pool exhausted" --context "spike at 14:00"
hippo process new "Release" --step "run tests" --step "bump version" --step "publish"
hippo policy new "Data retention" --text "Delete logs after 90 days" --from 2026-01-01
hippo policy asof 2026-03-01 --name "Data retention"
hippo skill new "Run tests" --instructions "npm test before every commit" --trigger "before commit"
hippo skill export
hippo brief new "hippo" --summary "Agent-memory library; E2 first-class objects in progress"
hippo brief refresh "hippo"
hippo note new "Acme Corp" --text "Renewal call: wants SSO before Q3; champion is the VP Eng"
hippo note list --customer "Acme Corp" --status active
hippo graph extract
hippo invalidate "REST API" --reason "migrated to GraphQL"
hippo export memories.json
hippo export --format markdown memories.md
hippo sleep --dry-run
hippo outcome --good
hippo status reported 339 active memories, 13 episodic merges, 5 new semantic memories, and 5 duplicates removed.
Operational notes
Next Actions
Beta Was this translation helpful? Give feedback.
All reactions