Reference

Reference

Quick-access reference tables for keyboard shortcuts, condition templates, API endpoints, troubleshooting, and terminology.


Keyboard Shortcuts

Shortcut Action Mode
Ctrl+S Quick Save — overwrite the current config file Any (requires a loaded config)
Ctrl+Shift+S Save As — save to a new file Any
Ctrl+Shift+L Toggle Tool Library drawer Edit Mode only
Ctrl+R Reload — restores last active workflow from session Any

Node Status Colors

Border Color Meaning
Gray Idle — not yet run
Blue (pulsing) Running
Green Completed successfully
Red Error / failed
Yellow Warning / partial completion

Edge Colors

Edge Color Meaning
Green (animated) Success path — workflow routing to next node
Red (animated) Error/negative path — error, false, no-output, etc.
Purple (animated) Loop edge — workflow looping back to a prior node
Gray (static) Idle — not yet traversed

Loop Edge Labels

Label Iterations Notes
loop 10 (default) No number = defaults to 10
loop:3 3 Explicit iteration count
loop:50 50 Maximum allowed
loop:999 50 Clamped to safety cap of 50

During execution, the label updates to show progress:
loop:3 ↺ 1/3 — first iteration
loop:3 ↺ 2/3 — second iteration
loop:3 ✓ 3/3 — all iterations complete

The counter resets to the clean loop:N label when the workflow is reset.


Condition Templates

NORA ships with a Condition Library of ready-made templates you can drop onto the canvas. See Node Types — Condition Node for full details on each.

Basic Logic

Template Logic Type Edge Labels
IF/Else (Status) status success, error
Has Output? output-check has-output, no-output

Output Comparisons

Template Logic Type Edge Labels Parameters
Output Contains output-contains contains, not-contains searchString, caseSensitive
Output Matches (Regex) output-matches matches, no-match regexPattern, regexFlags
Numeric Threshold numeric-threshold above, below threshold, operator
Numeric Range numeric-range in-range, out-of-range rangeMin, rangeMax

Time / Date

Template Logic Type Edge Labels Parameters
Time Window time-window in-window, out-of-window startTime, endTime
Day Check day-check match, no-match selectedDays (array)

Advanced

Template Logic Type Edge Labels Parameters
JSON Expression json-expression true, false expression, variables

AI Nodes

Template Type Edge Labels
AI Router aiRouter Custom categories (e.g., summarize, todo, other)
AI Agent aiAgent Per-tool handles + success, error
AI Autonomous Agent aiAutonomousAgent complete, partial, needs-input, error
Custom Script Agent customScriptAgent success, error + custom route labels

Condition Logic Types

Logic Type How It Works Required Edge Labels
status Routes based on exit code (0 = success, non-zero = error) success, error
output-check Routes based on whether stdout is non-empty has-output, no-output
output-contains Substring search in stdout contains, not-contains
output-matches Regex test against stdout matches, no-match
numeric-threshold Extracts first number, compares with operator above, below
numeric-range Extracts first number, checks min–max bounds in-range, out-of-range
time-window Checks if current time is within a window in-window, out-of-window
day-check Checks if today matches selected days match, no-match
json-expression Parses JSON stdout, evaluates expression true, false

Layout Algorithms

Available via the Layout dropdown in Edit Mode:

Layout Description
Hierarchical Tree-like structure flowing left to right (default)
Vertical Nodes stacked top to bottom
Horizontal Nodes arranged in a single row
Zigzag Alternating left-right pattern
Grid Organized in rows and columns
Spiral Nodes arranged in an outward spiral
Force-Directed Physics-based layout — connected nodes pull together, unconnected push apart

API Endpoints

All endpoints run on http://localhost:4000 (default port).

Workflow Config

Method Path Description
GET /config-folders Get workflow folder locations
GET /config-files List available config files
GET /config-file Load a specific config file
POST /save-config Save workflow configuration

Command Execution

Method Path Description
POST /execute Execute a shell command
POST /execute-interactive Execute in a new terminal window
POST /kill-foreground-process Kill a running foreground process

AI Services

