node-roadmap.md 5.2 KB

Nodes Worth Building

A shortlist of nodes this platform does not have yet, ordered by how much each would change day-to-day use rather than by how interesting it is to write.

Everything here is a JavaScript file in nodes/ unless marked needs C++. The runner already exposes http, storage (including the file store), credentials, crypto, fs, process.exec, imap, smtp, mysql, postgresql and utils - see nodes.md for the full API.

What exists today

40 node definitions across: triggers (click, get/post/put, imap, schedule with cron and overlap control, error), flow control (if-condition, loop, wait), data (rss-reader, the six storage nodes), email (four imap nodes plus smtp-send), AI (ollama-chat, comfyui-prompt), integration (telegram-send, nextcloud-talk), media (image, via ImageMagick), OCR (seven nodes), database (mysql, postgresql), security (crypto), http (http-request) and developer (code).

Tier 1 - data shaping and flow control

The gap felt on every workflow. Anything non-trivial currently becomes a Code node, which is why 35photo2anime contains five of them.

Node What it does Notes
Set / Edit Fields Build an output object from expressions, keeping or dropping the rest The single biggest win. Replaces most Code nodes
Switch Branch several ways on one value if-condition only does true/false. Multiple outputs are already supported by the engine
Filter Drop items that do not match Complements Loop; today this is an IF with a dead end
Merge Join two branches: append, combine by key, or wait for both The engine already merges inputs by targetInput
Split Out / Aggregate Array field to items, and back again Loop iterates but cannot reshape
Sort / Limit / Dedupe Ordering, top-N, unique by key Small, and constantly needed
Template Render text from a template Email bodies, chat messages. utils.interpolate does the work
JSON Parse, stringify, extract by path Failures are readable now that JSON.parse is wrapped per script context
Date & Time Parse, format, add and subtract, timezones Endless small Code nodes today
Stop and Error Fail deliberately with a message Pairs with the existing error-trigger

Tier 2 - triggers

Node Notes
Respond to Webhook Needs C++. webhook_controller fires and forgets, so there is no way to return a computed body. Without it the GET/POST/PUT triggers cannot back a real API
Database Change Poll a collection for new or changed documents. Pure JS over storage.query plus a stored cursor
File Watch Poll a directory through fs.stat. Pure JS when paired with a schedule
Queue / Manual Approval Large. Needs resumable executions; the engine currently runs a workflow to completion in one pass

Cron and interval scheduling are already covered by schedule-trigger, including its overlap policy.

Tier 3 - integrations

All pure JavaScript over http and credentials, in the same shape as telegram-send.

  • Nextcloud Files (WebDAV) - upload, download, list, share. Note that http.request silently turns any method outside its list into GET (src/runner/engine/script_engine.cpp, performHttpRequest), so PROPFIND, MKCOL and MOVE need a small engine fix first. Worth doing regardless.
  • ntfy / Gotify - self-hosted push, trivial
  • Discord / Slack / Matrix - webhook POST nodes, trivial
  • Home Assistant - REST plus a long-lived token
  • Paperless-ngx - pairs directly with the OCR nodes
  • Immich / PhotoPrism - pairs with the image pipeline
  • S3 / MinIO - needs SigV4 signing, which crypto.hmac can carry. Medium
  • SFTP / FTP - needs C++, though libcurl already speaks both
  • Redis, MongoDB - needs C++, a client each

Tier 4 - AI

  • OpenAI-compatible Chat - one node covers OpenAI, OpenRouter, vLLM, LM Studio and llama.cpp. The most reach for the least work, built like ollama-chat
  • Embeddings + Vector Search - store vectors in the database and do cosine search in JS, turning the database into a small RAG store
  • Speech to Text - Whisper over HTTP
  • A1111 / Forge - the same shape as comfyui-prompt, for people not running ComfyUI
  • ComfyUI Upload Image - comfyui-prompt submits graphs but cannot push an input image to /upload/image, so image-to-image is out of reach

Tier 5 - operations

  • Execute Sub-workflow - needs C++. Call another workflow and use its result. The main thing standing between this and reusable building blocks
  • Execute Command - wraps process.exec with arguments, a timeout and captured output
  • Sticky Note - canvas annotation, WebUI only

Where to start

Set / Edit Fields, Switch, and the OpenAI-compatible chat node. Those three would remove the most Code nodes from workflows that already exist.

Two entries are ranked below their worth, purely because they need engine work rather than a JavaScript file: Respond to Webhook and Execute Sub-workflow. For the platform to feel finished rather than merely well-stocked, those matter more than any ten integrations.