End-user and developer guide for WORMWOOD_APP.html — the Nexus visual pipeline builder. Covers connecting to the engine, building pipeline graphs, configuring nodes, saving and running pipelines, canvas navigation, demo mode, themes, and URL parameters.
Purpose and scope of WORMWOOD_APP.html
The Orchestrator Canvas is the pipeline designer inside Nexus. It lets you visually build, edit, and run process pipelines as directed acyclic graphs (DAGs). Each pipeline node represents a single processing step; edges represent data flow between steps.
The canvas operates at Level 1 (Macro scale) of the Nexus 4-resolution model — the highest level, where entire workflow graphs are composed and executed.
| Capability | Detail |
|---|---|
| Pipeline browsing | Select an app (org) and a pipeline from the top bar dropdowns |
| Node placement | Drag node types from the right palette onto the canvas |
| Edge creation | Drag from one node's output pin to another node's input pin |
| Node configuration | Double-click a node to open the config panel; edit properties and rules |
| Pipeline save | SAVE button commits the current graph to the engine database |
| Pipeline run | RUN button executes the pipeline and opens the run log panel |
| Multi-level editing | Four level tabs (L1–L4) navigate the four Nexus resolution scales |
| Live SSE | Server-Sent Events keep canvas node status indicators live during execution |
How to open WORMWOOD_APP.html and connect to the engine
The canvas is served by the Wormwood engine at:
http://localhost:8011/nexus-ui/WORMWOOD_APP.html
Append URL parameters to pre-configure the session (see Section 12).
NEXUS_APP.htmlOn first load, the canvas reads the ?key= URL parameter for your API key. If absent, it tries a stored key from localStorage. Without a valid key, all API calls return 401 and the SSE indicator shows OFFLINE.
API Key required: All pipeline operations need a valid API key. Get yours from your Nexus administrator or from the Admin Panel at http://localhost:8011/admin.
Every control in the topbar, left to right
| Control | Position | Function |
|---|---|---|
| « HUB | Far left | Return to NEXUS_APP.html Hub Dashboard |
| WORMWOOD APP | Centre | Canvas title / breadcrumb root |
| L1 / L2 / L3 / L4 | Centre-right | Switch between the four Nexus resolution levels (Macro, Micro, Nano, Pico) |
| App selector | Right bar | Dropdown listing all apps registered in the engine; selecting an app loads its pipelines |
| Pipeline selector | Right bar | Dropdown listing pipelines for the selected app; selecting one loads its graph onto the canvas |
| SAVE | Right bar | Write the current canvas graph back to the engine (persists nodes + edges) |
| RUN | Right bar | Execute the selected pipeline; opens the run log panel |
| DEMO | Right bar | Run the autonomous demo sequence (only shown for demo-enabled pipelines) |
| NEW PIPELINE | Right bar | Create a new empty pipeline for the selected app |
| ZOOM + / ZOOM − | Toolbar below topbar | Increase or decrease canvas zoom by 20% |
| RESET | Toolbar below topbar | Reset zoom to 100% and pan to origin |
| Zoom % label | Toolbar below topbar | Current zoom level display |
| SSE indicator | Toolbar below topbar | Live event connection status: LIVE (green) or OFFLINE (dim) |
| PALETTE | Toolbar below topbar | Toggle the node type palette panel (right side) |
| ADD NODE | Toolbar below topbar | Open a quick-add menu for node types |
| DELETE | Toolbar below topbar | Delete the currently selected node |
| LOG | Toolbar below topbar | Toggle the run log panel |
Selecting an app and pipeline to edit
URL shortcut: Load a specific pipeline directly with ?org=arc&pipeline=nesto-worker-onboard-full&key=your-key in the URL. The canvas loads both the app and pipeline automatically.
If no pipeline is selected, the canvas is blank. This is the correct initial state. Select a pipeline or create a new one before editing.
Pan, zoom, and keyboard shortcuts
Hold Space and drag anywhere on the canvas background, or right-click-drag. The cursor changes to a grab hand during pan.
| Method | Action |
|---|---|
| Mouse scroll | Scroll wheel zooms in/out centred on the cursor position |
| ZOOM + button | Zoom in by 20% |
| ZOOM − button | Zoom out by 20% |
| RESET button | Snap back to 100%, pan to default origin (60,40) |
| Key | Action |
|---|---|
| Space + drag | Pan canvas |
| Delete | Delete selected node |
| Escape | Cancel active connection drag |
Adding, moving, selecting, and deleting nodes
Alternative: Click ADD NODE in the toolbar to add a node of a chosen type at a default position, then drag it into place.
| Category | Colour | Node Types |
|---|---|---|
| FORM | Blue | Submission Form, Review Form, Approval Gate |
| INTEL | Purple | OCR Document, Validate Record, AI Transform, Exception Router |
| STORE | Green | Write deltaPrism, Query deltaPrism, Cache Data |
| API | Amber | HTTP POST, Send SMS, Send Email, Webhook Listener |
| LOGIC | Orange | Condition Branch, Parallel Split, Wait/Delay, Loop Iterator |
Click and hold on a node body (not a pin) and drag to reposition it. Edges connected to the node follow the node in real time.
Click once on a node to select it. The selected node renders with an accent outline. The DELETE button in the toolbar becomes active.
Save required: Deletions are not permanent until you click SAVE. Reloading the pipeline without saving discards all unsaved changes.
Drawing edges between node pins
Each node has small circular pins on its left (input) and right (output) sides.
Tip: You can connect one output pin to multiple input pins (fan-out). You can connect multiple output pins to one input pin (fan-in). Both are valid pipeline topologies.
Edges cannot currently be deleted individually from the canvas. To remove a connection, reconfigure the pipeline by deleting the relevant node and re-adding it, or edit the graph JSON directly via the engine API (PUT /pipelines/{id}).
Using the Class Panel to set node properties and rules
Double-click any node on the canvas. The Class Panel slides in from the right, showing the node's configuration fields.
| Section | Content |
|---|---|
| Node header | Node type badge and editable node label |
| Properties | Key–value pairs specific to the node type (e.g., HTTP URL, email recipient, delay duration) |
| Rule Reference | Link to the Nexus rule engine rule governing this node. Click EDIT RULE to open the inline rule editor (Pico scale) |
Click EDIT RULE in the Rule Reference section to open the Pico-scale rule editor directly inside the panel. This editor lets you write or modify the Lua rule expression that governs the node's execution logic.
Persisting graph changes to the engine
Saved: [pipeline name] v[version] on successAuto-save is not enabled. All changes (moved nodes, new edges, property edits) are lost on page reload unless you click SAVE first.
Executing the current pipeline via the canvas
The run log panel shows a live stream of pipeline events. Each line contains a timestamp, node name, event type, and message. Errors appear in red. Warnings in amber. Successful node completions in green.
Tip: You can keep the run log open while editing. The SSE stream will update it automatically on the next run.
Running the autonomous demo sequence
Demo mode is available for specific pipelines that have a defined demo sequence (e.g., nesto-worker-onboard-full). When such a pipeline is loaded, the DEMO button appears in the top bar.
Demo mode is designed for prospect presentations and sales demos. It animates the full pipeline without requiring real backend integrations to be active.
Configuring the canvas via URL for direct links and integrations
| Parameter | Example | Effect |
|---|---|---|
?key= | ?key=local-test-key | Sets the API key used for all engine requests. Saved to localStorage. Required for all API calls. |
?org= | ?org=arc | Pre-selects the app (org) in the App selector dropdown. The pipeline list loads automatically. |
?pipeline= | ?pipeline=nesto-worker-onboard-full | Pre-selects and loads the specified pipeline. Requires ?org= to be set (or app pre-selected). The pipeline graph loads automatically. |
?skin= | ?skin=glass-ember | Applies a visual skin on load (fallback for direct links). When launched from NeXus Hub, skin is passed via sessionStorage['na-session-skin'] instead. Valid values: glass-ember, glass-aurora. Omit to use the stored preference or default. |
http://localhost:8011/nexus-ui/WORMWOOD_APP.html?org=arc&pipeline=nesto-worker-onboard-full&skin=glass-ember&key=local-test-key
This URL opens the canvas, applies the glass-ember skin, selects the ARC app, and loads the Nesto Worker Onboard pipeline immediately — ready to edit or demo without any manual selection.
Changing the canvas theme
| Skin | URL value | Description |
|---|---|---|
| Default (Dark Green) | omit parameter | Standard Nexus dark theme with green (#19E28A) accent |
| Glass Ember | glass-ember | Warm amber/orange glass-morphism with frosted panels |
| Glass Aurora | glass-aurora | Cool cyan/teal glass-morphism aurora effect |
Skin preferences are stored in localStorage under the key nexus-theme. The stored skin applies automatically on next load even without the URL parameter.
Navigating the four Nexus resolution scales
The level tabs in the topbar switch the canvas between the four Nexus resolution levels. Each level holds an independent graph.
| Level | Scale | Unit | Purpose |
|---|---|---|---|
| L1 | Macro | Workflow / Pipeline | The main execution graph. This is what runs when you click RUN. |
| L2 | Micro | Class / Entity Schema | Entity class definitions. ChameleonV2 reads these to generate forms. |
| L3 | Nano | Property | Typed fields with deltaPrism BDT constraints and RBAC visibility rules. |
| L4 | Pico | Rule | Nexus rule engine rules governing each property field. |
Most users work exclusively at L1. L2–L4 are used by Nexus system architects when designing entity schemas and validation rules for a new app.
Starting from a blank canvas
Understanding the live connection status
The SSE (Server-Sent Events) indicator in the toolbar shows the live connection to the engine:
| State | Appearance | Meaning |
|---|---|---|
| LIVE | Green text | Engine is reachable; node status updates stream in real time during pipeline runs |
| OFFLINE | Dim text | Cannot reach the engine. Check that uvicorn is running on the configured port. API calls will also fail. |
| RECONNECTING | Amber text | Connection lost; canvas is attempting to reconnect every 5 seconds |
Common issues and solutions
| Problem | Cause | Solution |
|---|---|---|
| App selector shows "0 org(s) loaded" | Engine not running or API key invalid | Start uvicorn: .venv\Scripts\uvicorn wormwood.api.app:app --port 8011. Verify key in URL. |
| Pipeline loads but canvas is blank | Pipeline has no nodes saved yet | This is correct for a new pipeline. Add nodes from the palette. |
| SAVE fails with 401 | API key missing or expired | Add ?key=your-key to the URL and reload. |
| Node drag is jerky / node teleports | Browser compositor issue | Disable browser extensions. Try in a different browser. Ensure GPU acceleration is enabled in browser settings. |
| SSE shows OFFLINE despite engine running | Engine on wrong port, or CORS issue | Confirm engine URL in the canvas source (ENGINE_API constant). Default is http://localhost:8011. |
| DEMO button not visible | Pipeline slug is not in DEMO_SLUGS set | Demo is only available for specific pre-configured pipelines. The current demo pipeline is nesto-worker-onboard-full. |
| Skin not applying | localStorage blocked, or sessionStorage cleared | When launched from NeXus Hub, skin arrives via sessionStorage['na-session-skin'] (PROD-SKIN-002). For direct links, use ?skin=glass-ember URL param. Enable localStorage or clear site data. |
| Edge not connecting | Released mouse outside target pin | Start drag precisely on the output pin circle. Release precisely on the input pin circle. Zoom in if pins are too small. |