freshcrate
Skin:/
Home > MCP Servers > roampal-core

roampal-core

Outcome-based persistent memory MCP server for Claude Code and OpenCode. Good advice promoted, bad advice demoted. pip install roampal.

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

Outcome-based persistent memory MCP server for Claude Code and OpenCode. Good advice promoted, bad advice demoted. pip install roampal.

README

Roampal โ€” Outcome-Based Persistent Memory MCP Server

TestsPyPIDownloadsStarsLicensePythonDiscord roampal-core MCP server

Two commands. Your AI coding assistant gets outcome-based memory.
Works with Claude Code and OpenCode.


Why?

AI coding assistants forget everything between sessions. You explain your architecture, your preferences, your conventions โ€” again. When they give bad advice, there's no mechanism to learn from it.

Roampal is an MCP server that gives your AI persistent, outcome-based memory across every session. Good advice gets promoted. Bad advice gets demoted. Your AI learns what works and what doesn't โ€” automatically, with zero workflow changes.

Benchmarks

85.8% on LoCoMo (non-adversarial, end-to-end answer accuracy) โ€” validated on 1,986 questions across 10 conversations with dual grading.

Result Score
Conversational learning vs raw ingestion +23 points (76.6% vs 53.0%, p<0.0001)
Architecture vs model effect Architecture ~10x larger contributor
Poison resilience (1,135 adversarial memories) -2.6 to -4.2 points only
TagCascade retrieval (tags-first + CE rerank) +1.9 Hit@1 vs pure CE (p<0.0001)

Benchmark pipeline runs on a single GPU with no cloud dependencies. Roampal itself runs on CPU โ€” no GPU required. Full methodology, data, and evaluation scripts: roampal-labs

Paper: "Beyond Ingestion: What Conversational Memory Learning Reveals on a Corrected LoCoMo Benchmark" (Logan Teague, April 2026)


Quick Start

pip install roampal
roampal init

Auto-detects installed tools. Restart your editor and start chatting.

Target a specific tool: roampal init --claude-code or roampal init --opencode

roampal init demo

Platform Differences

The core loop is identical โ€” both platforms inject context, capture exchanges, and score outcomes. The delivery mechanism differs:

Claude Code OpenCode
Context injection Hooks (stdout) Plugin (system prompt)
Exchange capture Stop hook Plugin session.idle event
Scoring Main LLM via score_memories tool Independent sidecar (your chosen model > Zen free)
Self-healing Hooks auto-restart server on failure Plugin auto-restarts server on failure

Claude Code prompts the main LLM to score each exchange via the score_memories tool. OpenCode never self-scores โ€” an independent sidecar (a separate API call) reviews each exchange as a third party, removing self-assessment bias. The score_memories tool is not registered on OpenCode. During roampal init or roampal sidecar setup, Roampal detects local models (Ollama, LM Studio, etc.) and lets you choose a scoring model. If configured, these take priority (Zen is skipped for privacy). A cheap or local model works great โ€” scoring doesn't need a powerful model. Defaults to Zen free models (remote, best-effort) if you skip setup.

How It Works

When you type a message, Roampal automatically injects relevant context before your AI sees it:

You type:

fix the auth bug

Your AI sees:

โ•โ•โ• KNOWN CONTEXT โ•โ•โ•
โ€ข JWT refresh pattern fixed auth loop [id:patterns_a1b2] (3d, 90% proven, patterns)
โ€ข User prefers: never stage git changes [id:mb_c3d4] (memory_bank)
โ•โ•โ• END CONTEXT โ•โ•โ•

fix the auth bug

No manual calls. No workflow changes. It just works.

The Loop

  1. You type a message
  2. Roampal injects relevant context automatically (hooks in Claude Code, plugin in OpenCode)
  3. AI responds with full awareness of your history, preferences, and what worked before
  4. Outcome scored โ€” good advice gets promoted, bad advice gets demoted
  5. Repeat โ€” the system gets smarter every exchange

Five Memory Collections

