Skip to main content

A modular framework for building composable AI workflows

Project description

NodeCraft

A modular framework for building composable AI workflows with a "building blocks" design philosophy.

Overview

NodeCraft provides a pluggable Node and Scenario system that allows you to discover, create, and compose reusable AI workflow components. Think of it as building blocks for AI-powered code analysis and automation.

Key Features

  • Node-based architecture with automatic discovery
  • YAML-based scenario definition
  • Template-based Node and Scenario creation
  • Configuration file system for team collaboration
  • Dynamic CLI generation from scenarios
  • Built-in scenarios for common tasks

Installation

# Install from PyPI
pip install NodeCraft

# Set up API key
export ANTHROPIC_API_KEY="your-api-key-here"

After installation, the nodecraft command is available globally.

Quick Start

Discover Available Nodes and Scenarios

# List all available nodes
nodecraft nodes list

# Show node details
nodecraft nodes show @common/get_files

# List all scenarios
nodecraft scenarios list

# Show scenario details
nodecraft scenarios show simple_rag

Create New Nodes and Scenarios

# Create a function-based node
nodecraft nodes create --name my_analyzer

# Create a class-based node with retry logic
nodecraft nodes create --name api_caller --type class

# Create a scenario from template
nodecraft scenarios create --name my_workflow --template rag-query

# View available templates
nodecraft scenarios create --name test --template custom --dry-run

Register Custom Nodes and Scenarios

# Register a single node
nodecraft nodes register ./custom_nodes/my_node.py

# Register all nodes in a directory
nodecraft nodes register ./custom_nodes/ --recursive

# Register a scenario
nodecraft scenarios register ./my_scenario.yaml

Configuration

Create a .nodecraft.yaml file in your project root:

nodes:
  search_paths:
    - ".nodecraft/nodes"
    - "./custom_nodes"

scenarios:
  search_paths:
    - ".nodecraft/scenarios"
    - "./workflows"

llm:
  default_model: "claude-3-haiku-20240307"
  api_timeout: 60

Configuration priority: CLI arguments > Project config > Global config > Defaults

Global config location: ~/.nodecraft/config.yaml

Built-in Scenarios

OutcomeForge includes several built-in scenarios for common tasks:

  • snapshot: Create snapshots of your codebase with AI analysis
  • adapt: Analyze open-source repositories and generate adaptation plans
  • regression: AI-powered quality gate based on test metrics
  • arch-drift: Detect architecture violations and structural drift
  • rag: Lightweight RAG for codebase Q&A
  • code-review: Security, quality, and performance code review
  • wiki: Generate structured wiki documentation from codebases

Example usage:

# Create a snapshot
nodecraft snapshot --patterns "**/*.py"

# Ask questions about your codebase
nodecraft rag --patterns "**/*.py" --query "How does this work?"

# Review code changes
nodecraft code-review --git-diff

# Generate wiki documentation
nodecraft wiki --local-dir ./my-project

CLI Usage

Node Management

# List nodes
nodecraft nodes list [--namespace <namespace>]

# Show node details
nodecraft nodes show <node_id>

# Create new node from template
nodecraft nodes create --name <name> [--type function|class]

# Register custom node
nodecraft nodes register <path> [--recursive]

Scenario Management

# List scenarios
nodecraft scenarios list

# Show scenario details
nodecraft scenarios show <scenario_id>

# Create new scenario from template
nodecraft scenarios create --name <name> --template <template>

# Register custom scenario
nodecraft scenarios register <path> [--recursive]

# Run a scenario
nodecraft <scenario_id> [OPTIONS]

Available scenario templates:

  • rag-query: RAG-based codebase Q&A
  • file-process: File collection and processing
  • analyze-report: Code analysis with report generation
  • gate-check: Quality gate enforcement
  • snapshot-restore: Version control and rollback
  • custom: Blank template for custom workflows

Tutorial System

# Get started tutorial
nodecraft tutorial

# Node creation tutorial
nodecraft tutorial nodes

# Scenario tutorial
nodecraft tutorial scenarios

Architecture

Node System

Nodes are the smallest units of work. Each node has three phases:

  1. prep: Validate inputs and prepare parameters
  2. exec: Execute the main operation
  3. post: Process results and update context

Nodes are discovered automatically from:

  • Framework built-in nodes (nodes/common/)
  • Global user nodes (~/.nodecraft/nodes/)
  • Project nodes (.nodecraft/nodes/)
  • Configured search paths

Scenario System

Scenarios are workflows composed of nodes. They can be defined in:

  1. Python (programmatic):
from engine import flow
from nodes.common import get_files_node, call_llm_node

def my_scenario(config):
    f = flow()
    f.add(get_files_node(), name="get_files")
    f.add(call_llm_node(), name="analyze")
    return f
  1. YAML (declarative):
scenario:
  id: my_scenario
  name: My Scenario
  description: Custom workflow

parameters:
  patterns:
    type: list
    default: ["**/*.py"]

steps:
  - node: "@common/get_files"
    name: get_files
    params:
      patterns: "{{params.patterns}}"

  - node: "@common/call_llm"
    name: analyze

Context Flow

Data flows through the scenario via a shared context dictionary. Each node:

  • Reads data from context using input_keys
  • Writes results to context using output_keys
  • Can access parameters via {{params.name}} syntax in YAML

Development

Project Structure

nodecraft/
├── core/                    # Core framework
│   ├── registry.py         # Node discovery and registration
│   ├── scenario_registry.py # Scenario management
│   ├── template_generator.py # Template generation
│   └── config.py           # Configuration management
├── nodes/
│   └── common/             # Built-in nodes
├── scenarios/              # Built-in scenarios
├── templates/              # Node and scenario templates
│   ├── nodes/
│   └── scenarios/
└── cli.py                  # CLI entry point

Running Tests

# Run all tests
pytest tests/

# Run specific test file
pytest tests/test_template_creation.py -v

Requirements

  • Python 3.7+
  • anthropic (Claude API)
  • openai (OpenAI API)
  • click (CLI framework)
  • pyyaml (YAML parsing)
  • gitpython (Git operations)
  • jinja2 (Template rendering)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nodecraft-0.1.6.tar.gz (123.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nodecraft-0.1.6-py3-none-any.whl (102.2 kB view details)

Uploaded Python 3

File details

Details for the file nodecraft-0.1.6.tar.gz.

File metadata

  • Download URL: nodecraft-0.1.6.tar.gz
  • Upload date:
  • Size: 123.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for nodecraft-0.1.6.tar.gz
Algorithm Hash digest
SHA256 6db5b5d750eb7431549d6f87b954b9437ef0218da55851e32b50b44bbc0785c6
MD5 f1db057cc671b507ef9b83467ddf0f6c
BLAKE2b-256 a5a643a3564ed7fe92231205b848355f86a4119206e6bada65a308d4e6c2d82e

See more details on using hashes here.

File details

Details for the file nodecraft-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: nodecraft-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 102.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for nodecraft-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4f5e6eb3eed2a98070950aa839fd7264a12b76ac08007286637c79898aca942e
MD5 1cdfe57922d5ad75c1e7573e8575c829
BLAKE2b-256 f3caa562fdc742c9aad975ec94cf135214bf98b7280f918ff64de1029d78ca25

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page