Method Path Description
POST /ai-router/classify AI text classification
POST /ai-agent/execute AI Agent tool selection
POST /ai-autonomous-agent/execute Autonomous Agent (SSE streaming)
POST /custom-script-agent/execute Custom Script Agent execution
POST /custom-script-agent/message Send message to running script agent
POST /custom-script-agent/stop Stop a running script agent
GET /custom-script-agent/status/:id Get script agent session status

Custom Script Agent Sessions

The Custom Script Agent maintains persistent sessions for multi-turn interactions:

Method Path Description
POST /custom-script-agent/start-session Start a new persistent session
POST /custom-script-agent/send-to-session Send message to an active session
POST /custom-script-agent/stop-session End a session
GET /custom-script-agent/session-status/:id Get session state and history

Background Execution

Method Path Description
POST /run-background Run a workflow in the background
GET /background-jobs List background jobs
GET /background-jobs/:jobId/logs Get logs for a background job
POST /stop-background-job Stop a background job

Scheduling

Method Path Description
POST /schedule-workflow Create a cron schedule
POST /unschedule-workflow Remove a schedule
GET /scheduled-workflows List active schedules

Execution History

Method Path Description
GET /execution-logs List all execution history
GET /execution-logs/:jobId Get detailed logs for one execution
POST /create-workflow-logger Create a foreground execution logger
POST /log-workflow-event Log an event during execution
POST /complete-workflow-logger Finalize an execution log

Gmail

Method Path Description
GET /gmail/has-credentials Check if OAuth credentials exist
POST /gmail/set-credentials Save OAuth credentials
GET /gmail/auth-url Get OAuth authorization URL
GET /gmail/oauth2callback OAuth redirect handler
GET /gmail/status Check connection status
POST /gmail/disconnect Disconnect Gmail
POST /gmail/send-test Send test email
POST /gmail/update-preferences Update notification preferences
GET /gmail/preferences Get notification preferences

Process Management

Method Path Description
GET /active-processes List active workflow processes
POST /kill-process Kill a specific process
POST /kill-workflow-processes Kill all processes in a workflow
POST /cleanup-stale-processes Remove stale process entries

Tool Library

Method Path Description
GET /tool-library/tools List installed tools
POST /tool-library/tools/create-from-node Create tool from a node
GET /tool-library/tools/template Get resolved tool template
POST /tool-library/tools/customize-instance Create workflow-local copy
POST /tool-library/tools/install-from-folder Install from folder
POST /tool-library/tools/delete-version Delete a tool version
POST /tool-library/tools/delete-tool Delete all versions of a tool
GET /tool-library/tools/manifest Get tool manifest

Media & Files

Method Path Description
GET /media/latest-in-folder Get latest file in a folder
GET /media/local Serve a local media file
POST /open-file Open file in external editor
POST /open-directory Open folder in file explorer
GET /file-content Read file content

System

Method Path Description
GET /health Server health check

Troubleshooting

Import Errors

Error Cause Fix
“Missing required export statement” Config file doesn’t use export const workflowBlocks Add the correct export syntax to your config file
“Error parsing blocks array” Malformed JSON: single quotes, trailing commas, unquoted properties Use double quotes for all strings; remove trailing commas
“No valid workflow blocks found” Empty blocks array or incorrect file structure Verify the file contains a non-empty workflowBlocks array
“Please select a JavaScript (.js) or JSON (.json) file” Wrong file type selected Only .js and .json config files are supported

Save Errors

Error Cause Fix
“Cannot modify the default workflow” Trying to quick-save the default workflow Use Save As (Ctrl+Shift+S) to save a copy
“No configuration file loaded” No config imported and trying to quick-save Import a config first, or use Export Config

Workflow Execution Issues

Problem Cause Fix
Condition node routes to wrong path Edge labels don’t match condition outputs Label edges with the correct terms (e.g., success/error, in-window/out-of-window)
Condition node has no routing Missing logicType on the condition Set logicType explicitly in the node properties
Orphaned edge warnings Connections reference deleted nodes Remove stale connections from the canvas
Node shows red but no output Command failed immediately Check the working directory and command path exist
Tool parameter prompt not appearing No parameters defined on the node Add parameter definitions in the node’s edit form

AI Node Issues