Collection Purpose Lifetime
working Current session context 24h โ€” promotes if useful, deleted otherwise
history Past conversations 30 days, outcome-scored
patterns Proven solutions Persistent while useful, promoted from history
memory_bank Identity, preferences, goals Permanent
books Uploaded reference docs Permanent

Commands

roampal init                # Auto-detect and configure installed tools
roampal init --claude-code  # Configure Claude Code explicitly
roampal init --opencode     # Configure OpenCode explicitly
roampal init --no-input     # Non-interactive setup (CI/scripts)
roampal start               # Start the HTTP server manually
roampal stop                # Stop the HTTP server
roampal status              # Check if server is running
roampal status --json       # Machine-readable status (for scripting)
roampal stats               # View memory statistics
roampal stats --json        # Machine-readable statistics (for scripting)
roampal doctor              # Diagnose installation issues
roampal summarize           # Summarize long memories (retroactive cleanup)
roampal score               # Score the last exchange (manual/testing)
roampal context             # Output recent exchange context
roampal ingest <file>       # Add documents to books collection
roampal books               # List all ingested books
roampal remove <title>      # Remove a book by title
roampal sidecar status      # Check scoring model configuration (OpenCode)
roampal sidecar setup       # Configure scoring model (OpenCode)
roampal sidecar test        # Test scoring model response format (OpenCode)
roampal sidecar disable     # Remove scoring model configuration (OpenCode)

MCP Tools

Your AI gets these memory tools:

Tool Description Platforms
search_memory Deep search across all collections Both
add_to_memory_bank Store permanent facts (identity, preferences, goals) Both
update_memory Correct or update existing memories Both
delete_memory Remove outdated info Both
score_memories Score previous exchange outcomes Claude Code
record_response Store key takeaways from significant exchanges Both

How scoring works: Claude Code's hooks prompt the main LLM to call score_memories every turn. OpenCode uses an independent sidecar that scores silently in the background โ€” the model never sees a scoring prompt and score_memories is not registered as a tool. If the sidecar is unavailable, a warning prompts the user to run roampal sidecar setup. Choose your scoring model during roampal init or via roampal sidecar setup.

How Roampal Compares

Feature Roampal Core Claude Code built-in (CLAUDE.md / auto memory) OpenCode built-in
Learns from outcomes Yes โ€” bad advice demoted, good advice promoted No No
Semantic retrieval Yes โ€” TagCascade + cross-encoder reranking No โ€” files loaded in full, no search No memory system
Context injection Automatic โ€” relevant memories per query Full CLAUDE.md every session, auto memory on demand None
Atomic fact extraction Yes โ€” summaries + facts, two-lane retrieval No โ€” saves what Claude decides is useful No
Works across projects Yes โ€” shared memory across all projects Per-project only (per git repo) No memory
Scales with history Yes โ€” 5 collections, promotion/demotion/decay CLAUDE.md unbounded, auto memory first 200 lines No memory
Fully local / private Yes โ€” ChromaDB on your machine Yes Yes
Architecture
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  pip install roampal && roampal init                    โ”‚
โ”‚    Claude Code: hooks + MCP โ†’ ~/.claude/                โ”‚
โ”‚    OpenCode:    plugin + MCP โ†’ ~/.config/opencode/      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
                         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  HTTP Hook Server (port 27182)                          โ”‚
โ”‚    Auto-started on first use, self-heals on failure     โ”‚
โ”‚    Manual control: roampal start / roampal stop         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
                         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  User types message                                     โ”‚
โ”‚    โ†’ Hook/plugin calls HTTP server for context          โ”‚
โ”‚    โ†’ AI sees relevant memories, responds                โ”‚
โ”‚    โ†’ Exchange stored, scored (hooks or sidecar)         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
                         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Single-Writer Backend                                  โ”‚
โ”‚    FastAPI โ†’ UnifiedMemorySystem โ†’ ChromaDB             โ”‚
โ”‚    All clients share one server, isolated by session    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

See dev/docs/ for full technical details.

