-
released this
2026-03-24 15:04:53 +00:00 | 317 commits to main since this releaseWhat's new
Optional bearer token authentication
OmniMem now supports built-in authentication on both the MCP server and web UI, enabled via environment variables:
MCP_AUTH_TOKEN— protects the MCP SSE endpoint (port 8765) using a custom FastMCPTokenVerifiersubclassWEB_UI_AUTH_TOKEN— protects the web dashboard (port 8080) using Starlette middleware
Both are fully optional. When unset or blank, behaviour is unchanged from previous versions. No new dependencies required.
The
/metricsendpoint and/static/assets are exempt from web UI auth so Prometheus scraping continues to work without credentials.Connection guides
New
guides/directory with setup instructions for six coding agents:Agent Transport Claude Code Native SSE GitHub Copilot Native SSE Cursor SSE (known quirks) AWS Kiro Native SSE OpenCode Native SSE OpenAI Codex CLI Needs supergateway bridge Configuration
Add to your
.env:MCP_AUTH_TOKEN=your-secret-token # Protects MCP endpoint WEB_UI_AUTH_TOKEN=your-secret-token # Protects web dashboardGenerate a secure token:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"Add the token to your Claude Code config:
{ "mcpServers": { "omnimem": { "type": "sse", "url": "http://localhost:8765/sse", "headers": { "Authorization": "Bearer your-secret-token" } } } }See
docs/reverse-proxy.mdfor full documentation including reverse proxy examples.Full changelog: v3.7.1...v3.8.0
Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
7 downloads
-
v3.7.1 Stable
released this
2026-03-24 13:42:56 +00:00 | 320 commits to main since this releaseFixed
- Duplicate detection in web UI showing empty clusters: The duplicates page reported the correct number of clusters but displayed "0 memories, similarity ?" for each one. Root cause was a mismatch between the
find_all_duplicates()return structure (flat list of dicts) and the Jinja2 template which expected named attributes (cluster.keys,cluster.max_similarity). Clusters are now returned as{"memories": [...], "max_similarity": float}and the template iterates correctly. Max pairwise similarity is now computed and displayed per cluster.
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
7 downloads
- Duplicate detection in web UI showing empty clusters: The duplicates page reported the correct number of clusters but displayed "0 memories, similarity ?" for each one. Root cause was a mismatch between the
-
v3.7.0 Stable
released this
2026-03-19 19:52:41 +00:00 | 321 commits to main since this releaseTitle: v3: Web UI dashboard, telemetry, auto-maintenance, and MCP instructions
Description:
Summary
This is the full v3 branch, covering versions 3.0.0 through 3.7.0. The headline feature is a web UI dashboard for browsing and managing memories outside of Claude Code,
but there's a lot more in here.- Web UI dashboard (Starlette + Jinja2 + htmx) — browse memories with filters and pagination, semantic search, memory detail views, lifecycle management, create new
memories with inline duplicate detection, project management (list/detail/edit/create/delete), RSS feeds CRUD with download/upload, experience tracking and graveyard
views, duplicate scanning, contradiction detection, suppression management, and backup management with create/download/upload/delete - Telemetry and Prometheus metrics — per-memory recall_count and last_recalled counters updated on every recall, telemetry dashboard page in the web UI, and a
Prometheus-compatible /metrics endpoint for Grafana integration - Auto-maintenance — automatic deduplication and contradiction scanning triggered every N briefing() calls per project (configurable via AUTO_MAINTENANCE_INTERVAL, default
- MCP instructions injection — OmniMem now injects its own usage instructions automatically when Claude Code connects, so users no longer need to manually copy CLAUDE.md
into every project - compile_project_context tool — auto-generates project context from stored episodic memories, useful for bootstrapping context on projects that already have memories but
no explicit set_project_context() call - version() tool — returns the current OmniMem version
- RSS worker file watcher — mtime polling with configurable interval and misfire_grace_time for robustness on sleeping machines
- Reverse proxy docs — Traefik and Caddy examples covering both web UI and MCP server endpoints
- Startup index migration — compares field counts against definitions and drops stale indexes so they get recreated with new fields
Stats
- 45 new files, 73 files changed, ~5,800 lines added
- 43 commits
- New Docker service: web_ui on port 8080
- New test suites for recall counters, maintenance, and briefing maintenance
Test plan
- cd mcp_server && pytest tests/ — all existing and new tests pass
- docker compose up -d — all four containers start and stay healthy
- Web UI accessible at http://localhost:8080 — dashboard loads, navigation works
- Browse memories, search, create, view detail, lifecycle actions all functional
- RSS feeds page: list, create, edit, delete, download, upload
- Projects page: list, detail, edit, create, delete
- Telemetry page shows recall counts; /metrics returns Prometheus format
- briefing() triggers auto-maintenance after configured interval
- MCP instructions appear in Claude Code without manual CLAUDE.md setup
- Reverse proxy docs: Traefik and Caddy configs work for both endpoints
Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
8 downloads
- Web UI dashboard (Starlette + Jinja2 + htmx) — browse memories with filters and pagination, semantic search, memory detail views, lifecycle management, create new