Skip to content

feat(console): local web console — status, memories, KG graph, context, dedup, budget, Postgres switch - #5

Merged
rrader26 merged 4 commits into
mainfrom
feat/memmesh-console
Aug 8, 2026
Merged

feat(console): local web console — status, memories, KG graph, context, dedup, budget, Postgres switch#5
rrader26 merged 4 commits into
mainfrom
feat/memmesh-console

Conversation

@rrader26

@rrader26 rrader26 commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds memmesh console — a local, single-binary web UI served from the REST API (opens the browser, tails a unified log). Everything is embedded in the Rust binary; no new runtime.

What's included

  • Console command + embedded SPA (crates/server/src/ui/index.html) with the MemMesh logo
  • Status dashboard — counts, breakdowns by scope/type/status, semantic-index coverage, LLM budget card
  • Memories — list/search, delete, supersede, provenance (source/confidence/validity/supersession)
  • Knowledge-Graph explorer — force-directed entities + typed edges from the zero-LLM extractor; hover-highlight; "Rebuild from memories"
  • Context preview — the exact claude-context block injected for a query
  • Duplicates — review inbox (dry-run candidates → per-pair merge via supersede, or merge-all)
  • Playground — side-by-side retrieval comparison (query/k)
  • Sync — SaaS sync status + run + project bindings
  • Config — edit ~/.memmesh/config.toml (validated); storage backend switch (SQLite ⇄ Postgres) with test-connection + one-time data copy

Engine changes

  • [database] config section; main.rs selects backend and dispatches through a generic run<S: Storage> (works identically on SQLite/Postgres)
  • Unified log file at ~/.memmesh/logs/memmesh.log (stderr + rolling file), tailed by the console
  • New REST endpoints: /stats, GET /memory (list), /config (get/put), /graph (+/graph/rebuild), /consolidate, /budget, /sync (+/sync/run), /bindings, /database (+/database/test, /database/copy), /logs

Scope notes

  • Predictions/Behaviors and managed connectors (SharePoint/GDrive/Notion) are SaaS features, intentionally not in this OSS engine — the Sync tab surfaces only the engine's built-in SaaS sync + bindings.

Verification

  • Full workspace builds clean; every endpoint exercised via curl
  • Postgres switch verified end-to-end against a real pgvector instance (test → copy → boot against PG → reverted)
  • Embedded JS validated (syntax, element IDs, helper defs)
  • Not done: headless-browser click-through (Playwright Chromium not installed locally)

…gres backend switch

- memmesh console: single-binary web UI served from the REST API, opens browser
- embedded SPA (crates/server/src/ui/index.html) with MemMesh logo
- REST endpoints: /stats, GET /memory (list), /config (get/put), /logs, /consolidate
- unified log file (~/.memmesh/logs/memmesh.log) tailed by the console
- selectable storage backend via [database] config; generic run<S: Storage> dispatch
- /database (get/put), /database/test, /database/copy for SQLite->Postgres switch + data copy
- Graph tab: force-directed KG of entities + typed edges (zero-LLM extractor),
  hover-highlight, legend by entity type; GET /graph (edges deduped on read)
- /graph/rebuild: backfill the graph from all stored memories (idempotent)
- Context tab: shows the exact claude-context block injected for a query
- Memories: provenance line (source, confidence, learned date, supersession)
… sync

- Status: dashboard breakdowns (scope/type/status bars), embedding coverage,
  behavior-pattern count, and an LLM budget card (GET/PUT /budget)
- Duplicates: review inbox — dry-run candidates with content, per-pair merge
  (supersede) or merge-all; requires embeddings for cosine matching
- Playground: side-by-side retrieval comparison (query/k) over /memory
- Sync: SaaS sync status + run + project bindings (GET /sync, POST /sync/run,
  GET /bindings); managed connectors flagged as roadmap, not faked
- endpoints: /budget, /sync, /sync/run, /bindings
@rrader26
rrader26 merged commit 40a7271 into main Aug 8, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants