12. PsyProbe
Point any browser at your running system and watch every node, space, component and message live — no instrumentation, no interference.
Overview
PsyProbe is served on the system's main port — open http://localhost:10000/ and you get a dynamic, live-updating view of all nodes, spaces and components. The top grey line shows the current time, uptime and the node list with activity levels; below it, hierarchical sections with tabs expand via (+)/(−):
- System Info — component and node communication, active/inactive contexts, all subscriptions.
- Nodes — performance statistics, general info, live activity.
- Catalogs — whiteboards show stored messages, performance, activity and subscriptions; other catalogs show performance/activity/subscriptions plus any custom tabs.
- Modules — performance, activity, subscriptions, custom tabs.
Architecture & tab map
The standard tabs
| Tab | What it shows |
|---|---|
| System Component Communication | Matrix of amount and speed of traffic between components |
| System Node Communication | Same matrix between nodes |
| System Contexts | Active/inactive contexts, expandable to the triggers/posts under each |
| System Subscriptions | All subscriptions, hierarchical by message type; every trigger/post has a [test] button to fire it manually |
| Node Performance | Input/output, queues, CPU and memory over the last 1/10/30 s |
| Node Info | Spaces per node with status and statistics |
| Whiteboard Stored Messages | Stored messages with a filter line: text, count, size, age |
| Component Performance | Per-component 1/10/30 s statistics |
| Component Activity | Last 10 incoming + 10 outgoing messages, auto-updating |
| Component Subscriptions | Active/all subscriptions with [test] buttons |
Messaging activity
The Activity tab is where you spend debugging time: the ten most recent messages in and out, updating live (tick a single component or the global “All” box). Hover a message to see its full content — header fields like an email (time, from, to…) plus every user data entry (text, integer, float, time, raw binary, or a nested DataMessage) — and click to pin it in a static window. Incoming messages show their source component. In the Subscriptions tab, the test button delivers an empty message with that trigger's name — handy for poking a module without writing a test harness.
Communication statistics
The Performance tab shows data volume over the last 1, 10 and 30 seconds per component or node. The Log tab collects each component's logPrint output (with a free-text filter at system level), and the Data tab shows any private data a component published with a mimetype via setPrivateData. The system-level Dataflow view draws components and flows graphically, with two filters (messages, components) to tame big systems.
Custom views
Four escalating ways to show your own data:
- Custom component tab — a template HTML file registered from the crank:
api->addPsyProbeCustomView("Stored Messages", "elements/whiteboardmessages.html");. CoCoMaps' Cognitive Map, Time Series chart and Control Panel views all work this way. - Private data over HTTP —
GET /api/getcomponentdata?compid=15&name=MyDataName&format=text(formats: text/xml/json/html/binary); use manually or from AJAX. - RequestStore Catalog —
GET /api/query?from=RequestStore&query=FrameCounter(see Catalogs). - Custom subsite — drop HTML files into the PsyProbe tree (or map a directory with a
<psyprobe><alias>) and loadhttp://localhost:10000/mycustompage.html.
<script> defining var TemplateCompID, TemplateCompName, a loadTemplate($target, compID) (called once) and an updateTemplate($target, compID) (called every update cycle). The recipe, plus PsyProbe spec settings (ports, locations, aliases, clickable posts), is in the System Guide; a hands-on walk-through is in Tutorials.