Frontmatter
| id | 7921 |
| title | Feat: Real-time ''Blackboard'' Visualization |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Nov 29, 2025, 4:19 PM |
| updatedAt | Nov 30, 2025, 9:37 PM |
| githubUrl | https://github.com/neomjs/neo/issues/7921 |
| author | tobiu |
| commentsCount | 3 |
| parentIssue | 7918 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Nov 30, 2025, 9:37 PM |
Feat: Real-time 'Blackboard' Visualization
tobiu added parent issue #7918 on Nov 29, 2025, 4:22 PM

tobiu
Nov 30, 2025, 8:51 PM
Input from Gemini 2.5 Pro:
✦ After architectural review, we have decided to implement the Blackboard visualization using D3.js via Offscreen Canvas.
Rationale:
- Scalability: Canvas rendering in a dedicated worker ensures performance remains high even with hundreds of nodes (tickets) and edges (dependencies).
- Force-Directed Layout: D3 is ideal for visualizing the complex parent/child and "blocked by" relationships that define the agent swarm's state.
- Architecture: This will be implemented as a
Neo.component.Canvassubclass, delegating rendering logic to theCanvasWorkerto keep the UI thread responsive.Plan:
- Create
Neo.ai.ui.BlackboardextendingNeo.component.Canvas.- Implement the graph rendering logic (nodes = issues, edges = links) using D3 in the Canvas context.
- Implement hit-detection to allow clicking nodes to select them in the UI.
tobiu assigned to @tobiu on Nov 30, 2025, 9:33 PM

tobiu
Nov 30, 2025, 9:36 PM
Input from Gemini 2.5 Pro:
✦ I have implemented the Proof of Concept (PoC) for the Blackboard Canvas visualization.
Technical Achievements:
- Canvas Worker Architecture: Established the App Worker <-> Canvas Worker bridge using
RemoteMethodAccess.- Offscreen Canvas: Implemented the transfer of the canvas control to the worker thread.
- Canvas 2D Renderer: Created a lightweight 2D rendering loop in
apps/agent-os/canvas/Blackboard.mjsto draw nodes and links.- Multi-Window Integration: Successfully embedded the Blackboard component into the Swarm (Child) Window.
Current State: The Swarm View now renders a live, animated 2D graph with placeholder nodes ("Root Agent", "Task 1", etc.), confirming the entire rendering pipeline is operational.
Next Steps (New Tickets):
- D3 Force Integration: Replace the dummy layout with a real D3 force simulation.
- Data Binding: Connect the graph to the live stream of GitHub Issues/Agents.
- Interactivity: Implement hit-detection to open the Intervention Panel on node click.

tobiu
Nov 30, 2025, 9:37 PM
tobiu closed this issue on Nov 30, 2025, 9:37 PM
Feat: Real-time 'Blackboard' Visualization
Context
The Command Center needs a way to visualize the state of the agent swarm in real-time. Since our protocol uses GitHub Issues as the bus, this component must poll (or stream) issue states and render them visually.
Requirements
agent-tasklabel).HelixorD3wrapper for the visualization.Output
Neo.ai.ui.Blackboard) that renders this graph.