Architecture: How should Vitto's real-time internal processes be made visi...

Documentation for Sessions

🏗️ Architecture: How should Vitto's real-time internal processes be made visi...

Date: 2026-03-12
Time: 16:37:53 UTC
Session: gspace1-208.3
Agent: backend
Confidence: 90%
Status: ✅ Documented


📋 Decision Context

Question:

How should Vitto's real-time internal processes be made visible to users and admins?

Task: S208: Metacognition + App Reorganization


🎯 Decision Made

Chosen:

Two new SSE-driven views: /vitto/conscience (user-specific inner monologue filtered by userId) and /vitto/introspection (admin-only global god-view). Backend VittoNarrativeService emits events at key decision points (context assembly, dossier loading, skill selection, trust evaluation, queue changes). Privacy-filtered SSE endpoint at /engine/events/conscience/:userId.

Options Considered:

  1. A: WebSocket-based real-time views (bidirectional)
  2. B: SSE-based views with centralized VittoNarrativeService
  3. C: HTTP polling like existing thought-trace (5s interval)
  4. D: Extend Command Center WebSocket to include narrative events

💭 Reasoning

Before making Vitto smarter (Intelligence v2 spec), we need to see how he thinks. The conscience/introspection split mirrors human metacognition: conscience is self-awareness (what Vitto knows about YOU), introspection is system awareness (what's happening globally). SSE chosen over WebSocket because: (1) existing VittoMonitorService already uses SSE pattern, (2) conscience/introspection are read-only streams — no bidirectional communication needed, (3) EventSource is simpler than Socket.IO for unidirectional data. The VittoNarrativeService is centralized to avoid injecting the SSE subject into every service (which would create circular deps).


📁 Files Involved


🔗 Related


Auto-generated by MCP Smart Consolidation