Resources for building custom nodes, extending NodeTool, and integrating workflows programmatically.


Quick Start: Custom Nodes

Creating custom nodes in TypeScript:

import { BaseNode, prop } from "@nodetool/node-sdk";

export class MyCustomNode extends BaseNode {
  static readonly nodeType = "mypackage.text.Upper";
  static readonly title = "Uppercase Text";
  static readonly description =
    "A simple custom node that converts text to uppercase.\n" +
    "    text, processing, custom";

  static readonly metadataOutputTypes = {
    output: "str",
  };

  @prop({ type: "str", default: "", title: "Input Text", description: "Text to process" })
  declare input_text: any;

  async process(inputs: Record<string, unknown>): Promise<Record<string, unknown>> {
    const text = String(inputs.input_text ?? this.input_text ?? "");
    return { output: text.toUpperCase() };
  }
}

Register this class in your package’s index file and NodeTool discovers the node automatically.

-> Full Custom Node Tutorial – Templates, patterns, and detailed examples


Guides

Custom Node Development

Programmatic Workflows

API Integration


Documentation Development

  • Docs README – How to build and serve the documentation site locally
  • Theme Guide – Notes on the custom docs theme

Contributing

Contribute to NodeTool on GitHub.

Share Custom Nodes

Options:

  1. Publish as a separate package
  2. Contribute to the core node library
  3. Share workflow examples on Discord