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

Provider & Model Guides

  • Provider GuidesAdd models & nodes to any provider. Per-provider runbooks (OpenAI, Anthropic, Gemini, xAI, FAL, Replicate, KIE, Together, AtlasCloud, Topaz, MiniMax, Reve, ElevenLabs, HuggingFace, Ollama, local inference, OpenAI-compatible) with exact files, commands, and how past PRs did it. Written for coding agents and contributors.

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


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