The open creative AI workspace.
Every model. Your keys. Your canvas.
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.
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.
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.
| 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 |
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.
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, which combines providers and is often the cheapest path.
| 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.
| Platform | Get It | Requirements |
|---|---|---|
| Windows | Download | NVIDIA GPU recommended, 4GB+ VRAM (local models), 20GB space |
| macOS | Download | M1+ Apple Silicon, 16GB+ RAM (local models) |
| Linux | Download | NVIDIA GPU recommended, 4GB+ VRAM (local models) |
Flatpak CI Builds are available for Linux.
Open nodetool.ai/cloud and sign in. Bring your own keys for every provider.
- Getting Started — Build your first workflow
- Node Packs — Available nodes and integrations
- Custom Nodes — Extend NodeTool
- Deployment — Share your work
- API Reference — Programmatic access
Run the server, execute workflows, or chat from the terminal:
# 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 --agentSee the CLI Reference for all commands.
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.
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 useto activate (reads.nvmrc).
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 devPython 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.
npm run electronThe 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 likebetter-sqlite3must be compiled against Electron's headers — not system Node, even when the major matches. This is handled automatically by@electron/rebuild, wired intoelectron/'spostinstall. If you ever see aNODE_MODULE_VERSIONmismatch, force a rebuild:npm --prefix electron run postinstallDo not use plain
npm rebuild— it compiles against system Node's ABI, which will not match Electron's runtime.
cd mobile && npm install && npm startSee mobile/README.md for full setup.
| 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 |
# 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:e2eFor detailed testing documentation, see web/TESTING.md.
We welcome bug reports, feature requests, code contributions, and new nodes.
Please open an issue before starting major work so we can coordinate.
- @mphermes — Atlas Cloud integration
- General: hello@nodetool.ai
- Team: matti@nodetool.ai, david@nodetool.ai
