Skip to content

Deck

Memory graph explorer. A Hono REST API serving a React SPA that visualizes the knowledge graph, lets you browse memories, and trace the observation pipeline. Can point at any Sprawl app’s database.

Hono app with CORS, DB injection middleware, and four route groups:

  • /api/memories — Search, list, detail for the memories table
  • /api/graph — Nodes, edges, traversal queries against graph_nodes/graph_edges
  • /api/observations — Timeline of observation pipeline activity
  • /api/stats — Aggregate counts (memories, nodes, edges, etc.)

In production, serves the built React SPA from web/dist/. In development, use Vite dev server + API proxy.

React 19 SPA with React Router. Three views:

  • GraphView (/) — D3-force directed graph on HTML canvas. Nodes are entities, edges are relationships. Click to inspect, search to filter.
  • MemoryBrowser (/memories) — Searchable list of all memories with category/source filters.
  • ObservationTimeline (/observations) — Chronological view of observations, showing generation, priority, and supersession.
ComponentRole
GraphView.tsxD3-force canvas rendering, zoom/pan, node selection
GraphControls.tsxSearch, layout controls
GraphDetail.tsxSelected node/edge detail panel
NodeTooltip.tsxHover tooltip for graph nodes
MemoryBrowser.tsxMemory list with search
MemoryCard.tsxIndividual memory display
ObservationTimeline.tsxObservation list with generation/priority display
SearchBar.tsxShared search input
Layout.tsxApp shell with navigation
FileRole
src/server.tsHono app setup, middleware, routing
src/env.tsDATABASE_URL + PORT config
src/routes/memories.tsMemory search/list/detail API
src/routes/graph.tsGraph query API
src/routes/observations.tsObservation timeline API
src/routes/stats.tsStats aggregation API
web/src/App.tsxReact router setup
web/src/components/GraphView.tsxD3-force graph visualization
  • @repo/cairn — Uses CairnDatabase type for DB queries. Reads memories, observations, graph_nodes, graph_edges tables.
  • @repo/dbcreateDb() for database connection.
  • Can browse any Sprawl app’s database (Construct, Cortex) by changing DATABASE_URL.
Terminal window
just deck-dev myinstance # reads .env.myinstance for DATABASE_URL

Default port: 4800.