Skip to content

[feature] interactive TUI (synapto[tui]) — REPL with browse, search, approve #42

@ramonlimaramos

Description

@ramonlimaramos

Problem

synapto search from the terminal is fine for one-shot queries, but daily memory hygiene (browsing recent additions, approving consolidations, fixing trust) requires switching to psql or the future web UI. devs who live in the terminal want a TUI. competitor byterover-cli proved this with their React/Ink TUI — it is what makes brv feel like a daily-driver tool, not a library.

Proposed Solution

opt-in TUI shipped as synapto[tui] extra (not default — keep base install lean).

tech

  • Textual (rich TUI, async-native, mouse + keyboard)
  • launched via synapto (no args) when extra is installed; falls back to current REPL otherwise

views

view keys purpose
dashboard (default) recent memories, decay alerts, pending consolidations
search / incremental hybrid search, preview pane shows full content + entities
graph g ascii-rendered entity neighborhood; arrow keys to walk
review queue r approve/reject pending consolidations, contradictions
trust t (on selected) thumbs up/down on the focused memory
forget x (with confirm) soft-delete

why textual specifically

  • async-native — fits existing codebase
  • ssh-safe (works over remote terminals)
  • doesn't compete with web UI; complements it (some devs prefer terminal)

Trade-offs

  • scope overlap with web UI (P1.1 issue): TUI = terminal-native, daily-driver. webui = visual graph, sharing screenshots. both are valid.
  • maintenance: two UIs. mitigation: shared service layer (both consume the same query/mutation API).
  • dependency weight: textual is ~5MB. mitigated via extra (pip install synapto[tui]).

Out of scope

  • tmux pane management
  • vim-mode keybindings (use textual defaults)

Success criteria

  • pip install synapto[tui] && synapto opens dashboard
  • 100% functionality reachable without leaving keyboard
  • works over SSH on a 80x24 terminal

References

  • byterover TUI: React/Ink in src/tui/ — proves the pattern

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