Requirements

  • Python 3.10+
  • One of: Claude Code or OpenCode
  • Platforms: Windows, macOS, Linux (primarily developed and tested on Windows)
  • RAM: ~800MB available (cross-encoder reranker + embeddings + ChromaDB)
  • Disk: ~500MB for models (multilingual embedding + reranker, downloaded automatically on first use)
  • CPU: Any modern x86-64 processor with AVX2 (Intel Haswell 2013+ / AMD Excavator 2015+)
  • GPU: Not required โ€” all inference runs on CPU via ONNX Runtime

Troubleshooting

Hooks not working? (Claude Code)
  • Restart Claude Code (hooks load on startup)
  • Check HTTP server: curl http://127.0.0.1:27182/api/health
MCP not connecting? (Claude Code)
  • Verify ~/.claude.json has the roampal-core MCP entry with correct Python path
  • Check Claude Code output panel for MCP errors
Context not appearing? (OpenCode)
  • Make sure you ran roampal init --opencode
  • Check that the server auto-started: curl http://127.0.0.1:27182/api/health
  • If not, start it manually: roampal start
Server crashes and recovers?

This is expected. Roampal has self-healing -- if the HTTP server stops responding, it is automatically restarted and retried.

Still stuck? Ask your AI for help โ€” it can read logs and debug Roampal issues directly.

Support

Roampal Core is completely free and open source.

License

Apache 2.0

Release History

