{"id":47666136,"url":"https://github.com/rememora/rememora","last_synced_at":"2026-04-26T23:01:55.683Z","repository":{"id":345810397,"uuid":"1183800084","full_name":"Rememora/rememora","owner":"Rememora","description":"Persistent, cross-agent memory for AI coding agents. Rust CLI + SQLite. Install as a Claude Code plugin — everything is automatic.","archived":false,"fork":false,"pushed_at":"2026-04-12T00:20:52.000Z","size":1355,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-12T00:34:59.724Z","etag":null,"topics":["ai","ai-agents","claude-code","claude-code-plugin","cli","codex","cross-agent","developer-tools","gemini-cli","local-first","memory","rust","sqlite"],"latest_commit_sha":null,"homepage":"https://rememora.ai","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rememora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-17T00:50:52.000Z","updated_at":"2026-04-11T22:38:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Rememora/rememora","commit_stats":null,"previous_names":["rememora/rememora"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Rememora/rememora","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rememora%2Frememora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rememora%2Frememora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rememora%2Frememora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rememora%2Frememora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rememora","download_url":"https://codeload.github.com/Rememora/rememora/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rememora%2Frememora/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31952206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"ssl_error","status_checked_at":"2026-04-18T00:39:20.671Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","claude-code","claude-code-plugin","cli","codex","cross-agent","developer-tools","gemini-cli","local-first","memory","rust","sqlite"],"created_at":"2026-04-02T11:58:11.061Z","updated_at":"2026-04-26T23:01:55.676Z","avatar_url":"https://github.com/Rememora.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rememora\n\n[![GitHub release](https://img.shields.io/github/v/release/Rememora/rememora?style=flat-square)](https://github.com/Rememora/rememora/releases)\n[![CI](https://img.shields.io/github/actions/workflow/status/Rememora/rememora/ci.yml?style=flat-square\u0026label=CI)](https://github.com/Rememora/rememora/actions)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)\n[![Homebrew](https://img.shields.io/badge/brew-Rememora%2Ftap-orange?style=flat-square)](https://github.com/Rememora/homebrew-tap)\n\nPersistent, cross-agent memory for AI coding agents. One SQLite database, shared by every agent you use.\n\n**The problem:** Claude Code, Codex, and Gemini CLI each lose context between sessions. Switch agents mid-task and you start from scratch. Come back to a project after a week and the agent has forgotten everything.\n\n**Rememora fixes this.** A fast Rust CLI that any agent can call via Bash to save and retrieve memories, transfer working context between agents, and build up project knowledge over time — with autonomous curation that extracts memories from session transcripts without manual intervention.\n\n```bash\n# Agent A (Claude Code) saves a decision\nrememora save \"Chose Zustand over Redux for state management\" \\\n  --category decision --project myapp --importance 0.9\n\n# Agent B (Codex) picks up full context\nrememora context --project myapp\n# → Returns: project memories + last session state + working context\n```\n\n## Features\n\n- **Cross-agent memory** — Claude Code, Codex, Gemini CLI, or any agent with Bash access\n- **Session transfer** — hand off working state between agents with full continuity\n- **6 memory categories** — preferences, entities, decisions, events, cases, patterns\n- **Tiered loading** — L0 abstracts (~100 tok) → L1 overviews (~500 tok) → L2 full content\n- **Hotness scoring** — frequently accessed + important memories surface first\n- **Full-text search** — BM25 via SQLite FTS5, zero external dependencies\n- **Vector search** — optional cosine similarity via sqlite-vec + sentence-transformers (feature-gated)\n- **Hybrid search** — reciprocal rank fusion (RRF) merging BM25 + vector results\n- **Autonomous curation** — LLM-powered memory extraction from Claude Code session transcripts\n- **Memory consolidation** — smart dedup, merge, and pruning of stale memories via LLM\n- **Agent orchestration** — dispatch GitHub issues to Claude CLI with quality gates and retry loops\n- **Eval benchmark** — multi-scenario harness measuring instruction compliance and autonomous behavior\n- **Fast** — ~3ms startup, 3.6MB binary, single SQLite database with WAL\n- **Local-first** — everything stays on your machine\n\n## Install\n\n```bash\n# Homebrew (macOS \u0026 Linux)\nbrew install Rememora/tap/rememora\n\n# From source\ncargo install --path .\n\n# Or download from GitHub Releases\n# https://github.com/Rememora/rememora/releases\n```\n\n## Quick Start\n\n```bash\n# Register a project\nrememora project add myapp --path /Users/me/myapp --description \"Mobile app\" --stack react-native,typescript\n\n# Start a tracked session\nrememora session start --agent claude-code --project myapp --intent \"implementing auth flow\"\n# → prints session ID\n\n# Save memories as you work\nrememora save \"Uses expo-secure-store for token storage\" --category decision --project myapp --importance 0.8\nrememora save \"Stripe API requires idempotency keys for charges\" --category entity --project myapp\nrememora save \"iOS build fails with Hermes + RN 0.76 — disable new arch\" --category case --project myapp\n\n# Search memories\nrememora search \"authentication\" --project myapp\n\n# End session with summary\nrememora session end \u003csession-id\u003e \\\n  --summary \"Auth flow complete. Login, signup, token refresh all working.\" \\\n  --working-state \"Need to add biometric auth. Files: src/auth/\"\n```\n\n## Cross-Agent Transfer\n\nThe core use case — seamless handoff between agents:\n\n```bash\n# 1. Claude Code finishes work, hands off\nrememora session end \u003cid\u003e --status transferred \\\n  --summary \"Auth flow 80% done\" \\\n  --working-state \"Login UI done. Token refresh blocked on secure storage decision.\"\n\n# 2. Switch to Codex — it loads full context\nrememora context --project myapp\n# Returns markdown with:\n#   - All project memories (decisions, entities, cases, patterns)\n#   - Last session summary + working state\n#   - Transfer status\n\n# 3. Codex continues where Claude Code left off\nrememora session start --agent codex --project myapp \\\n  --intent \"resolve secure storage and finish token refresh\" \\\n  --parent \u003cprevious-session-id\u003e\n```\n\n## Autonomous Curation\n\nRememora can automatically extract memories from Claude Code sessions without manual intervention:\n\n```bash\n# Auto-discover and curate all Claude Code session transcripts\nrememora curate --auto\n\n# Curate a specific session file\nrememora curate --file ~/.claude/projects/.../session.jsonl --project myapp\n\n# Preview what would be extracted (dry-run)\nrememora curate --auto --dry-run\n```\n\n**How it works:**\n1. **JSONL parsing** — reads Claude Code session transcripts incrementally (watermark-based, never re-processes old content)\n2. **Signal gate** — fast Haiku classification: does this transcript contain memorable knowledge? (YES/NO)\n3. **AUDN curation** — Sonnet subagent with Bash access runs the full Add/Update/Delete/Noop cycle via `rememora save/search/supersede`\n4. **Consolidation** — smart dedup via BM25 clustering + LLM-powered merge/prune\n\nIntegrates with Claude Code hooks for fully autonomous operation — memories are extracted after every conversation turn.\n\n## Memory Consolidation\n\nOver time, memories accumulate duplicates and stale entries. Rememora consolidates them:\n\n```bash\n# Find and merge similar memories using LLM\nrememora evolve --project myapp\n\n# Preview clusters without applying changes\nrememora evolve --project myapp --dry-run\n\n# Check if consolidation gate is met (24h + 5 new memories)\nrememora consolidate --project myapp --check-only\n```\n\nThe consolidation system uses BM25 cross-search to find similar memory clusters, then an LLM decides whether to merge, supersede, prune, or keep each cluster.\n\n## Agent Orchestration\n\nDispatch GitHub issues to Claude CLI agents with quality gates:\n\n```bash\n# Run a single issue\nrememora agent-run --repo owner/repo --issue 42 --retries 3\n\n# Watch project board and auto-dispatch Ready-For-Dev issues\nrememora agent-loop --repo owner/repo --poll 300\n\n# One-shot: process current Ready-For-Dev items and exit\nrememora agent-loop --repo owner/repo --once\n```\n\n**`agent-run` workflow:**\n1. Fetch issue from GitHub → move to \"In Progress\"\n2. Create isolated git worktree\n3. Run Claude CLI with issue context\n4. Quality gate: run tests, retry on failure (configurable retries)\n5. Open PR → move to \"Ready for Review\"\n\n**`agent-loop`** polls the GitHub project board continuously, dispatching Ready-For-Dev issues and merging Cherry-Picked PRs.\n\n## Agent Setup\n\n### Claude Code (Recommended: Plugin)\n\nInstall Rememora as a Claude Code plugin for **fully autonomous operation**:\n\n```bash\n# 1. Add the Rememora marketplace\nclaude plugin marketplace add Rememora/rememora\n\n# 2. Install the plugin\nclaude plugin install rememora@rememora\n\n# For project-wide install (shared via git):\nclaude plugin install rememora@rememora --scope project\n```\n\nThis gives you hooks + skills that work automatically — no manual commands needed:\n\n| Component | What it does |\n|-----------|-------------|\n| **SessionStart hook** | Loads project context + starts rememora session |\n| **SessionEnd hook** | Closes the active session |\n| **Stop hook** | Curates memories from the session transcript after each turn |\n| **rememora-save skill** | Claude autonomously saves decisions, bug fixes, patterns |\n| **rememora-search skill** | Claude autonomously searches before implementations |\n| **`/rememora` command** | Manual save, search, or status check |\n\nAfter installing, restart Claude Code. The plugin auto-detects your project from the working directory.\n\n**Configuration:**\n\n- `REMEMORA_CURATE_COOLDOWN_SECS` (default: `300`) — minimum idle seconds between automatic curation runs from the Claude Code `Stop` hook, per session. The Stop hook fires after every agent turn. The plugin enforces **at most one in-flight `rememora curate` per session** via a kernel-level concurrency gate (`pgrep` on the session ID); this setting layers on top as a secondary frequency gate, bounding how long to wait after a curate *finishes* before another is allowed. Set to `0` to disable the cooldown — the concurrency gate still applies. A final curation pass always runs at `SessionEnd` regardless of cooldown, so the tail of the session is never lost.\n\n### Claude Code (Alternative: CLAUDE.md)\n\nIf you prefer manual control, add to `~/.claude/CLAUDE.md`:\n\n```markdown\n## Rememora Memory System\nOn session start:\n1. `rememora context --auto` — load prior context\n2. `rememora session start --agent claude-code --project \u003cname\u003e --intent \"...\"`\n\nDuring work, save important discoveries:\n- `rememora save \"...\" --category decision --project \u003cname\u003e`\n\nBefore ending: `rememora session end \u003cid\u003e --summary \"...\" --working-state \"...\"`\n```\n\n### Codex\n\nAdd to `~/.codex/config.toml`:\n\n```toml\nsystem_prompt = \"\"\"\nOn session start: run `rememora context --auto` and `rememora session start --agent codex ...`\nSave important discoveries with `rememora save ...`\nBefore ending: `rememora session end \u003cid\u003e --summary \"...\" --working-state \"...\"`\n\"\"\"\n```\n\n### Gemini CLI\n\nAdd to `~/.gemini/GEMINI.md` using the same pattern as the Claude Code CLAUDE.md approach.\n\n### Auto-Setup (All Agents)\n\n```bash\n# Detect installed agents and show what would be configured\nrememora setup\n\n# Apply the configuration\nrememora setup --apply\n```\n\nAuto-detects Claude Code, Codex, and Gemini CLI, then patches their config files with rememora instructions.\n\n## Desktop App\n\nA native desktop app built with Tauri for browsing memories visually.\n\n![Rememora Desktop Dashboard](docs/img/desktop-dashboard.png)\n\n```bash\ncd desktop\npnpm install\ncargo tauri dev\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `rememora save \"...\" --category \u003ccat\u003e` | Save a memory |\n| `rememora search \"query\" [--format compact\\|context\\|full]` | Search memories (BM25 + optional vector) |\n| `rememora timeline --anchor \u003curi\u003e [--before N] [--after N]` | Chronological (or hotness-ranked) slice around an anchor |\n| `rememora context --project \u003cname\u003e` | Load full project context (L0 + L1) |\n| `rememora context --auto` | Auto-detect project from cwd |\n| `rememora context --cheatsheet` | Compact top-5 summary |\n| `rememora get \u003curi\u003e` | Get specific context by URI |\n| `rememora session start` | Start a tracked session |\n| `rememora session end \u003cid\u003e` | End session with summary |\n| `rememora session end-active` | End active session (hook-friendly) |\n| `rememora session resume --project \u003cname\u003e` | Show last session state |\n| `rememora session list` | List recent sessions |\n| `rememora project add \u003cname\u003e` | Register a project |\n| `rememora project list` | List all projects |\n| `rememora project show \u003cname\u003e` | Show project details |\n| `rememora supersede \u003cold-id\u003e --by \u003cnew-id\u003e` | Replace outdated memory |\n| `rememora relate \u003curi-a\u003e \u003curi-b\u003e` | Link two contexts |\n| `rememora extract` | Extract memories from text via LLM |\n| `rememora curate --auto` | Curate memories from session transcripts |\n| `rememora evolve --project \u003cname\u003e` | LLM-driven memory consolidation |\n| `rememora consolidate --project \u003cname\u003e` | Smart dedup with dual gate |\n| `rememora agent-run --repo X --issue N` | Dispatch issue to Claude CLI |\n| `rememora agent-loop --repo X` | Watch board + auto-dispatch |\n| `rememora setup` | Configure agents to use rememora |\n| `rememora eval` | DB compliance metrics |\n| `rememora status` | Show DB stats |\n| `rememora export --project \u003cname\u003e` | Export as JSON or markdown |\n\nAll commands support `--json` for structured output.\n\n## Progressive Disclosure: search → timeline → get\n\nRetrieving a single memory at full fidelity eats tokens fast. Rememora splits retrieval into three cheap steps so agents can filter before paying the full cost:\n\n```bash\n# 1. Filter — one line per hit, ~75 tokens each\nrememora search \"auth flow\" --project myapp --format compact\n# [case] Bug fixed: token refresh race … — rememora://…/bug-fixed-token-refresh-race (rank=-3.82)\n# [decision] Chose JWT over session cookies … — rememora://…/chose-jwt-over-session-cookies  (rank=-3.41)\n# [pattern] Auth middleware composition … — rememora://…/auth-middleware-composition       (rank=-3.05)\n\n# 2. Zoom — chronological slice around an anchor to understand what surrounded the decision\nrememora timeline --anchor \"rememora://projects/myapp/memories/decision/chose-jwt-over-session-cookies\" \\\n    --before 3 --after 3\n# Before\n# - [case] Investigated session-cookie CSRF hardening … — 2026-03-14T…\n# - [event] Benchmarked JWT verify latency in middleware … — 2026-03-15T…\n# - [pattern] Double-submit cookie pattern for CSRF … — 2026-03-15T…\n# Anchor\n# - [decision] Chose JWT over session cookies … — 2026-03-16T…\n# After\n# - [case] Refresh-token rotation leak caught in review — 2026-03-18T…\n# …\n\n# 3. Fetch — full content (L2) of a single URI when you're sure you want it\nrememora get \"rememora://projects/myapp/memories/decision/chose-jwt-over-session-cookies\"\n```\n\nOutput formats for `search`:\n\n| `--format` | Shape | Typical use |\n|---|---|---|\n| `full` (default) | Multi-line per hit with name + URI | Human in terminal |\n| `compact` | One line per hit with score, ~75 tok/hit | Agent filtering |\n| `context` | One line per hit, byte-capped (2 KB) | `UserPromptSubmit` hook injection |\n\nTimeline ordering: `--by ts` (default, creation time) or `--by hotness` (importance × recency × active_count). Project scope: explicit `--project` wins; otherwise inferred from the anchor URI.\n\n## Auto-Extract Memories\n\nExtract memories from session transcripts, notes, or any text using an LLM:\n\n```bash\n# Pipe text and preview what would be extracted\ncat session_log.txt | rememora extract --project myapp\n\n# Extract and save directly\ncat session_log.txt | rememora extract --project myapp --save --agent claude-code\n\n# From a file\nrememora extract --file notes.md --project myapp --save\n\n# JSON output for programmatic use\nrememora extract --file notes.md --project myapp --json\n```\n\nRequires `ANTHROPIC_API_KEY` environment variable. Uses Claude Haiku for fast, cheap extraction.\n\n## Memory Categories\n\n| Category | Use for | Example |\n|----------|---------|---------|\n| `preference` | User/project preferences | \"prefers Zustand over Redux\" |\n| `entity` | Key concepts, APIs, tools | \"Stripe API uses idempotency keys\" |\n| `decision` | Architecture \u0026 design choices | \"chose expo-router over React Navigation\" |\n| `event` | Milestones, releases, incidents | \"v2.0 shipped 2026-03-01\" |\n| `case` | Specific problem + solution | \"iOS build fails with Hermes + RN 0.76\" |\n| `pattern` | Reusable processes | \"always run migrations before seeding\" |\n\n## Architecture\n\n### Core Storage\n\n- **Single SQLite database** at `~/.rememora/rememora.db` with WAL mode for concurrent access\n- **URI-based hierarchy**: `rememora://projects/{name}/memories/{category}/{slug}`\n- **Unified contexts table** — memories, projects, resources all in one table, differentiated by type\n- **Tiered loading** — each context has L0 (abstract), L1 (overview), L2 (content) fields\n- **Hotness scoring**: `sigmoid(log1p(access_count)) * exp(-age/half_life)` blended 30/70 with importance\n- **FTS5 full-text search** with auto-synced triggers on insert/update/delete\n- **Soft deletion** via `superseded_by` pointers (audit trail, no data loss)\n\n### Search\n\n- **BM25** — FTS5-based search across name, abstract, overview, content, tags, category\n- **Vector search** — optional cosine similarity via sqlite-vec + `all-MiniLM-L6-v2` (384-dim, feature-gated)\n- **Hybrid RRF** — reciprocal rank fusion merges BM25 + vector results: `RRF(d) = Σ 1/(k+rank)` with k=60\n- **Pluggable embedding backend** — `EmbedBackend` trait with Candle implementation (Metal GPU + CPU fallback)\n\n### Autonomous Curation Pipeline\n\n```\nSession JSONL → Watermark (incremental) → Signal Gate (Haiku) → AUDN Curator (Sonnet) → rememora save/search/supersede\n```\n\n- **Watermark tracking** — byte offset per session file, never re-processes old content\n- **Signal gate** — fast Haiku YES/NO classification (min 500 chars, max 32KB transcript)\n- **AUDN cycle** — Sonnet subagent with Bash access runs Add/Update/Delete/Noop\n- **Consolidation** — BM25 clustering + LLM merge/supersede/prune with dual gate (24h + 5 new memories)\n- **Audit trail** — curator log tracks every action with model, reason, and timestamp\n\n### Three-Layer Integration\n\n```\n┌─────────────────────────────────────────────┐\n│ Layer 3: Multi-Agent Orchestration          │\n│ agent-run, agent-loop, developer/triage     │\n│ agents, atomic locking, git worktrees       │\n├─────────────────────────────────────────────┤\n│ Layer 2: Claude Code Plugin                 │\n│ Hooks (SessionStart, SessionEnd, Stop)      │\n│ Skills (save, search, init)                 │\n├─────────────────────────────────────────────┤\n│ Layer 1: CLI Core                           │\n│ save, search, context, session, curate,     │\n│ evolve, extract, agent-run, eval, export    │\n└─────────────────────────────────────────────┘\n```\n\n### Database Schema (3 migrations)\n\n| Table | Purpose |\n|-------|---------|\n| `contexts` | Unified memory storage (18 columns, ULID PKs, URI hierarchy, L0/L1/L2 layers) |\n| `contexts_fts` | FTS5 virtual table (auto-synced via triggers) |\n| `sessions` | Agent session tracking with parent chains for transfer |\n| `relations` | Bidirectional inter-context links (related, depends_on, derived_from, supersedes) |\n| `context_embeddings` | Vector storage (f32 BLOB, feature-gated) |\n| `vec_contexts` | sqlite-vec KNN index (feature-gated) |\n| `watermarks` | Incremental curation byte offsets per session file |\n| `curator_log` | Audit trail of curation actions (add/update/delete/noop) |\n| `consolidation_runs` | Memory consolidation run history |\n\n## Eval Benchmark\n\nA TypeScript harness for measuring rememora instruction compliance and autonomous agent behavior.\n\n```bash\ncd bench\n\n# Quick scenario eval (6 scenarios)\npnpm run eval -- --cli claude-code\n\n# Multi-task sequence with experiment condition\npnpm run eval:long -- --sequence tasks/instruction-mode-eval.json --condition conditions/full-hybrid.json\n\n# Run all conditions in matrix mode\npnpm run eval:matrix -- --sequence tasks/instruction-mode-eval.json\n\n# Compare results across conditions\npnpm run compare:conditions\n```\n\n**Quick scenarios** test isolated rememora CLI compliance: session start, save decision, save case, search, transfer handoff, session end.\n\n**Long-run sequences** measure autonomous behavior across multi-task workflows (8 tasks simulating real project development). Five instruction delivery modes are compared:\n\n| Condition | Description |\n|-----------|-------------|\n| `none` | No rememora instructions (baseline) |\n| `reference-card` | Quick command reference |\n| `behavioral-triggers` | \"When to SEARCH\", \"When to SAVE\" guidance |\n| `hooks-only` | Minimal reminders |\n| `full-hybrid` | Comprehensive MANDATORY protocol |\n\nResults are exported as **Braintrust-aligned JSONL** (`input/output/expected/scores/metadata`), importable into AI Foundry, Langfuse, LangSmith, and OpenAI Evals with thin adapters.\n\n**Runners:** Claude Code, Codex, Claude Tmux (interactive).\n\n## Development\n\n```bash\ncargo test          # 124 tests (121 pass, 3 ignored)\ncargo build         # Debug build\ncargo clippy        # Lint\n```\n\n### Source Structure\n\n| Module | Purpose |\n|--------|---------|\n| `main.rs` | CLI entry point (clap, 19 commands) |\n| `db.rs` | SQLite connection, WAL, 3 migrations |\n| `uri.rs` | `rememora://` URI parsing \u0026 building |\n| `models/context.rs` | Context CRUD + FTS5 |\n| `models/session.rs` | Session lifecycle + transfer chains |\n| `models/project.rs` | Project metadata + CWD detection |\n| `models/relation.rs` | Bidirectional context links |\n| `models/watermark.rs` | Curation watermarks + curator log + consolidation runs |\n| `hierarchy.rs` | L0/L1 context assembly |\n| `hotness.rs` | Scoring: sigmoid(log1p(access)) * exp(-age/7) |\n| `search.rs` | BM25 + vector + reciprocal rank fusion |\n| `format.rs` | Markdown/JSON output formatting |\n| `curator.rs` | Signal gate + AUDN subagent curation |\n| `jsonl.rs` | Claude Code session JSONL parser + noise filtering |\n| `evolve.rs` | BM25 clustering for memory consolidation |\n| `embed/mod.rs` | EmbedBackend trait |\n| `embed/candle.rs` | Candle implementation (all-MiniLM-L6-v2, 384-dim) |\n| `commands/*` | Individual command implementations |\n\n### Dependencies\n\n**Core:** rusqlite (bundled), clap 4, serde, ulid, chrono, dirs, anyhow, cliclack, ureq\n\n**Embedding (feature-gated):** candle-core/nn/transformers, hf-hub, tokenizers, sqlite-vec\n\n**Feature flags:** `embed-candle` (vector search via Candle), `embed-llamacpp` (stub), `metal` (Apple GPU)\n\n## Roadmap\n\n- [x] Auto-extraction of memories from text via LLM\n- [x] Homebrew formula (`brew install Rememora/tap/rememora`)\n- [x] Claude Code hooks for automatic session tracking\n- [x] Autonomous curation from session transcripts\n- [x] Memory consolidation (evolve + consolidate)\n- [x] Agent orchestration (agent-run + agent-loop)\n- [x] Agent auto-setup (detect + configure)\n- [x] Eval benchmark harness (scenarios + long-run + conditions matrix)\n- [x] Cheatsheet context mode (compact top-5 summary)\n- [ ] Vector search via candle + sqlite-vec (hybrid BM25 + cosine similarity)\n- [x] Hierarchical retrieval with score propagation\n- [ ] Memory evolution — LLM-based consolidation of old memories\n- [x] TUI dashboard for browsing memories\n\n## Insights\n\nNon-obvious gotchas and design decisions discovered while building rememora: **[Engineering Insights](docs/insights.md)**\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frememora%2Frememora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frememora%2Frememora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frememora%2Frememora/lists"}