Interactive Map
trurlic map opens an interactive graph visualization in the browser. Components, connections, decisions, patterns — explorable, editable, and live-synced with the filesystem.
Starting the map
Section titled “Starting the map”trurlic mapThis starts a local web server and opens the browser. The map shows the decision graph with components as nodes, connections as edges, and decisions as annotations.
Options
Section titled “Options”trurlic map --port 8080 # bind to a specific port (default: OS-assigned)trurlic map --no-open # start server without opening browsertrurlic map --detach # background the server; print URL and exitFeatures
Section titled “Features”Force-directed layout — components are arranged automatically with a physics-based layout engine. Drag nodes to reposition them.
Level of detail — zoom in to see individual decisions and their metadata. Zoom out to see the high-level component graph.
Live sync — the map watches .trurlic/ via WebSocket. Changes from the CLI, MCP server, or manual edits appear in real time without refreshing.
Search — find components, decisions, and patterns by name or content.
Selection — click a component to see its decisions, connections, and concern coverage in a side panel.
Agent attribution — decisions recorded by agents (bootstrap, autonomous implementation) are visually flagged so you can spot which ones need human review.
Architecture
Section titled “Architecture”The map is a TypeScript frontend compiled at build time and embedded into the Trurlic binary via rust-embed. The backend is an axum HTTP server with:
- REST API for graph queries (reads
ProjectStateunder the read lock) - WebSocket endpoint for live sync (pushes diffs when the file watcher detects changes)
- Bearer token authentication (random token generated on startup, passed to the browser via URL parameter)
- CORS and security headers via
tower-http
No external dependencies at runtime — the map is fully self-contained in the binary.