VersionChangesUrgencyDate
v0.5.7Hardening release. No new user-visible features. Closes an unbounded-growth defect in the MCP hook's per-conversation lifecycle file (`_completion_state.json`) that surfaced during issue #8 repro. ## What's fixed **`_completion_state.json` startup GC** โ€” the file accumulated one entry per `conversation_id` ever seen, with no cleanup. On long-running installs this drove: - I/O amplification (full-file rewrite on every state mutation) - Stuck `scored_this_turn=True` flags from long-dead sessionHigh5/12/2026
v0.5.6Hardening release closing coverage gaps from the v0.5.5.x verification audit. No new user-visible features. ## Memory phantoms (#8 follow-up) โ€” items 5-11, 32 - `_sweep_phantoms()` runs after `cleanup_archived()`, not just at startup - chromadb_adapter phantom filter strengthened (AND โ†’ OR mid-state catch) - Status backfill on startup for legacy entries - Auto-trigger `cleanup_archived()` under capacity pressure - Dedup observability log on every dedup-skip - Lane enforcement: `delete()` โ†’ `delHigh5/1/2026
v0.5.5## Roampal Core v0.5.5 โ€” 2026-04-27 **Bugfix release.** Fixes issue #8 where GUI deletion of memories blocks new memory generation. ### What's Fixed - **Soft-delete for memory_bank** โ€” ChromaDB hard delete doesn't actually remove vectors from HNSW, causing phantom dedup matches that block new memories after GUI deletion. Replaced with status=archived metadata update plus status filter on all query/dedup paths. - **Scoring mutex to async queue** โ€” Eliminates dropped scoring requests that causedHigh4/27/2026
v0.5.3.1## Hotfix for v0.5.3 โ€” facts and summary extraction broken on thinking models Three bugs in the OpenCode plugin's JSON extraction logic. All three only manifested with reasoning/thinking models on local sidecar setups. ### What was broken **Bug 1 โ€” Facts extraction silently failing on every exchange (latent since v0.4.8).** The facts extraction path used a greedy regex that swallowed trailing markdown code fences. Models that wrap JSON in ` ```json ... ``` ` blocks broke `JSON.parse()` with `High4/23/2026
v0.5.2# Roampal Core v0.5.2 **Release Date:** 2026-04-21 **Type:** Patch โ€” chat-path performance, field-drift lifecycle fix, v0.5.1 profile-resolution bugfixes **Coordination:** Core ships first; Desktop v0.3.2 follows with the same latency trio and age-gate fix applied to the Tauri backend ## Summary Three bundled improvements: 1. **Performance (Sections 1โ€“3)** โ€” cut the per-message latency added by the memory pipeline on every MCP tool call. Beta feedback on Desktop v0.3.1 (2026-04-17) flaHigh4/21/2026
v0.5.1# Roampal Core v0.5.1 Release Notes **Release Date:** TBD **Type:** Minor โ€” named memory profiles + sidecar consistency patch ## Summary Two changes bundled: 1. **Named memory profiles** (feature) โ€” support multiple isolated memory stores per user, switchable per command, per shell, per project (MCP config), or globally. 2. **Sidecar scoring cap** (patch) โ€” cap exchange fields at 8K characters in the scoring prompt, matching the fact-extraction call. --- ## 1. Named Memory Profiles ### MoHigh4/17/2026
v0.5.0## Summary v0.5.0 addresses five issues in the OpenCode plugin: 1. **Subagent filtering** (Issue #4): Subagent exchanges no longer pollute the memory store 2. **OpenAI sidecar fix**: Removed `think: false` field that broke all non-Ollama sidecar targets 3. **Sidecar input cap**: Bumped fact extraction input from 800 chars to 16K (8K + 8K) 4. **Summary output cap**: Bumped scoring prompt summary limit from 300 chars to 2000 chars 5. **Scoring status visibility**: Replaced boolean `scoringBrokenHigh4/16/2026
v0.4.9.2## Summary Rewrite all 6 MCP tool descriptions for Glama TDQS (Tool Definition Quality Score) compliance. ### Changes Every tool description now includes: - **BEHAVIOR** section โ€” explicit state changes, what gets created/modified/deleted - **ERROR HANDLING** section โ€” what happens on invalid input, no matches, empty results - **WHEN NOT TO USE** section โ€” clear disambiguation between tools - **Parameter examples** โ€” concrete examples for every parameter ### Previous Glama Scores | Tool | GHigh4/14/2026
v0.4.9.1## Hotfix Critical fix for server deadlock on startup and leftover regex tag fallback shipped in v0.4.9. ### Fixes - **Server deadlock on startup** โ€” A v0.4.8 migration block ran on every boot inside the async `lifespan()` function, pulling up to 30,000 facts from ChromaDB via synchronous calls. With large datasets this blocked the event loop indefinitely โ€” the server bound the port but never served requests. All hooks timed out silently. Removed entirely; use `roampal retag` instead. - **RegHigh4/14/2026
v0.4.9## Summary Fixes critical sidecar robustness issues and achieves full benchmark alignment for tag extraction. ### Key Changes - **Wire TagService to sidecar LLM** โ€” v0.4.8 had `extract_tags()` in code but never called it. Tags were silently falling back to regex. Now properly wired for OpenCode sidecar scoring. - **Remove regex tag extraction** โ€” LLM-only tags matching benchmark behavior. If LLM fails, returns `[]` (no fallback). Use `roampal retag` to clean up existing memories. - **Robust bHigh4/14/2026
v0.4.8# v0.4.8 Release Notes **Platforms:** OpenCode (sidecar plugin), server (shared) **Theme:** Sidecar reliability + benchmark alignment **Status:** Complete **Claude Code impact:** None. Changes 1, 2, 4 are OpenCode-only (roampal.ts). Change 3 (fact tags) is in the shared server but is additive โ€” puts tags back on facts. --- ## Overview Mirror the benchmark's proven sidecar architecture. Four changes: 1. **Remove autoSummarize** โ€” eliminates Ollama contention that caused 20% scoring failuresMedium4/14/2026
v0.4.7## Changes - **Compaction recovery**: Generation counter ensures `session.idle` doesn't clear recovery flags prematurely - **Cold start**: New sessions pre-fetch 4 most recent exchange summaries for continuity - **Sidecar resilience**: autoSummarize gated (can't block scoring), circuit breaker 30minโ†’2min, scoringBroken auto-reset - **Recency metadata**: `_search_all()` now adds recency strings; fallback to `created_at` when `timestamp` missing - **Unified metadata format**: Recent exchanges useHigh4/13/2026
v0.4.6.1## v0.4.6.1 โ€” MCP Tool Documentation Improves MCP tool descriptions for Glama quality evaluation. ### Changes - **update_memory**: Added memory lifecycle, matching behavior, return value docs - **score_memories**: Added Wilson scoring explanation, parameter examples, side effects - **delete_memory**: Added irreversibility warning, scope, matching behavior - **search_memory**: Added return value structure, sibling tool differentiation - **add_to_memory_bank**: Added record_response differentiatMedium4/13/2026
v0.4.6## v0.4.6 โ€” Context Quality Improves context injection quality by removing low-signal extractions and reframing auto-extracted facts. ### Changes **1. Reworded facts header in context injection** - Facts section now indicates auto-extracted facts are directional, not authoritative - LLM treats them as leads to verify rather than ground truth **2. Removed regex tag extraction from book ingestion** - `extract_tags_regex()` removed from `store_book()` โ€” low signal on book chunks - Tags will comMedium4/13/2026
v0.4.5## TagCascade Retrieval โ€” Benchmark-Validated Architecture Replaces knowledge graph with TagCascade retrieval validated on LoCoMo benchmark. ### Highlights - **85.8% on LoCoMo** (non-adversarial, end-to-end answer accuracy) - **+23 points** over raw ingestion (76.6% vs 53.0%, p<0.0001) - **TagCascade retrieval**: tags-first cascade + CE reranking, raw CE score (no Wilson blend) - **Two-lane retrieval**: 4 summaries + 4 facts = 8 memories per context injection - **Atomic fact extraction**: LLM High4/9/2026
v0.4.4## v0.4.4 โ€” Async Parallelization Performance release โ€” all independent operations now run concurrently. ### Changes - Parallel collection searches via `asyncio.gather` - Parallel context injection (3 searches run concurrently) - Parallel collection adapter initialization and startup cleanup - Parallel per-memory scoring and background KG updates - Full memory metadata in KNOWN CONTEXT (`wilson:N%`, `used:Nx`, `last:outcome`) - Negative example added to `record_response` tool description - ARCLow3/16/2026
v0.4.3## What's Changed Replaces PyTorch + sentence-transformers with direct ONNX Runtime inference. Install drops from ~2.5GB to ~200MB. Same model, same 768-dimension embeddings, same ChromaDB collections โ€” zero user-facing change. ### Highlights - **Zero new dependencies** โ€” `onnxruntime`, `tokenizers`, `huggingface-hub`, `numpy` are all already installed via `chromadb` - **Identical embeddings** โ€” cosine similarity vs PyTorch: 1.0000000, multilingual verified across 8 languages - **Optimized modLow3/13/2026
v0.4.2.2## What's Changed Fixes a regression from v0.4.2.1 where `roampal init` would silently delete OpenCode sidecar scoring configuration. ### Fixes - **OpenCode MCP environment merged instead of replaced** โ€” sidecar variables (`ROAMPAL_SIDECAR_URL`, `ROAMPAL_SIDECAR_MODEL`, `ROAMPAL_SIDECAR_KEY`) are now preserved during `roampal init` - **Idempotency check ignores sidecar vars** โ€” config is no longer rewritten on every init when sidecar is configured ### Scope Claude Code and Cursor are not affeLow3/11/2026
v0.4.2.1## What's Changed `roampal init` no longer wipes non-roampal hooks or blocks config updates behind `--force`. ### Fixes - **Claude Code hooks merged instead of replaced** โ€” non-roampal hooks (linters, formatters, custom scripts) are now preserved - **Cursor hooks merged instead of replaced** โ€” same fix for Cursor's `hooks.json` - **MCP configs auto-update** โ€” no longer requires `--force` when config differs between versions - **OpenCode plugin auto-updates** โ€” plugin is always updated when souLow3/11/2026
v0.4.2## Summary - **Fix intermittent "UserPromptSubmit hook error"** โ€” embedding cache eliminates redundant encode calls (~12s โ†’ ~4s), hook timeout bumped 5s โ†’ 10s - **OpenCode plugin scoring fixes** โ€” 1.5s debounce on `session.idle` prevents duplicate exchange storage from subagent completions, compacting hook and score detection registered correctly - **Version check fix** โ€” `importlib.metadata` replaces `from roampal import __version__` which was shadowed by co-installed roampal-cli - **ONNX RuntLow3/11/2026
v0.4.1## Highlights - **Event loop unblocking**: `embed_text()` wrapped in `asyncio.to_thread()` โ€” fixes the root cause of "not responding" errors on Linux - **Performance caps**: `_search_all` capped at 1,000/collection, BM25 index rebuild at 2,000 docs โ€” prevents OOM on memory-constrained systems - **Sidecar-only scoring on OpenCode**: `score_memories` tool hidden from MCP, no main LLM fallback โ€” eliminates double-scoring - **Timezone fix**: `_humanize_age()` now shows correct memory ages on non-UTLow3/5/2026
v0.4.0## Cross-platform compatibility audit and backend data integrity fixes ### Critical - Fix ChromaDB `hnsw:space` metadata mismatch between `query_vectors()` and `initialize()` ### High - Fix `search_books()` calling nonexistent adapter method (was broken since launch) - Write `original_id` metadata during all promotion paths so outcome scoring finds promoted docs - Add `_promotion_lock` to `handle_promotion` to prevent race with batch promotion - Use `split('_', 1)[1]` for promotion ID derivatiLow3/4/2026
v0.3.9### Fix scoring truncation, add memory storage safety cap **Sidecar Scoring Truncation Fix:** - Removed `.slice(0, 200)` in OpenCode sidecar scoring prompt (`roampal.ts`) โ€” memories were evaluated with content beyond 200 characters removed since v0.3.5 **Fallback Scoring Truncation Fix:** - Removed 120-char truncation in `build_scoring_prompt_simple()` (`session_manager.py`) โ€” fallback scoring path (when sidecar unavailable) was also discarding content **Memory Storage Safety Cap (2000 chars)Low3/2/2026
v0.3.8### Docker support, memory_bank scoring transparency, version fix, thread-safety fix **Docker Support:** - Dockerfile + .dockerignore for Glama awesome-mcp-servers listing - `python:3.12-slim` base, installs from PyPI, health check on `/api/health` - `start-period=120s` for embedding model download on first boot **Memory Bank Scoring Transparency:** - `search_memory` results for memory_bank facts with 1+ uses now show Wilson score (`w:`), uses count, and outcome history - Fresh facts (0 uses) Low3/2/2026
v0.1.10v0.1.10: Update notifications in Claude CodeLow2/25/2026
v0.2.0v0.2.0: Action KG sync, batch embedding, sentence chunking, date filters, auto-restartLow2/25/2026
v0.2.1Fix MCP method not found error for fresh installsLow2/25/2026
v0.2.2v0.2.2: Cursor support, always_inject, ghost registry, doctor command, schema migrationLow2/25/2026
v0.2.3Performance fix - deferred KG learning, faster scoringLow2/25/2026
v0.2.4v0.2.4: Fix related parameter in MCP fallback, full doc_id displayLow2/25/2026
v0.2.5v0.2.5: Fix MCP config path (~/.claude.json), add idempotency, --force flag, migration, status commandLow2/25/2026
v0.2.6v0.2.6: Identity prompts, profile-only cold start, tool description improvementsLow2/25/2026
v0.2.7v0.2.7: Identity injection, lean cold start, scoring guidanceLow2/25/2026
v0.2.8v0.2.8: Wilson fix, FastAPI lifecycle, per-memory scoringLow2/25/2026
v0.2.8.1Fix unknown outcome treated as partialLow2/25/2026
v0.2.9v0.2.9: Natural Selection for MemoryLow2/25/2026
v0.2.9.1Fix memory_bank deletion bugLow2/25/2026
v0.2.9.2Restore exchange scoringLow2/25/2026
v0.3.0v0.3.0: Resilience - fix silent hook server crashesLow2/25/2026
v0.3.0.1Fix version string in __init__.pyLow2/25/2026
v0.3.1Reserved working memory slot for context injectionLow2/25/2026
v0.3.2v0.3.2: Multi-client support, sidecar scoring, self-healing hooks, README overhaulLow2/25/2026
v0.3.3v0.3.3: Fix OpenCode plugin packaging, add memory awareness preambleLow2/25/2026
v0.3.3.1v0.3.3.1: Fix tool detection on fresh installsLow2/25/2026
v0.3.3.2v0.3.3.2: Add relative timestamps to KNOWN CONTEXT injectionLow2/25/2026
v0.3.4Fix garbled UI, double-scoring, and scoring prompt for OpenCodeLow2/25/2026
v0.3.4.1Fix console.log leaking into OpenCode UI on LinuxLow2/25/2026
v0.3.5Token optimization, standardized metadata, tool rewrites, memory hygiene, security hardeningLow2/25/2026
v0.3.5.1Fix 4-slot context injection displayLow2/25/2026
v0.3.5.2Fix double-scoring in OpenCode pluginLow2/25/2026
v0.3.6### Retrieval fairness, exchange summarization, sidecar scoring - Retrieval fairness: reserved working memory slot, diversity caps, unknown penalty - Exchange summarization via sidecar (platform-split: Claude Code main LLM, OpenCode sidecar) - Compaction recovery: recent exchange buffer via SessionStart hook - roampal summarize CLI for retroactive memory cleanup - roampal context --recent-exchanges for platform hooks - score_response renamed to score_memories with summary/outcome fields - RemovLow2/25/2026
v0.3.6.1Add init --force to all upgrade noticesLow2/25/2026
v0.3.7### Sidecar-only scoring, cold start recovery, CLI sidecar setup - Sidecar is sole scorer for OpenCode (main LLM no longer prompted to score) - `roampal sidecar setup` CLI command for one-command scorer configuration - Init-time sidecar model selection with auto-detection - Wilson-only ranking for memory_bank facts with 3+ uses - CLI polish: NO_COLOR, --no-input, --json, exit codes, cached update checks - Security: bare excepts fixed, cache TTL eviction, collection prefix safety - Package weighLow2/25/2026
v0.3.7.1### Fix: Stale version detection in update check **Bug:** After upgrading via `pip install --upgrade roampal`, the server kept showing "update available" because the long-running process cached the old `__version__` from Python's module cache. **Fix:** - `_get_installed_version()` reads version from disk instead of stale `sys.modules` cache - Update check cache now expires after 30 minutes (was cached forever)Low2/25/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

