Full feature parity with claude-mem.
- Cargo workspace structure
- Core types (Observation, Session, SessionSummary)
- PostgreSQL storage with migrations
- tsvector + GIN full-text search
- Migrate storage.rs → crates/storage (PostgreSQL-only)
- Migrate llm.rs → crates/llm
- Migrate http.rs → crates/http
- Migrate mcp.rs → crates/mcp
- Dual session IDs (content_session_id, memory_session_id)
- Session status tracking (active, completed, failed)
- Prompt counter per session
- User prompts storage (separate table)
- Structured summary (request, investigated, learned, completed, next_steps)
- Auto-generate on session end (Stop hook)
- FTS for summaries
- pgvector integration
- Local embedding model (BGE-M3 via fastembed/ort, 1024d, multilingual)
- Hybrid search (tsvector BM25 50% + vector cosine similarity 50%)
- Granular sync (each field → separate embedding)
- Index layer (id, title, subtitle only — minimal tokens)
- Timeline layer (anchor-based context retrieval)
- Full layer (complete observation data)
-
__IMPORTANTtool (workflow documentation)
- SessionStart hook → inject memories
- Configurable observation count (total, full)
- Interleaved timeline (observations + summaries)
- Token economics display
-
chat.messagehook (capture user prompts) -
experimental.chat.system.transform(inject context) -
experimental.chat.messages.transform(enrich messages) -
tool.execute.after(capture observations) -
eventhook (session lifecycle)
-
<private>tag stripping -
<opencode-mem-context>anti-recursion tags - settings.json configuration
- Mode profiles (code, code--ru, etc.)
- Axum + htmx viewer
- Real-time observation stream (SSE)
- Session timeline view
- Search interface
| claude-mem file | opencode-mem crate |
|---|---|
src/services/sqlite/Database.ts |
crates/storage |
src/services/sqlite/SessionStore.ts |
crates/storage |
src/services/sqlite/SessionSearch.ts |
crates/search |
src/services/sync/ChromaSync.ts |
crates/embeddings |
src/services/context/ContextBuilder.ts |
crates/service |
src/services/worker-service.ts |
crates/http |
src/servers/mcp-server.ts |
crates/mcp |
plugin/hooks/* |
crates/cli (hook subcommands) |