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.
23.5 "sensors/temp" 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
Best Practice: Strategic Debug Placement
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
Connections
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:
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:
23.5 2ms Key Capabilities
- Real-time streaming — Messages arrive instantly via WebSocket (
executionandnode_statusevents) - 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 |
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
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