Skip to main content

Debug & Monitor

Debug your flows and monitor execution in real-time

EdgeFlow provides powerful debugging and monitoring tools to help you develop, test, and maintain your automations effectively.

Debug Panel

The Debug Panel at the bottom of the Flow Editor shows real-time output from Debug nodes and system messages.

Debug Monitor Terminal
10:45:23.456 Temperature Sensor msg.payload : 23.5
10:45:23.460 Temperature Sensor msg.topic : "sensors/temp"
10:45:20.123 Threshold Check Warning: High temperature detected
10:45:15.789 MQTT Publisher Error: Connection refused

Debug Message Types

Info

Normal debug output showing message data

Warning

Non-critical issues that may need attention

Error

Errors that prevented node execution

Success

Successful operations (optional logging)

Panel Controls

πŸ—‘οΈ Clear Clear all messages from the debug panel
⏸️ Pause Pause message updates (useful for inspecting messages)
πŸ” Filter Filter messages by node name or content
β–Ό/β–² Toggle Collapse or expand the panel

Using Debug Nodes

Add Debug nodes to your flow to output message data to the Debug Panel.

Debug Node Configuration

Output

  • msg.payload - Output only the payload (default)
  • Complete msg object - Output entire message
  • JSONata expression - Custom expression

To

  • Debug window - Show in Debug Panel
  • System console - Output to server logs
  • Node status - Show on node in editor

Best Practice: Strategic Debug Placement

Sensor
πŸ›
Transform
πŸ›
Switch
πŸ›
MQTT Out

Place Debug nodes after each processing step to trace message flow through your automation.

Monitor Tab

The Monitor tab shows real-time status of your flows and nodes.

Flow Status

Temperature Monitor Running β€’ 5 nodes active
MQTT Handler Running β€’ 8 nodes active

Connections

WebSocket Clients: 2
MQTT Connections: 1

Executions Page

View detailed execution history on the Executions page (accessible from the main navigation).

Execution Details

  • Timestamp - When the execution started
  • Flow Name - Which flow ran
  • Duration - How long execution took
  • Status - Success, Error, or Running
  • Node Path - Nodes executed in order
  • Input/Output Data - Message data at each step

Common Issues & Solutions

πŸ”΄ Node shows Error status

Cause: Node execution failed due to configuration or runtime error.

Solution: Check the Debug Panel for error details. Review node configuration and input data.

🟑 Flow not triggering

Cause: Trigger node not configured correctly or flow not deployed.

Solution: Verify the flow is deployed and running. Check inject/schedule node settings.

πŸ”΅ Messages not appearing in Debug

Cause: Debug node disabled or filtering active.

Solution: Enable the Debug node (click the button on the node). Clear any filters.

⚫ WebSocket disconnected

Cause: Network issue or server restart.

Solution: Refresh the page. Check that EdgeFlow service is running.

Performance Monitoring

Monitor system performance in the Dashboard and identify bottlenecks:

CPU Usage
23%
Memory
156MB / 1GB
Active Flows
4 / 10

Performance Tips

  • Disable Debug nodes in production to reduce overhead
  • Use rate limiting on high-frequency triggers
  • Avoid storing large data in flow context
  • Split complex flows into smaller, focused flows

Advanced Debug Panel Features

The Debug Panel is powered by real-time WebSocket streaming. It subscribes to execution and node_status events, delivering instant feedback as your flows run.

Message Filtering

Filter debug messages by level and by source node to focus on what matters:

Debug Monitor Terminal
Level:
Node:
10:45:23.456 Temperature Sensor msg.payload : 23.5 2ms
10:45:20.123 Threshold Check Warning: High temperature detected 5ms
Input:
{ "payload": 42.8, "topic": "sensors/temp" }
Output:
{ "payload": 42.8, "warning": true }
10:45:15.789 MQTT Publisher Error: Connection refused 150ms

Key Capabilities

  • Real-time streaming — Messages arrive instantly via WebSocket (execution and node_status events)
  • Level filtering — Toggle visibility for info, warn, error, debug, and success levels
  • Node filtering — Show messages from a specific node only
  • Search — Full-text search across all message content
  • Expandable messages — Click any message to view full input, output, and error details
  • Execution time — Per-node execution duration displayed on each message
  • Copy to clipboard — One-click copy of any message data
  • 300-message buffer — Oldest messages are removed automatically to conserve memory

Execution Context

Every flow execution is tracked by an ExecutionContext, which records the FlowID, ExecutionID, StartTime, Variables (local and global), and per-node states.

Node State

Each node within an execution maintains a NodeState containing:

  • NodeID — Unique identifier for the node
  • Status — Current state (pending, running, completed, error)
  • StartTime / EndTime / Duration — Timing information
  • Error — Error message if the node failed
  • Input data — The message received by the node
  • Output data — The message produced by the node
  • ExecutionCount — How many times this node has run

Context Inspection in a Function Node

// Access flow context
const count = flow.get('executionCount') || 0;
flow.set('executionCount', count + 1);

// Access node context
const lastValue = context.get('lastReading');
context.set('lastReading', msg.payload);

// Access global context
const config = global.get('systemConfig');

Context Store

EdgeFlow provides three variable scopes for storing data that persists across messages:

Node Context

Private to a single node. Other nodes cannot read or write this data.

context.get('key') / context.set('key', value)

Flow Context

Shared across all nodes within the same flow.

flow.get('key') / flow.set('key', value)

Global Context

Accessible from any node in any flow. Use for cross-flow shared state.

global.get('key') / global.set('key', value)

Storage Backends

Backend Description Persistence
MemoryContextStore In-memory storage. Fast reads and writes. Lost on restart
FileContextStore Persistent JSON file on disk. Survives restarts. Persistent

Context Methods

Method Description
Get(key) Retrieve a value by key
Set(key, value) Store a value by key
Keys() List all stored keys
Delete(key) Remove a specific key
Clear() Remove all keys from this scope
Note: Context data in MemoryContextStore is lost on restart. Use FileContextStore for data that must survive service restarts.

Error Handling Patterns

EdgeFlow provides built-in mechanisms for catching and handling errors in your flows.

Catch Nodes

A Catch node intercepts errors thrown by other nodes. You can configure it to catch errors from specific nodes or from all nodes within a flow.

Error Message Structure

When an error is caught, the message includes an error object:

msg.error = {
  message: "Connection refused",
  source: {
    id: "node-abc123",
    type: "mqtt-out",
    name: "MQTT Publisher"
  }
}

Error Handling Flow

Main Path
Trigger
Process
MQTT Out
Error Path
Catch
Log Error
Notify Admin

Status Nodes

Status nodes allow you to monitor node status changes programmatically. When a node changes its status (e.g., connected, disconnected, error), the Status node receives a message you can route to logging, alerts, or dashboards.

Real-Time WebSocket Events

EdgeFlow uses a central WebSocket hub at /ws to broadcast real-time events to all connected clients. Each client maintains a 256-message send buffer.

Event Types

Event Description Consumer
execution Node execution with input/output data Debug Panel
node_status Node state changes (running, stopped, error) Debug Panel, Flow Editor
flow_status Flow lifecycle events (started, stopped, created, deleted) Logs Panel
log Backend log messages Logs Panel
notification General system notifications UI notifications
module_status Module state changes Module Manager

Connection Details

  • Endpoint — WebSocket at /ws (main hub)
  • Send buffer — 256 messages per client
  • Keepalive — 30-second ping interval
  • Reconnect — Clients auto-reconnect on disconnect