node-roadmap.md 4.3 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

51 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

Built. set-fields, switch, filter, merge, split-out, aggregate, sort-limit-dedupe, template, json, datetime and stop-and-error all live in nodes/core/, with a verification case each under tests/nodes/.

Two platform changes came with them: a node may declare dynamicOutputs to grow an output per config entry, which is how switch works, and const inputs is now parsed, which is how merge gets two input handles.

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

Tier 1 is built, so the OpenAI-compatible chat node is what is left of the original shortlist - one node covering OpenAI, OpenRouter, vLLM, LM Studio and llama.cpp, built like ollama-chat.

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.