sugarPersistent memory for AI coding agents. Cross-session context, global knowledge, and autonomous task execution.v3.9.1
AIDomesticCoreAIJ๐Ÿ› ๏ธ Build a robust AI Kernel for stable, auditable, and sovereign AI systems, ensuring secure execution and compliance across various domains.main@2026-06-07
mcp-agent-framework๐Ÿค– Orchestrate AI agents at scale using the MCP framework, enabling seamless context sharing, communication, and integration for enhanced collaboration.master@2026-06-07
git-notes-memory๐Ÿง  Store and search your notes effectively with Git-native memory storage, enhancing productivity for Claude Code users.main@2026-06-06
a-mem-mcp-server๐Ÿง  Enhance LLM agents with an agentic memory system, featuring automatic note construction, dynamic memory updates, and intelligent semantic retrieval.main@2026-06-06

More in MCP Servers

agentroveYour own Claude Code UI, sandbox, in-browser VS Code, terminal, multi-provider support (Anthropic, OpenAI, GitHub Copilot, OpenRouter), custom skills, and MCP servers.
ProxmoxMCP-PlusEnhanced Proxmox MCP server with advanced virtualization management and full OpenAPI integration.
node9-proxyThe Execution Security Layer for the Agentic Era. Providing deterministic "Sudo" governance and audit logs for autonomous AI agents.
mcp-compressorAn MCP server wrapper for reducing tokens consumed by MCP tools.