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-ai/node-sdk";

export class UppercaseTextNode extends BaseNode {
  static readonly nodeType = "mypackage.text.Upper";
  static readonly title = "Uppercase Text";
  static readonly description = "Convert text to uppercase.";
  static readonly metadataOutputTypes = { output: "str" };

  @prop({ type: "str", default: "", title: "Input Text" })
  declare inputText: string;

  async process(): Promise<Record<string, unknown>> {
    return { output: String(this.inputText ?? "").toUpperCase() };
  }
}

Export a register(registry) function from your package and NodeTool discovers the node automatically.

-> Full Custom Nodes Guide (TypeScript) – End-to-end walkthrough: packaging, governance, streaming, testing, distribution.


Guides

Custom Node Development (TypeScript)

  • Custom Nodes GuideStart here! End-to-end guide for authoring, packaging, and distributing TypeScript node packs.
  • TypeScript DSL Guide – Type-safe workflow definitions with auto-generated factory functions.

Custom Node Reference (TypeScript)

Python Nodes

Advanced

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