Resources for building custom nodes, extending NodeTool, and integrating workflows programmatically.
Quick Start: Custom Nodes
Creating custom nodes:
from pydantic import Field
from nodetool.workflows.base_node import BaseNode
from nodetool.workflows.processing_context import ProcessingContext
class MyCustomNode(BaseNode):
"""
A simple custom node that processes text.
text, processing, custom
Use cases:
- Transform text in custom ways
- Integrate with external APIs
- Add domain-specific functionality
"""
input_text: str = Field(default="", description="Text to process")
async def process(self, context: ProcessingContext) -> str:
# Your custom logic here
return self.input_text.upper()
Save this in a Python file. NodeTool automatically discovers the node.
β Full Custom Node Tutorial β Templates, patterns, and detailed examples
Guides
Custom Node Development
- Node Implementation Quick Reference β Start here! Templates and common patterns for custom nodes
- Node Implementation Patterns β Comprehensive summary of node implementation patterns and architecture
- Node Implementation Examples β Real-world examples from the codebase
- Suspendable Nodes β Build nodes that can pause and resume workflows
Programmatic Workflows
- Python DSL Guide β Define NodeTool workflows programmatically using Python
- Gradio Conversion Guide β Convert NodeTool workflows to Gradio applications
API Integration
- API Reference β REST API endpoints and authentication
- Headless Mode β Run workflows via CLI and HTTP API
- Chat API β OpenAI-compatible chat endpoints
- Workflow API β Execute workflows programmatically
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:
- Publish as a separate package
- Contribute to the core node library
- Share workflow examples on Discord