πΊοΈ Roadmap
July 17, 2026 Β· View on GitHub
Path from memxt today to full drop-in parity with the upstream Python mempalace package, then to outmatching it with capabilities the Python stack cannot reach.
Legend: [x] done Β· [~] partial Β· [ ] planned
Phase 0.4 β Next-gen agents (v0.4.0)
Memory as a participant in the agent loop. Built by 7 parallel agents in isolated worktrees, merged and verified centrally (44 unit + 14 integration tests, N-writer stress bench).
- Procedural memory β
proceduresmined from transcript Bash sequences;memxt skills [--emit];memory_proceduresMCP tool - MCP sampling β opt-in (
MEMXT_SAMPLING=1) client-model fact extraction onmemory_store; zero API keys - MCP resources + annotations β
memxt://wing/<name>[/room/<name>]markdown indexes; readOnly/destructive hints per tool - Grounded memory β
anchors(path + content hash) on mine/store;[stale]tags at recall;memxt anchors --verify - Token-budget recall β
budget_tokenson memory_search/memory_wake_up; packer with facts-first packing;wake-up --budget - Fleet readiness β WAL + busy-retry writes,
sourceattribution, scratch tier +memory_promote,scripts/bench-concurrent.sh - Usage-learned relevance β retrieval telemetry, smoothed fetch-through utility, ranking boost, dream promote/decay
- Dream daemon β
dream --daemon|--status|--contradictions; contradiction detection, near-dup merge, precomputed wake briefs
Phase 0.3 β Launch (v0.3.0)
- Facts + profiles + supersession + multi-mode search
- Progressive disclosure:
memory_search(index) βmemory_get - Claude hooks: SessionStart + PreCompact + Stop (verbatim autosave, no cloud LLM)
- Dream hot budget + 4-bit cold vectors;
inspect+serveUI - Continuity bench 6/6 + token savings measurement
- Multi-harness: Claude plugin + Codex/Cursor/Grok adopt/instructions
- Viral README + vs claude-mem / Mem0 / Zep matrix
Phase 0 β Shipped (v0.2)
Real, working local memory engine + Claude Code integration. Verified end-to-end against Claude Code 2.1.191.
-
init/statsβ palace DB bootstrap + pragma mapping -
mine <path> [wing]β concurrent file ingestion; directory walker fixed (v0.1 mis-routed dirs to the conversation path β 0 files) - Real on-device embeddings β
llama.cppMiniLM-L6-v2 (384-dim), Metal/CUDA, mean-pooled + L2-normalized (was a placeholder dummy vector) -
search <query>βsqlite-vecretrieval with corrected hybrid scoring (the old score was inverted β best match ranked last) - Static linking fixed β links the cmake-built
llama.cpp.aarchives, not Homebrew dylibs (which crashed with a duplicate-dylib error) -
wake-up [--wing X]β L0+L1 context loader (~600β900 tok) -
mcpβ real MCP server:memory_search/memory_store/memory_wake_up/memory_stats, lazy model load, protocol-version echo (was a hardcoded stub) -
hookβ real Claude Code protocol: SessionStart injects wake-up viaadditionalContext; PreCompact reads the transcript and auto-saves the tail (was a custom protocol + a nag) - Claude Code plugin β
claude-plugin/+ marketplace manifest: MCP server + hooks +using-memoryskill +/remember/recallcommands; one global palace viaMEMXT_DB/_MODELenv overrides -
kg [subject]β knowledge-graph relationship query (manual population) -
instructionsβ memory-instruction emitter -
mempalace.yaml+memxt.yamlconfig + env-var overrides - MIT license, GitHub Actions CI, one-line curl installer (now fetches a 384-dim model)
- Honest benchmarks vs the real engine (
BENCHMARK.md); retrieval 7/7 top-1 on a paraphrase test
Phase 1 β Full Parity (v0.2)
Close every remaining gap with the upstream pip install mempalace surface. Each item blocks the "100% drop-in" claim.
β Upstream CLI audit is still pending (PyPI fetch was blocked during planning). These items are inferred from project structure and the typical memory-tool surface. Cross-check against the upstream docs before cutting v0.2.
- Directory walker bug β fixed in v0.2. Root cause was
cmdMineusingopenFileto discriminate (it succeeds on directories in Zig 0.16's IO), mis-routing dirs to the conversation path; now discriminates withopenDir. -
mineflag parity β--wing,--room,--recursive,--ignore,--dry-run -
searchflag parity β--limit,--wing,--format=json|md|plain(threshold still open) -
initvsstatsβ upstream usesinit; alias ourstatswhere appropriate - Incremental re-mining β content-hash skip before embed; pure re-mine skips model load
-
forget <id|--wing>β evict a drawer or whole wing (CLI + MCP) - Export / import β
memxt exportJSONL +memxt importwith dupe skip - Ignore-pattern parity β
.gitignore-style globs matching upstream semantics - Config schema audit β every upstream yaml key respected or rejected with a diagnostic
- Python-parity output strings β exit codes, stderr format, progress-bar layout for script consumers
- Embedding model swap β allow upstream's default model name via
model: <name>resolving to HF URL
Definition of done: a user can pip uninstall mempalace && curl ... | bash && ln -s .../memxt .../mempalace and every script in their pipeline keeps working unchanged.
Shipped vs Supermemory wedge (local coding agents)
- Hybrid FTS5 + vector search β RRF fusion; exact identifiers / error codes recall
- Wake-up v2 β L0 identity + L1 project profile (decisions) + L2 recent work, wing-scoped
- Project-default wing β git-root basename; hooks/MCP/wake-up honor it
- Schema v3 semantic core β
facts+profile_entries+ drawer kind/tier - Heuristic fact extract + supersession on
memory_store(room=decisions) -
memory_profileMCP β profile without embedding model -
memxt inspectβ palace health (kinds, facts, profile, vectors) -
memxt adoptβ mine + wire Claude/Codex/Cursor/Grok/Zed -
instructions --harness grokβ Grok CLI local MCP setup - Search modes β hybrid | memories | documents | facts | episodes (+
--as-of) - Hot/cold tiers β demote drops vec row; FTS keeps cold; decisions pinned
-
memxt dreamβ expire facts, demote, hot budget, episode clusters - Schema v4 clusters β hierarchical summary drawers
- PreCompact β episode store + decision-snippet extract
- TurboQuant-style online VQ β 4-bit rotate+scalar+residual;
vec_quanton demote -
adopt --writeβ write Cursor mcp.json + Codex/Grok snippets -
memxt serve+ UI β localhost monitor (inspect/search/wake/dream/profile) - Coding Continuity Bench β
scripts/bench-continuity.sh(6/6) - Scale bench β
scripts/bench-scale.sh(seed/search/dream/quant) - Launch pack β show-hn, awesome entries, docs/launch
Phase 2 β Outmatch (v0.3βv0.5)
Ship features upstream Python cannot match without rewriting. Each lands a capability bullet on the README.
v0.3 β Performance Frontier
- Batched embedding kernel β vectorize mine across N files per GPU call (target: 10Γ mine throughput vs current 200Γ)
- Incremental vector index β sqlite-vec HNSW params tuned per drawer-count bucket
- Zero-copy mmap ingest β large file mining without full read-into-RAM
- Compile-time schema β Zig comptime validation of
memxt.yaml; bad config fails at build, not runtime
v0.4 β Reach Beyond CLI
- Watch mode β
memxt watch <path>file-system events β auto re-mine (upstream Python blocks on ChromaDB lock; we don't) - Embedded HTTP API β
memxt serve --port 8080pure Zig handler, <5 MB RAM overhead - Web UI β single-file static dashboard shipped inside binary (SQLite browser + search box)
- Hybrid search β FTS5 BM25 + vector RRF fusion (shipped with schema v2)
- Time-scoped queries β
--since 2026-01-01,--until, decay-weighted ranking
v0.5 β Ecosystem & Distribution
- Homebrew formula β
brew install memxt - Docker image β ~15 MB distroless image (vs upstream ~1.2 GB Python+ML)
- Shell completions β zsh / bash / fish
- Claude Code plugin β
claude-plugin/wires MCP + hooks + skill + slash commands (v0.2) - Steal claude-mem users β progressive disclosure (
memory_searchindex βmemory_get), Stop autosave (verbatim, no cloud LLM), README head-to-head vs claude-mem - Plugin SDK β stable
lib/memxt.hC ABI for 3rd-party languages
v0.6+ β Intelligence Layer
- Auto-consolidation β dream-cycle re-embedding to compact similar drawers
- Knowledge-graph extraction β NER on mine to auto-populate entity edges (currently manual)
- Multi-modal β image / PDF mining via local vision GGUFs
- Federated palaces β optional peer-to-peer sync between machines (E2E-encrypted)
Non-goals
- Cloud SaaS or managed hosting
- Python-binding wrapper (keep the stack Zig-native; use the binary)
- ChromaDB / Pinecone / Weaviate compatibility shims
- Any feature that requires a network call at query time
Contributing
Open an issue with the roadmap label. Phase 1 items that unblock the parity claim get priority over Phase 2+. Benchmark every perf claim against BENCHMARK.md methodology before merging.