Problem Cause Fix
“API key not configured” No key saved for the selected provider Add the key in Settings → System → AI Provider Keys
AI returns wrong category Prompt too vague or categories ambiguous Refine the custom prompt; use distinct, descriptive category names
Autonomous Agent runs too long Max iterations or timeout too high Lower Max Iterations and Timeout Minutes
Autonomous Agent cost too high Expensive model or too many iterations Use a cheaper model; set a Budget Limit
Custom Script Agent hangs Script not flushing stdout Add sys.stdout.flush() (Python) after every print()

Tool Library Issues

Problem Cause Fix
“Failed to install tool” Source folder missing tool.json Ensure the folder contains a valid tool.json manifest
Tool not appearing after install Tool Library not refreshed Click the Refresh button in the drawer
“Customize on insert” disabled Workflow not saved to a file Save the workflow first, then enable customization

Connection Issues

Problem Cause Fix
Server not responding Server not started or wrong port Run npm run server and check the port in Settings
“Failed to fetch” errors Server crashed or port conflict Restart the server; check for port conflicts
Gmail OAuth fails Wrong redirect URI Ensure redirect URI is http://localhost:4000/gmail/oauth2callback

System & Startup Issues

Problem Cause Fix
NORA doesn’t start with Windows Windows startup shortcut missing or stale Open Settings → System, toggle Start with Windows OFF then ON again. This recreates the shortcut in your Windows Startup folder.
App shows “Start with Windows” enabled but doesn’t auto-start Shortcut was deleted or points to old exe Same as above — toggle the setting OFF then ON to refresh the shortcut.
Schedules not persisting after restart ~/.nora/config/schedules.json corrupted or missing Check the file exists and contains valid JSON. If corrupted, delete it and recreate schedules via the UI.
External schedule edits not appearing File watcher may not have triggered, or edits made before app started Click ↻ Refresh in the Scheduler tab to force a reload from disk. External edits are auto-merged when detected.

Tip (Windows Startup): The startup shortcut is located at:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\NORA.lnk
You can manually verify it exists and points to the correct NORA executable.

Scheduler Features

Feature Location Notes
Pause/Resume Click ⏸/▶ button on each schedule card Paused schedules won’t execute until resumed
Run Now Click ▶ Run Now on any schedule card Triggers immediate execution
Edit Schedule Click ✎ Edit on any schedule card Change cron expression or label; workflow cannot be changed
Refresh Click ↻ Refresh in scheduler header Reloads schedules from disk; useful after external edits
AI-created schedules Shows “(by AI)” after creation date Schedules with createdBy: "agent" are visually marked

File Locations

Data Path
App settings ~/.nora/config/settings.json
Gmail credentials ~/.nora/email-credentials.json
Scheduled workflows ~/.nora/config/schedules.json
Execution logs ~/.nora/logs/
Agent session logs ~/.nora/agent_logs/
Tool Library ~/.nora/tools/

~ = your home directory (e.g., C:\Users\{YourName} on Windows)


Glossary

Term Definition
Node A single step in a workflow — a command, condition, AI agent, or display element
Edge A connection between two nodes that defines execution flow
Edge Label A string on an edge that determines which path a condition or AI node takes
Canvas The visual workspace where you build workflows by placing and connecting nodes
Edit Mode UI mode for building — adding nodes, editing properties, making connections
Run Mode UI mode for executing — running nodes, monitoring progress, viewing output
Config File A .js or .json file containing the workflow’s nodes and connections
Quick Save Overwriting the current config file in-place (Ctrl+S)
Save As Saving to a new file location (Ctrl+Shift+S)
Background Job A workflow execution running on the server without the UI open
Foreground Execution A workflow running in the dashboard with real-time visual status
Cron Schedule A time-based schedule using cron syntax to auto-run workflows
Tool A packaged, versioned script that AI agents can execute
Tool Library A local repository of reusable tools stored at ~/.nora/tools/
Tool Ref A reference to a specific tool and version in the Tool Library
Source Handle A connection point on a node’s right side where outgoing edges originate
Target Handle A connection point on a node’s left side where incoming edges arrive
Orphaned Edge A connection whose source or target node has been deleted
Process Monitor A panel showing active OS processes spawned by running workflows
SSE Server-Sent Events — streaming protocol used for real-time agent progress
Stop on Error A per-schedule setting that halts workflow execution when a node fails without an error-handling edge. Foreground runs always stop on error.
Topological Sort The algorithm used to determine node execution order based on connections
Working Directory The filesystem directory where a node’s command runs

