https://github.com/nodetool-ai/nodetool
The open creative AI workspace
https://github.com/nodetool-ai/nodetool
agents ai anthropic automation comfyui flux gemma3 gpt-oss huggingface llamacpp llm local-first mlx ollama openai qwen-image qwen3 stable-diffusion
Last synced: 4 days ago
JSON representation
The open creative AI workspace
- Host: GitHub
- URL: https://github.com/nodetool-ai/nodetool
- Owner: nodetool-ai
- License: agpl-3.0
- Created: 2024-03-25T13:09:15.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2026-05-24T06:00:29.000Z (9 days ago)
- Last Synced: 2026-05-24T06:36:20.769Z (9 days ago)
- Topics: agents, ai, anthropic, automation, comfyui, flux, gemma3, gpt-oss, huggingface, llamacpp, llm, local-first, mlx, ollama, openai, qwen-image, qwen3, stable-diffusion
- Language: TypeScript
- Homepage: https://nodetool.ai/
- Size: 375 MB
- Stars: 359
- Watchers: 4
- Forks: 46
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Security: docs/security-hardening.md
- Agents: AGENTS.md
Awesome Lists containing this project
- awesome-stable-diffusion - nodetool - Your Creative AI Playground (πStable Diffusion / Python)
- awesome-mlx - nodetool
- awesome-ChatGPT-repositories - nodetool - β 263 / Visual Builder for AI Workflows and Agents (NLP)
README
# NodeTool
**The open creative AI workspace.**
*Every model. Your keys. Your canvas.*
[](https://github.com/nodetool-ai/nodetool/stargazers)
[](https://github.com/nodetool-ai/nodetool/releases)
[](https://github.com/nodetool-ai/nodetool/releases/latest)
[](https://discord.gg/WmQTWZRcYE)
[](LICENSE.txt)
[](https://nodetool.ai)
[](https://nodetool.ai)
[](https://nodetool.ai)
NodeTool is the open-source creative AI workspace β every major model from every major provider, called with your own keys, wired into one node-based canvas you run on your machine.
Bring your own keys to FAL, KIE, Atlas, OpenAI, Anthropic, Gemini, Replicate, ElevenLabs, HuggingFace. Pay providers directly at provider prices. Switch the moment a better model ships. Wire it all into one canvas with the editing tools you rely on β masks, inpaint, outpaint, relight, upscale, layers, compositing.

## Two ways to run it
Same code, same workflows, same nodes. Pick whichever fits how you want to work β workflows are portable between both, and there is no separate "pro" or closed-source version.
- **NodeTool Studio** β desktop app for macOS, Windows, and Linux. Runs Ollama, MLX, and GGUF models on your machine. Works offline.
- **NodeTool Cloud** β open in any browser. No install, no GPU. BYOK to every provider.
Both are AGPL-3.0, both built from this repository.
| | **NodeTool Studio** (desktop) | **NodeTool Cloud** (hosted) |
| :--- | :--- | :--- |
| **Where it runs** | Your machine | Managed servers, in any browser |
| **Install** | Desktop app + ~20GB for local models | None β sign in and start |
| **Local models** (Ollama, MLX, GGUF) | β
Yes β runs on your hardware | β Not available β cloud APIs only |
| **BYOK cloud providers** | β
All providers (keys stored on disk) | β
All providers (keys encrypted at rest) |
| **Works offline** | β
Yes, fully offline with local models | β Needs an internet connection |
| **Where your data lives** | On your disk only | Managed storage (encrypted) |
| **GPU required** | Recommended for local models | None |
| **Updates** | You install new releases | Always on the latest version |
| **Cost** | Free; pay only the providers you call | Subscription + your own API spend (BYOK) |
| **Source code** | AGPL-3.0 (this repo) | AGPL-3.0 (this repo) β self-host any time |
**Pick Studio if** you want to run open-weight models for free, work offline, keep data on your disk, or have a capable GPU / Apple Silicon machine.
**Pick Cloud if** you want zero setup, work across multiple devices, or don't want to manage local model files and GPU drivers.
## Why NodeTool
The best model for the job changes every month. NodeTool keeps up.
> Seedance is the best video model right now. It's available on FAL, Replicate, and KIE at different price points. NodeTool lets you pick the cheapest. When Veo 4 ships, you swap one node and you're on it the same day.
That's what vendor neutrality buys you:
- **Every model.** OpenAI, Anthropic, Gemini, FAL, KIE, Replicate, ElevenLabs, HuggingFace. Local with Ollama, MLX, and GGUF.
- **Your keys.** Pay providers directly at provider prices. No credit markup, no proprietary tokens.
- **Your canvas.** Workflows, files, and keys belong to you. Run on your machine or in the browser β your choice.
- **Open source.** AGPL-3.0. Self-host any time. No acquisition risk.
## What's in the box
| | |
| :--- | :--- |
| **Node-based canvas** | Drag-and-drop nodes with type-safe connections |
| **Image, video, audio, text** | Unified workflows across every modality |
| **Editing tools as nodes** | Mask, inpaint, outpaint, relight, upscale, layers, compositing |
| **Runs on your machine** | Ollama, MLX (Apple Silicon), and GGUF for local inference |
| **BYOK everywhere** | OpenAI, Anthropic, Gemini, FAL, KIE, Replicate, ElevenLabs, HuggingFace |
| **Document search** | Built-in vector store for indexing and querying your files |
| **Real-time previews** | Live output at every node as the workflow runs |
| **Custom nodes** | Extend in TypeScript or Python |
| **Deploy anywhere** | Docker, RunPod, Google Cloud Run, or self-hosted |
| **Cross-platform** | Desktop, web, CLI, and mobile |
## What people build with it
The workspace is a canvas, not a wizard. A few of the patterns we see most often:
- **Image generation and editing** β FLUX.2, Nano Banana Pro, GPT-Image 3, plus mask, inpaint, outpaint, relight, and upscale as first-class nodes.
- **Video** β Seedance, Sora 2 Pro, Veo 3.1, Wan 2.6, Hailuo 2.3, Kling 2.6. Text-to-video, image-to-video, and video-to-video pipelines.
- **Voice and audio** β Whisper for transcription, ElevenLabs and OpenAI TTS for speech, audio analysis and editing as nodes.
- **Document search** β point a workflow at a folder, embed it, query it. RAG without writing the plumbing.
- **Multi-step agents** β agents are a capability inside the workspace, not a separate product. Wire one into a graph when a step needs to plan, decide, or call tools.
- **Mini-apps** β share a workflow as an interactive web app others can run.
## Models
Pick a provider per node. Switch by changing one field.
| Type | Models |
| :--- | :--- |
| **Video** | Seedance, OpenAI Sora 2 Pro, Google Veo 3.1, xAI Grok Imagine, Alibaba Wan 2.6, MiniMax Hailuo 2.3, Kling 2.6 |
| **Image** | Flux, Black Forest Labs FLUX.2, Google Nano Banana Pro, GPT-Image 3 |
| **Audio** | OpenAI Whisper, OpenAI TTS, ElevenLabs |
| **Text** | GPT-4, Claude, Gemini, Llama, Mistral β local on your machine, or BYOK to the cloud |
Use `TextToVideo`, `ImageToVideo`, or `TextToImage` nodes and select your provider and model. Some models route through [kie.ai](https://kie.ai/), which combines providers and is often the cheapest path.
## How NodeTool compares
| | NodeTool | ComfyUI | Weavy | n8n |
| :--- | :--- | :--- | :--- | :--- |
| **Built for** | Creatives working with AI | Stable Diffusion power users | Creative teams (now part of Figma) | Business workflows |
| **Modalities** | Image, video, audio, text | Image, video | Image, video | Text |
| **Models** | Every major provider, BYOK | Stable Diffusion | Curated marketplace | API integrations |
| **Source & pricing** | AGPL-3.0, provider prices | Open source, free | Closed, credits | Fair-code, subscription |
**vs ComfyUI.** ComfyUI exposes every parameter for engineers who want them. NodeTool keeps the node-based power, gives it an interface that doesn't fight you, and covers the rest of the stack β video, audio, text, document search.
**vs Weavy.** Weavy was the closed-source canvas for creative AI. After the Figma acquisition, the roadmap belongs to someone else. NodeTool is the open alternative β same node-based canvas, your keys, your files, no acquisition risk.
**vs n8n.** n8n is for business workflows and API plumbing. NodeTool is built for creative work β models, masks, layers, video, audio, RAG.
## Get NodeTool
### NodeTool Studio (desktop)
| Platform | Get It | Requirements |
| :--- | :--- | :--- |
| **Windows** | [Download](https://nodetool.ai/studio) | NVIDIA GPU recommended, 4GB+ VRAM (local models), 20GB space |
| **macOS** | [Download](https://nodetool.ai/studio) | M1+ Apple Silicon, 16GB+ RAM (local models) |
| **Linux** | [Download](https://nodetool.ai/studio) | NVIDIA GPU recommended, 4GB+ VRAM (local models) |
[Flatpak CI Builds](https://github.com/nodetool-ai/nodetool/actions/workflows/flatpak-ci.yml) are available for Linux.
### NodeTool Cloud (browser)
Open [nodetool.ai/cloud](https://nodetool.ai/cloud) and sign in. Bring your own keys for every provider.
______________________________________________________________________
## Documentation
- **[Getting Started](https://docs.nodetool.ai/getting-started)** β Build your first workflow
- **[Node Packs](https://docs.nodetool.ai/packs)** β Available nodes and integrations
- **[Custom Nodes](https://docs.nodetool.ai/developer/custom-nodes-guide)** β Extend NodeTool
- **[Deployment](https://docs.nodetool.ai/deployment)** β Share your work
- **[API Reference](https://docs.nodetool.ai/api)** β Programmatic access
______________________________________________________________________
## CLI & Server (npm)
Run the server, execute workflows, or chat from the terminal:
```bash
# Install globally (Node.js 22.x required)
npm install -g @nodetool-ai/cli
# Start the API server (port 7777)
nodetool serve
# Interactive chat with agent mode
nodetool-chat --agent --provider anthropic --model claude-sonnet-4-6
# Run a TypeScript DSL workflow
nodetool workflows run my-workflow.ts
# One-off without global install
npx --package=@nodetool-ai/cli nodetool serve
npx --package=@nodetool-ai/cli nodetool-chat --agent
```
See the [CLI Reference](https://docs.nodetool.ai/cli) for all commands.
______________________________________________________________________
## Architecture
NodeTool is a monorepo with a TypeScript backend, React frontend, Electron desktop shell, and React Native mobile app.
```
nodetool/
βββ packages/ # Backend monorepo (28 packages)
β βββ kernel/ # Workflow graph & runner
β βββ node-sdk/ # BaseNode class & node registry
β βββ base-nodes/ # 100+ built-in node types
β βββ agents/ # Agent system with task planning & tools
β βββ runtime/ # Processing context & model providers
β βββ websocket/ # HTTP + WebSocket server (entry point)
β βββ vectorstore/ # SQLite-vec vector database
β βββ code-runners/ # Sandboxed code execution
β βββ ... # Protocol, config, auth, storage, deploy, etc.
βββ web/ # React frontend (Vite + MUI + React Flow)
βββ electron/ # Electron desktop app
βββ mobile/ # React Native mobile app (Expo)
βββ docs/ # Jekyll documentation site
```
For a detailed architecture overview, see [ARCHITECTURE.md](ARCHITECTURE.md).
______________________________________________________________________
## Development Setup
**Prerequisites:** Node.js 22.22.1, npm. Python 3.11 with conda for Python nodes (optional).
> **Node 22.22.1 is required.** Matches Electron 39's embedded Node so dev and the packaged app run on the same Node version. Use `nvm use` to activate (reads `.nvmrc`).
### Quick Start
```bash
nvm use # Activate Node 22.22.1 (reads .nvmrc)
npm install
npm run build:packages # Build all TS packages in dependency order
# Run backend (port 7777) and frontend (port 3000)
# Uses tsx --watch for the backend, so startup skips a full websocket package rebuild.
npm run dev
```
### Python Nodes (optional)
Python nodes (HuggingFace, MLX, Apple integrations) run via the `PythonStdioBridge`, which spawns a Python worker process that communicates over stdin/stdout. The bridge connects lazily on the first workflow that uses Python nodes β no separate setup is needed for the TypeScript backend.
### Electron App
```bash
npm run electron
```
The Electron app auto-detects your active Conda environment. Settings are stored in:
- **Linux/macOS**: `~/.config/nodetool/settings.yaml`
- **Windows**: `%APPDATA%\nodetool\settings.yaml`
> **Native module ABI caveat.** Electron 39 bundles its own Node.js (22.22.1) but uses a distinct `NODE_MODULE_VERSION` (140), so native modules like `better-sqlite3` must be compiled against Electron's headers β *not* system Node, even when the major matches. This is handled automatically by `@electron/rebuild`, wired into `electron/`'s `postinstall`. If you ever see a `NODE_MODULE_VERSION` mismatch, force a rebuild:
>
> ```bash
> npm --prefix electron run postinstall
> ```
>
> **Do not** use plain `npm rebuild` β it compiles against system Node's ABI, which will not match Electron's runtime.
### Mobile App
```bash
cd mobile && npm install && npm start
```
See [mobile/README.md](mobile/README.md) for full setup.
### Make Commands
| Command | Description |
| :--- | :--- |
| `npm install` | Install all dependencies |
| `npm run build` | Build all packages + web |
| `npm run dev` | Start backend (`tsx --watch`) + web dev server |
| `npm run electron` | Build and start Electron app |
| `npm run check` | Run typecheck + lint + test |
| `npm run test` | Run all tests |
______________________________________________________________________
## Testing
```bash
# Unit tests
cd electron && npm test && npm run lint
cd web && npm test && npm run lint
# Web E2E (needs backend on port 7777)
cd web && npx playwright install chromium && npm run test:e2e
# Electron E2E (requires xvfb on Linux headless)
cd electron && npm run vite:build && npx tsc
cd electron && npx playwright install chromium && npm run test:e2e
```
For detailed testing documentation, see [web/TESTING.md](web/TESTING.md).
______________________________________________________________________
## Contributing
We welcome bug reports, feature requests, code contributions, and new nodes.
Please open an issue before starting major work so we can coordinate.
### Acknowledgements
- [@mphermes](https://github.com/mphermes) β Atlas Cloud integration
## License
[AGPL-3.0](https://github.com/nodetool-ai/nodetool/blob/main/LICENSE)
## Get in Touch
- **General**: [hello@nodetool.ai](mailto:hello@nodetool.ai)
- **Team**: [matti@nodetool.ai](mailto:matti@nodetool.ai), [david@nodetool.ai](mailto:david@nodetool.ai)
[GitHub](https://github.com/nodetool-ai/nodetool) | [Discord](https://discord.gg/WmQTWZRcYE) | [Website](https://nodetool.ai)
## Star History
[](https://www.star-history.com/#nodetool-ai/nodetool&type=date&legend=top-left)