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
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 webuiand curation UX is what gets devs to use the product daily.Proposed Solution
new subcommand
synapto uithat serves a local-only dashboard atlocalhost:7474. read-only first, write features layered on after.tech stack
phase 1 (read-only) — MVP
/dashboard/memories/memories/<id>/graph/contradictionsfind_contradictionsviewerphase 2 (writes)
CLI
auth
127.0.0.1only by default--bind 0.0.0.0Trade-offs
/graph. acceptable.Out of scope
Success criteria
pip install synapto && synapto uiworks without extra stepsgraph_querysyntax