This page explains every node available in the editor. Use it when you need to know what a node does, what you must enter, what data it produces, or whether it works on your target machine.
Each node entry uses the same labels:
| Label | Meaning |
|---|---|
| Action type | The internal name stored in the exported package. You normally do not type or change it. |
| Configuration | The settings you enter in the node properties. |
| Output or Data | Values that later nodes can read. The exact reference uses the node ID shown in the editor. |
| Flow | The execution connection that runs next. Each node names its own outcomes, such as out, ok, not_found, or failed. |
| Use | A common reason to choose the node. |
| Runtime | What happens when the native runner executes the node. |
| Simulation | What the browser editor can test without performing the real native action. |
| Permission | An operation that the runner shows for human approval. |
| Capability | An internal feature category that the runner verifies against the graph. You do not grant capabilities manually. |
| Risk | The review priority calculated from the operations used by the package. |
A setting described as variable aware accepts either a fixed value or a reference such as {{customer_name}}. A fixed value stays the same for every run. A variable reference is replaced with current runtime data. Variables and Data explains how references work.
Exact package field names are enforced by the linked node schemas. Ordinary editor users do not need to read or edit those schemas.
out execution handle. File Watch is the exception: it routes through the outcome that names the file event it observed.out.failed plus one or more named outcomes. Many keep a single success outcome. The rest name each result they can reach, such as ok, not_found, or timed_out. Each node entry below lists the outcomes that node exposes and what leads to each one.failed reports a normal result, not an error. The action completed, wrote its usual runtime data, and set no error value. A file that does not exist, an HTTP 404, and a process that exited non-zero are all normal results, so handle them from their own outcome rather than from failed.failed means the action could not be carried out. The failed route includes error.message, error.code, error.type, error.retryable, and error.details.client_error appears as Client Error. Two are shortened further: connection_closed appears as Closed and device_unavailable as Unavailable. Exported packages and this page use the outcome name.{{n-example.status_code}}.Risk and permission meanings are defined in Approvals, Capabilities, and Risk.
Every trigger carries a When already running option deciding what an activation does when a run of its script is already going. It defaults to Queue, which is the behaviour every script had before the option existed.
| Mode | Behaviour |
|---|---|
| Queue | Wait for the active run, then start. |
| Skip | Drop the activation. Nothing starts and nothing queues. |
| Stop | Cancel the active run and start nothing. |
| Restart | Cancel the active run, then start a fresh one. |
The option is read before the runner asks for an execution slot, so Stop and Skip never wait for the run they were sent to replace and never count against limits.max_active_runs_per_script. That is what lets one trigger toggle its own long-running loop with the limit left at its default of 1:
Webhook "toggle" (When already running: Stop)
-> While {{running}} -> ...work...
The first call starts the run and the loop. The second cancels it and starts nothing. The third starts it again. Cancellation is checked between every step, so it lands inside a loop rather than at the next node boundary.
Stop and Restart cancel a run mid-step. Anything the run had already done stays done, including writes to persistent and global variables. Restart is not throttled: rapid activations can cancel and restart repeatedly, and the runner logs a line each time a run is cancelled before completing so that is visible.
A stopped or skipped activation produces no run, so nothing appears in run history. The runner log records what happened. A Webhook answers 202 Accepted with the outcome in its body, and every webhook response carries an X-BaudBound-Trigger-Outcome header of started, stopped, or skipped. A WebSocket client receives one frame naming the same outcome.
trigger.manual. Capability trigger.manual. Low risk.out.baudbound script run SCRIPT.trigger.schedule. Capability trigger.schedule. Low risk.milliseconds, seconds, minutes, hours, or days, default minutes. The resolved interval must be at least one millisecond. A fraction is refused rather than rounded; choose a smaller unit for a shorter interval, so half a second is 500 milliseconds.out.trigger.file_watch. Capability trigger.file_watch. Permission file.watch.limited for a bounded relative path or file.watch.any for an unbounded path. Medium or Dangerous risk.path, watched_path for the configured file or directory, and normalized event (created, modified, deleted, or renamed).out handle. It starts the run from the outcome matching the normalized event, so created, modified, deleted, and renamed each begin their own branch. Leave an outcome unconnected to ignore that event. An event the runner cannot normalize to one of the four stops the run with an error rather than choosing a branch.file.watch.any. OS save behavior may emit multiple events.trigger.webhook. Capability trigger.webhook. Permission network.webhook. High risk.A-Z or a-z, numbers 0-9, hyphens, or underscores. Optional wait switch, positive response timeout, fallback status 100-599, content type, and body.method, path, headers, query, raw body, parsed json, and response state./events/HOOK_NAME while webhooks are enabled.trigger.websocket. Capability trigger.websocket. Permission network.websocket. High risk.events/messages. The editor displays the leading / and stores the normalized path as /events/messages, so you do not need to type the slash.connection_id, headers, query, and remote address.trigger.hotkey. Capability trigger.hotkey. Medium risk. Windows Desktop only.hotkey Script Setting. The variable selector shows only compatible hotkey values and displays the setting name without requiring braces. A single literal key such as G, F1, or MediaPlayPause is valid. Any distinct supported keys can form a chord, including K+L, F1+T, and Ctrl+Shift+B. See Supported Windows node keys for the exact names.key expression and timestamp.Fn keys and Windows secure-attention input such as Ctrl+Alt+Delete are not available.trigger.serial_input. Capability trigger.serial_input. Permission serial.input. High risk.A-Z or a-z, numbers 0-9, hyphens, or underscores.device_id, received data, byte count, and runner timestamp.trigger.startup. Capability trigger.startup. Permission trigger.startup. High risk.runner_startup reason.trigger.process_started. Capability trigger.process_started. Permission process.observe. Medium risk.control.if. Capability runtime.if. Low risk.true runs when the combined condition result is true and false runs when it is false. Exactly one branch runs. There is no failed outcome; a condition that cannot be evaluated stops the run with an error."42" passes Is string and fails Is numeric. Cast the value first to test it as a number."true" and "false" does not match.1.0 equals the literal 1. Two text values still require exactly the same text. Inversion applies to one row before combinators.{{status_code}} >= 400 routes errors to true.control.color_match. It uses capability runtime.color_match, has low risk, and does not request a permission.0 through 100 percent. A resolved color Script Setting updates the color swatch beside its field.#2F80ED, RGB text such as rgb(47, 128, 237), or a typed RGB object with exactly r, g, and b integer channels from 0 through 255.match runs when the measured difference is less than or equal to the tolerance. no_match runs for any valid pair outside the tolerance. Exactly one branch runs. There is no failed outcome.matches, difference_percent, red_difference, green_difference, and blue_difference remain available to later nodes through the Color Match node ID.0 percent requires exact equality. 100 percent accepts every pair of valid RGB colors. Invalid or dynamically resolved malformed colors stop the node with an execution error instead of following no_match.{{n-pixel.rgb}}, set Expected color to #2F80ED, choose a comparison mode, and enter the acceptable tolerance. The RGB object is passed directly without converting it to text.#101820 and rgb(16, 24, 32), or compare RGB object variables from any source. Color Match is available on every target runtime because it only compares data and does not read the screen.control.switch. Capability runtime.switch. Low risk.default outcome. A case outcome is labeled with the case name and keeps a stable internal ID, so renaming a case keeps its existing connection. The default outcome has the ID default and is drawn as Default.default. Numeric variables and calculated results match equivalent numeric literals even when their displayed formatting differs. Two text values still require exactly the same text.{{event_type}} to created, updated, or default.control.router. Capability runtime.router. Low risk.in-{id} and out-{id}.0. Verification blocks export until the configuration is valid.N in - M out - K routes under the action type. Routes are configured in the properties panel, not on the canvas.control.repeat. Capability runtime.repeat. Low risk.1 through 18446744073709551615.repeat executes the body once for every iteration. done continues after every iteration finishes or after Break Loop ends the Repeat early.{{node-id.index}} holds the zero-based index of the active pass and {{node-id.count}} holds the configured number of passes. Replace node-id with the ID shown in the node's Runtime Data section.control.break_loop. Capability runtime.break_loop. Low risk.done output.done output.control.continue_loop. Capability runtime.continue_loop. Low risk.done output.control.while. Capability runtime.while. Low risk.loop executes while conditions pass. done follows the first false result.{{node-id.index}} holds the zero-based index of the active pass. Replace node-id with the ID shown in the node's Runtime Data section.control.for_each. Capability runtime.for_each. Low risk.loop runs once per item. done follows completion.{{node-id.item}} holds the current item and {{node-id.index}} holds its zero-based index. {{node-id.count}} holds the total number of items, and the booleans {{node-id.is_first}} and {{node-id.is_last}} mark the first and last item. Replace node-id with the ID shown in the node's Runtime Data section.n-example, read the active item with {{n-example.item}} and its position with {{n-example.index}}.runtime.set_variable. Capabilities runtime.variables and, for stored scopes, runtime.persistent_storage. Fallible.set, increment, toggle_boolean, append_list, remove_list_items, set_object_field, remove_object_field, merge_object, clear, or reset. Name, chosen from the variables the manifest declares. Operations use operation-specific values, removal modes, and field paths. Object field writes declare the field value type.variable.local.set at Low risk for runtime, variable.persistent.set at Medium for persistent, variable.global.set at High for global.{{name}} and refreshes $length, $count, $type, and $is_empty.A-Z or a-z, numbers 0-9, hyphens, or underscores. No prefix is reserved: every built-in lives behind @, which a name may not contain.failed with structured error details. A failed operation does not modify the variable. Removing a field that is already missing succeeds without changing the object.action.calculate. Capability action.calculate. Permission calculate. Low risk. Fallible.result float on success. Structured error on failure.action.value.convert. Capability action.value. Permission value.convert. Low risk. Fallible.string, integer, float, boolean, object, list, color, hotkey, datetime, or duration.null is rejected for every target. An unset variable or a missing object field resolves to null.true or false without regard to letter case.value, source_type, and target_type on success. Structured error details are available from failed.action.text.format. Capability action.text. Permission text.transform. Low risk. Fallible.yyyy-MM-dd HH:mm. See Datetime format patterns.text or items according to its type.failed.action.url.parse. Capability action.text. Permission url.parse. Low risk. Fallible.https and custom protocols such as ptr are supported.protocol, host, port, path, raw query, decoded query_parameters, and fragment.name and value fields. Repeated names remain separate entries and keep their original order.failed with structured error details.ptr://command/move?param=value1 produces protocol ptr, host command, path /move, and query parameters [ { "name": "param", "value": "value1" } ].action.log. Capability action.log. Permission log. Low risk.info, warn, error, or debug. Variable-aware Message.out.action.delay. Capability action.delay. Permission delay. Low risk. Fallible.500 milliseconds.success continues after the cancellable wait. An invalid resolved duration continues through failed with structured error details. Cancelling a run stops execution instead of following failed.action.beep. Capability action.sound. Permission beep. Low risk. Desktop only. Fallible.action.notification. Capability action.notification. Permission notification.show. Medium risk. Desktop only. Fallible.action.message_box. Capability action.message_box. Permission messageBox.show. Medium risk. Windows Desktop and Linux Desktop. Fallible.0 through 86400 seconds.ok, cancel, confirm, yes, and no appear: OK shows ok; OK/Cancel shows ok and cancel; Cancel/Confirm shows cancel and confirm; Yes/No shows yes and no; Yes/No/Cancel shows yes, no, and cancel. Changing the button set changes which outcomes exist. timed_out appears only when a timeout is configured, and runs when the countdown expires. failed is always present and runs when the dialog could not be shown, such as a title or message that does not resolve to non-empty text, or a timeout that does not resolve to a supported number.button is ok, cancel, confirm, yes, no, or timeout. Non-timeout values exactly match a button from the configured set. Closing OK behaves as OK. Closing a set that contains Cancel behaves as Cancel. A Yes/No dialog must be answered explicitly and cannot be closed into an ambiguous result. A configured timeout is displayed as a countdown and returns timeout when it expires. That expiry is the one case where the two names differ: button reads timeout while the outcome is named timed_out.action.form_dialog. Capability action.form_dialog. Permission formDialog.show. Medium risk. Windows Desktop and Linux Desktop. Fallible.0 through 86400 seconds. A form must contain from 1 through 50 components.A-Z or a-z, numbers 0-9, hyphens, or underscores. Display components have no key or output.#RRGGBB color; File picker and Folder picker return filesystem paths as text; Date and Time return their displayed ISO-shaped values; Date and time returns an ISO 8601 UTC timestamp; the remaining inputs return text.datetime variable reference; string variables are rejected even when their text resembles a date. A typed datetime is displayed in local time for Date and Time; Date and time uses the component's configured timezone. Checkbox has a boolean default.values.values is an object whose typed fields are derived from component keys, submitted is true only after Submit, and button is ok, cancel, or timeout.submitted=false, button="cancel", and an empty values object. Timeout returns the same empty values with button="timeout". Stopping the runtime is a cancellation and produces no normal outputs.submitted runs after Submit, cancelled runs after Cancel, Escape, or window close, and timed_out runs when the configured timeout expires. Those three correspond to the button values ok, cancel, and timeout. failed runs when the dialog could not be shown, such as a title that does not resolve to non-empty text, a timeout that does not resolve to a supported number, or a component whose configuration the renderer rejects. Stopping the run is a cancellation and follows no outcome at all.values output is omitted from retained run variables; non-secret sibling values can still be copied to ordinary downstream variables. This is an application window, not an operating-system secure desktop or credential vault; other software with desktop capture or input-monitoring access may still observe it.action.sound.play. Capability action.sound. Permission sound.play for package audio. A filesystem source also declares file.read for a bounded relative path or file.read.any for an unbounded path. Medium or Dangerous risk. Desktop only. Fallible.action.http. Capability action.http. Permission http.request. Medium risk. Fallible.0 through 86400 seconds with a default of 30, and user agent.Content-Type is application/json or an application/*+json media type.json, duration, or structured network error.ok covers 200 through 299. client_error covers 400 through 499, so a 404 follows client_error. server_error covers 500 through 599. unexpected_status covers every other status the server returned, which in practice means a 1xx informational response or a 3xx redirect that was not followed. There is no expected-status setting to configure; the four bands above are fixed.failed runs only when no response arrived, such as a name-resolution, connection, TLS, timeout, blocked-destination, or invalid-request error. Status codes never route through failed, so a request that reached the server and returned an error status is still a completed request with a status code, headers, and body available to later nodes.security.policy.allow_private_http_requests when an approved workflow needs them.action.webhook_response. Capability action.webhook_response. Permission webhook.response. Low risk. Fallible.100-599, content type, headers, and body.sent, status, content type, headers, body, owning trigger_id, or error.action.websocket.write. Capability action.websocket. Permission websocket.write. Medium risk. Fallible.connection_id reference.sent runs when the message reached the connection, and reports connection_id, message, and the UTF-8 bytes count. connection_closed runs when the WebSocket listener is not available or the connection no longer accepts the message, which is the normal outcome when the client disconnected earlier in the run. failed runs when the write could not be attempted at all, such as a connection reference or message that does not resolve. The canvas draws connection_closed as Closed.action.serial.write. Capability action.serial. Permission serial.write. Medium risk. Fallible.sent runs when the payload was written, and reports device_id, the native port, and the bytes count including any added line ending. device_unavailable runs when the logical device ID has no mapping in the runner configuration, so a script can react to unconfigured hardware without treating it as an error. failed runs when the device is mapped but the write itself did not succeed, including an unsupported line ending and a port that cannot be opened or written to. The canvas draws device_unavailable as Unavailable.action.file.read. Capability action.file. Permission file.read for a bounded relative path. Medium risk. Fallible.read runs when the file was read. not_found runs when the path does not exist, and reports the resolved path so a script can branch on a missing file without treating it as an error. failed runs when the path exists but the content could not be produced, which covers a directory or other non-regular file, a file larger than the runner read limit, content that is not valid UTF-8, and permission or other read errors.file.read.any permission instead of file.read.action.file.write. Capability action.file. Permission file.write.limited for a bounded relative path. High risk. Fallible.file.write.any permission instead of file.write.limited.action.file.download. Capabilities action.file and network behavior. Permission file.download. Medium risk. Fallible.file.write.any.action.file.delete. Capability action.file. Permission file.delete.limited for a bounded relative path or file.delete.any for an unbounded path. High or Dangerous risk. Fallible.deleted runs when the file was removed. not_found runs when the path does not exist, so deleting something that is already gone is a normal outcome rather than a failure. failed runs when the path exists but could not be deleted, which covers a directory or other non-regular file and permission or other removal errors.action.file.copy. Capability action.file. Permission file.copy plus path-dependent read and write permissions. Medium risk before path escalation. Fallible.file.read.any. A broad destination requires file.write.any.action.file.move. Capability action.file. Permission file.move plus path-dependent read and write permissions. Medium risk before path escalation. Fallible.file.read.any. A broad destination requires file.write.any.action.process.run. Capability action.process. Permission process.run. Dangerous risk. Fallible.1 to 86400 seconds, default 300.exited_zero runs when the process exited with code 0. exited_nonzero runs for every other exit code, so a program that ran correctly and reported a non-zero status is a normal outcome rather than a failure. Both carry the exit code and the captured output. timed_out runs when the configured timeout elapses first; the runner then terminates the process and its child group, and no exit code is produced. failed runs when the process could not be run or supervised at all, such as an executable that cannot be found or started, or captured output that exceeded the runner limit.PATH, so git works. The working directory is never searched, which stops a file placed there from being run in place of the intended program. To run a program from a specific directory, give a path such as ./tool.exe or a full path.action.process.status. Capability action.process. Permission process.query. Medium risk. Fallible.running runs when a process matched the target and not_running runs when none did. Both are normal query results, and not_running still reports running as false with a state of not_found. failed is reserved for a query that could not be performed, such as a PID target that is not a number or window-title matching outside the desktop runner.action.process.kill. Capability action.process. Permission process.kill. High risk. Fallible.killed runs when a matching process was found and terminated, and reports its process ID and name. not_found runs when no process matched the target, and reports the target that was searched for. failed runs when a process matched but could not be terminated, such as insufficient rights, and when the query itself could not be performed, such as a PID target that is not a number or window-title matching outside the desktop runner.action.application.open. Capability action.window. Permission process.run. Dangerous risk. Desktop only. Fallible.action.window.active. Capability action.window. Permission window.query. Medium risk. Windows Desktop only. Fallible.action.window.focus. Capability action.window. Permission window.focus. High risk. Windows Desktop only. Fallible.focused runs when a matching window was brought to the foreground. not_found runs when no window matched the target, and reports the target that was searched for. failed runs when a window matched but the operating system refused the foreground change, and when the action is not available on the current target runtime.action.pixel.get. Capability action.pixel. Permission screen.pixel.read. Medium risk. Windows Desktop only. Fallible.-2147483648 through 2147483647.action.clipboard.set. Capability action.clipboard. Permission clipboard.write. Medium risk. Desktop only. Fallible.action.clipboard.get. Capability action.clipboard. Permission clipboard.read. Medium risk. Desktop only. Fallible.action.keyboard. Capability action.keyboard. Permission keyboard.control. High risk. Windows Desktop only. Fallible.hotkey Script Setting. Literal mode can capture keys or use the key reference buttons. Variable mode lists only compatible settings and displays the setting name without requiring braces. Separate literal chord members with +, for example G, F1, K+L, or Ctrl+Shift+S.The input action controls what happens to every key in the configured chord.
| Input action | Behavior |
|---|---|
| Press and release | Performs a normal key press. Modifier keys are pressed first, the final key is pressed and released, then the modifiers are released. |
| Press down | Holds every configured key. A later Keyboard node can release the same keys. |
| Release | Releases only keys held by the current run. Using Release without a matching Press down is safe and does nothing. |
Held keys belong to the run that pressed them. The runner releases them automatically when that run completes, fails, or is stopped. When concurrent runs hold the same key, the physical key is released only after every owning run has released it or ended.
Hotkey and Keyboard nodes use one shared Windows key contract. The editor, exported package checks, global hotkey service, and native Keyboard action all validate the same names. The editor captures held keys and also provides a button for every canonical key name.
| Group | Supported canonical names |
|---|---|
| Modifiers | Ctrl, Alt, Shift, Windows |
| Letters and digits | A through Z, 0 through 9 |
| Function | F1 through F24 |
| Navigation and editing | Escape, Enter, Space, Tab, Backspace, Delete, Insert, Home, End, PageUp, PageDown, ArrowUp, ArrowDown, ArrowLeft, ArrowRight |
| System and lock | CapsLock, NumLock, ScrollLock, PrintScreen, Pause, ContextMenu |
| Punctuation | Semicolon, Equal, Comma, Minus, Period, Slash, Backquote, BracketLeft, Backslash, BracketRight, Quote, IntlBackslash |
| Numpad | Numpad0 through Numpad9, NumpadMultiply, NumpadAdd, NumpadSeparator, NumpadSubtract, NumpadDecimal, NumpadDivide |
| Browser | BrowserBack, BrowserForward, BrowserRefresh, BrowserStop, BrowserSearch, BrowserFavorites, BrowserHome |
| Media and volume | VolumeMute, VolumeDown, VolumeUp, MediaNext, MediaPrevious, MediaStop, MediaPlayPause |
| Application launch | LaunchMail, LaunchMedia, LaunchApp1, LaunchApp2 |
Firmware-managed keys such as Fn and Windows secure-attention input such as Ctrl+Alt+Delete cannot be captured or generated. Browser, media, and Windows-key combinations may also be reserved by the browser, Windows, or another application. Build those combinations with the key-reference buttons when the browser cannot capture them. For example, pressing Ctrl+W normally asks the browser to close the tab, so use the Ctrl and W buttons instead.
action.keyboard.type_text. Capability action.keyboard. Permission keyboard.control. High risk. Windows Desktop only. Fallible.action.mouse. Capability action.mouse. Permission mouse.control. High risk. Windows Desktop only. Fallible.| Input action | Behavior |
|---|---|
| Press and release | Performs a single or double click. |
| Press down | Holds the selected mouse button. |
| Release | Releases the selected button only when the current run holds it. |
Held mouse buttons use the same run ownership and automatic cleanup as held keyboard keys. The runner releases them when the run completes, fails, or is stopped.
action.mouse.move. Capability action.mouse. Permission mouse.control. High risk. Windows Desktop only. Fallible.action.script.run. Capability action.sub_script. Permission script.run. High risk. Fallible.action.shell. Capability supplied through process execution. Permission process.shell. Dangerous. Fallible.1 to 86400 seconds, default 300.exited_zero runs when the shell exited with code 0, exited_nonzero runs for every other exit code, timed_out runs when the configured timeout elapses first and the runner terminates the shell and its child group, and failed runs when the shell could not be started or supervised at all, or when captured output exceeded the runner limit.