Developer Tools

NORA includes tools to help you generate workflow configs without writing code by hand.

Workflow Config Converter (Convert UI)

A browser-based tool with three workflow generation utilities.

Location: Documents\NORA\tools\text_workflow\convert-ui.html

Tab 1: Checklist Converter (No AI Required)

Converts a structured checklist into workflow config code using a built-in parser.

Checklist format:

1 Download Sales Report
  a Connect to FTP server
  b Download latest CSV
  c Save to E:\Data\sales
2 Process Data
  a python process_data.py
  b Validate output
3 Send Notification
  a Email team with results

Rules:
– Main steps: Number + space + title (e.g., 1 Step Name)
– Sub-items: Two spaces + letter + space + description (e.g., a Details here)
– Commands are auto-detected (python, node, npm, etc.)
– Paths use double backslashes for Windows (e.g., E:\\Data)

Tab 2: Directory Generator (No AI Required)

Scans a folder and auto-creates workflow nodes for all scripts found.

  1. Select a project folder
  2. Configure depth, grid layout, spacing
  3. Click “Generate Config”

Output includes nodes for .py, .js, .bat, .ps1 files with proper commands and working directories.

Tab 3: AI Chat (Optional, requires proxy)

Conversational AI workflow generation in the browser. For this feature only, you need the AI Proxy Server running.


AI Proxy Server

A local proxy that enables browser-based AI features (Convert UI’s AI Chat tab) to call AI providers without CORS issues.

Location: Documents\NORA\tools\text_workflow\ai-proxy-server.js

Note: The Checklist Converter and Directory Generator do NOT require this. Only needed for the browser-based AI Chat tab.

Start the server:

cd Documents\NORA\tools\text_workflow
node ai-proxy-server.js

Default port: http://127.0.0.1:8787


AI Chat CLI (Recommended for AI Generation)

A standalone terminal chatbot that generates workflow configs through conversation. This is the most powerful AI workflow generator — it uses a comprehensive schema prompt for accurate results.

Location: Documents\NORA\tools\text_workflow\ai-chat-cli.js

Run:

cd Documents\NORA\tools\text_workflow
node ai-chat-cli.js --provider gemini

Options:
| Flag | Description |
|——|————-|
| -p, --provider | AI provider: claude, openai, or gemini |
| -o, --output-dir | Directory to save generated files |
| --auto-save | Auto-save generated configs without prompting |
| --log-history | Save conversation history to JSON |
| -m, --max-tokens | Default max tokens for responses |

Example session:

You: Create a workflow that monitors E:/logs for new files and sends a Slack notification
AI: [generates complete workflow config code]
Save to file? (y/n): y
Filename: log-monitor-workflow.js

Getting an API key:
Google Gemini (free tier): https://aistudio.google.com/app/apikey
OpenAI: https://platform.openai.com/api-keys
Anthropic: https://console.anthropic.com/


VS Code + GitHub Copilot

If you use VS Code, you can leverage GitHub Copilot (or Claude) to help with NORA workflows:

Use cases:
Generate configs: Describe your workflow in natural language
Debug scripts: Paste error output, get fixes
Explain nodes: Ask “What does this aiAutonomousAgent config do?”
Refactor: Ask “Split this workflow into smaller, reusable parts”

Tip: Open ai-chat-cli.js in VS Code so Copilot learns the workflow schema from its massive system prompt. Then Copilot will understand NORA’s node structure when you ask it to generate configs.

Example prompt to try:

Create a NORA workflow config that:
1. Runs a Python script at E:/scripts/daily-report.py
2. Checks if the script succeeded or failed
3. On success, reads the output file and sends it via Gmail
4. On failure, sends an error notification


Best Practices for AI-Generated Workflows

  1. Be specific — Include file paths, expected outputs, and tool names
  2. Start simple — Generate 3-5 nodes first, add complexity incrementally
  3. Test individually — Run each node in isolation before running the full workflow
  4. Add documentation — Include notepad nodes to explain your workflow
  5. Review paths — AI-generated paths may need adjustment for your system
  6. Use the schema — When asking AI for help, reference that NORA uses a specific node schema (aiAgent, aiAutonomousAgent, condition, script, etc.)