Skip to content

[feature] minimal local web UI (synapto ui) — browse, search, curate #40

@ramonlimaramos

Description

@ramonlimaramos

Problem

synapto today is 100% CLI/MCP. when an agent stores wrong info or trust scores need bulk adjustment, the only option is raw SQL. there's no way to visually browse the graph, diff memory versions, or approve pending consolidations. competitor byterover-cli shipped brv webui and curation UX is what gets devs to use the product daily.

Proposed Solution

new subcommand synapto ui that serves a local-only dashboard at localhost:7474. read-only first, write features layered on after.

tech stack

  • FastAPI (already an indirect dep) + Jinja2 + HTMX (no SPA, no node)
  • reuses the existing async postgres client
  • single-binary, no extra install

phase 1 (read-only) — MVP

view purpose
/ dashboard counts by type/depth, recent activity, decay heatmap
/memories paginated list, filter by tenant/depth/type, full-text
/memories/<id> full content, entities, relations, history (depends on audit trail issue)
/graph force-directed entity graph (cytoscape.js or d3), click entity → memories
/contradictions live find_contradictions viewer

phase 2 (writes)

action trigger
forget button on memory detail
trust ± thumbs up/down
approve consolidation review queue from consolidation engine
relate drag-and-drop in graph view

CLI

synapto ui                  # default port 7474
synapto ui --port 8080      # custom
synapto ui --readonly       # disable writes

auth

  • bound to 127.0.0.1 only by default
  • optional basic auth for --bind 0.0.0.0
  • no remote auth in scope (this is single-user local-first by design)

Trade-offs

  • scope creep: easy for UI to balloon. mitigation: read-only MVP first; merge before adding writes.
  • maintenance: new surface to test. mitigation: htmx + jinja keeps tests as plain HTTP request snapshots.
  • dependency weight: htmx is 14kb, vendored. cytoscape adds ~300kb but only on /graph. acceptable.

Out of scope

  • multi-user / cloud
  • write features in MVP
  • mobile responsive (desktop-only)

Success criteria

  • pip install synapto && synapto ui works without extra steps
  • can visually verify what a recall would return without opening psql
  • graph view makes "what depends on X" intuitive without graph_query syntax

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions