This is the click-by-click path for trying every main Blacknode feature. Start with the no-key steps first, then add NVIDIA NIM, MCP, or Docker when the local workflow is working.
| Tool | Version | Why |
|---|---|---|
| Python | 3.11+ | Runs the workflow runtime, CLI, editor backend, and MCP server. |
| Node.js | 20.19+ or 22.12+ | Runs the visual editor. |
| npm | Ships with Node.js | Installs editor dependencies. |
| Docker | Optional | Runs the Compose stack and local NIM containers. |
| NVIDIA API key | Optional | Runs hosted NVIDIA NIM model calls. |
Open a terminal in the Blacknode repository.
Windows:
cd path\to\BlacknodemacOS/Linux:
cd path/to/BlacknodeRun this once. It installs the Python package, the blacknode command, and MCP
support.
Windows:
pip install -e ".[mcp]"
cd editor-server
pip install -r requirements.txt
cd ..\editor
npm install
cd ..macOS/Linux:
pip install -e ".[mcp]"
cd editor-server
pip install -r requirements.txt
cd ../editor
npm install
cd ..What this does:
pip install -e ".[mcp]"creates theblacknodeterminal command frompyproject.toml.editor-serverdependencies run the local backend on port7777.editordependencies run the browser UI on port3000.
Run:
blacknode doctorExpected result:
- Green
[OK]means that part is ready. - Red
[NOT OK]means install or fix that required part. - Yellow
[WARN] Editor server: not runningis normal before starting the editor. - The final line should say
Required checks passed.
Run:
blacknode demoExpected result:
Blacknode demo OK
Result: Hello World
Now validate, run, and export the same workflow:
Windows:
blacknode validate templates\text-pipeline.json
blacknode run templates\text-pipeline.json
blacknode export-python templates\text-pipeline.json --output workflow.py
blacknode import-python workflow.py --output imported.workflow.json
python workflow.pymacOS/Linux:
blacknode validate templates/text-pipeline.json
blacknode run templates/text-pipeline.json
blacknode export-python templates/text-pipeline.json --output workflow.py
blacknode import-python workflow.py --output imported.workflow.json
python workflow.pyExpected result:
validatereturns"ok": true.runreturns a JSON result with"value": "Hello World".import-pythonrecreates workflow JSON from the exported Python file.python workflow.pyprintsHello World.
Windows:
start.batmacOS/Linux:
chmod +x start.sh
./start.shExpected result:
- Backend starts at
http://127.0.0.1:7777. - Editor starts at
http://localhost:3000. - Browser opens automatically when possible.
- If an old Blacknode editor is already on port
3000, the launcher restarts it and keeps the same URL.
If the browser does not open, open this manually:
http://localhost:3000
In the browser:
- Look at the left sidebar.
- Click the Templates tab.
- Click Text Pipeline.
- Click the Output node on the canvas.
- In the right Properties panel, click Cook.
Expected result:
- The Output node shows
Hello World. - A small live cook status appears while the graph runs.
- The run is saved in the Runs tab.
In the editor:
- Click Clear in the top bar.
- Right-click the empty canvas.
- Search for
Text. - Click Text or press Enter.
- Click the new Text node and set
valuetoHello. - Add a second Text node and set
valuetoWorld. - Add a Concat node.
- Add an Output node.
- Drag from the first Text
valuehandle to Concata. - Drag from the second Text
valuehandle to Concatb. - Drag from Concat
valueto Outputvalue. - Click Organize in the top bar.
- Click Cook on the Output node.
Expected result:
- The graph lays out cleanly.
- The Output node shows
Hello World. - The connection handles stay color-coded by type.
Useful edit controls:
- Press Ctrl+Z to undo.
- Select a line and press Delete or Backspace to remove it.
- Double-click a line to remove it immediately.
- Hold Alt while dragging a node to clone it.
- Press Ctrl+C and Ctrl+V to copy and paste selected nodes.
In the left sidebar:
- Click the Workflows tab.
- Type a name such as
Hello World Test. - Click Save.
- Click the saved workflow row to reopen it in a tab.
- Right-click the saved workflow row to see Insert, Rename, Duplicate, and Delete.
Expected result:
- Saved workflows appear in
workflows/*.json. - Clicking a workflow opens it as a tab.
- Insert drops a saved graph into the current canvas.
File import:
- Drag a Blacknode
.jsonworkflow onto the canvas to open it in a new tab. - Drag a Blacknode-generated
.pyexport, including LangGraph, onto the canvas to restore it as a visual workflow.
After any cook:
- Click the Runs tab in the left sidebar.
- Click the newest run row.
- Look at status, duration, node count, model calls, and tool calls.
- Use the replay controls to step or play through the execution.
- Click Open workflow when a run has a saved workflow snapshot.
Expected result:
- The canvas highlights nodes as replay moves through events.
- Model calls and tool calls are counted.
- Successful runs show the returned value.
- Error runs show the error event and traceback.
Run records are written to:
editor-server/runs/
In the editor:
- Add a Model node from the AI category or load an LLM template.
- Pick a model from the dropdown.
- Paste the provider API key into the key field.
- Click the eye button to verify the key.
- Press Enter or click away to save.
Provider keys:
| Provider | Key |
|---|---|
| NVIDIA NIM | NVIDIA_API_KEY from https://build.nvidia.com |
| OpenAI | OPENAI_API_KEY from https://platform.openai.com/api-keys |
| Anthropic | ANTHROPIC_API_KEY from https://console.anthropic.com |
Expected result:
- The key is saved in browser local storage for that provider.
- The editor sends the key to the local backend for model calls.
- The workflow result appears on the cooked node.
These templates prove the NVIDIA workflow surface before you call a hosted model.
Windows:
blacknode run templates\nvidia-ai-mission-control.json
blacknode run templates\nvidia-video-intelligence-mission-control.json
blacknode run templates\nvidia-local-nim-launch.jsonmacOS/Linux:
blacknode run templates/nvidia-ai-mission-control.json
blacknode run templates/nvidia-video-intelligence-mission-control.json
blacknode run templates/nvidia-local-nim-launch.jsonExpected result:
- NVIDIA AI Mission Control returns a workflow plan and local readiness information.
- NVIDIA Video Intelligence Mission Control returns a video workflow plan for folder input, Cosmos/VLM understanding, NeMo Retriever indexing, NIM/Nemotron QA, deployment routing, and final report output.
- NVIDIA Local NIM Launch returns a Docker command and endpoint path.
In the editor:
- Open Templates.
- Click NVIDIA Video Intelligence Mission Control or NVIDIA AI Mission Control.
- Click Cook on the Output node.
- Open Runs and inspect the recorded execution.
Set a key in the editor Model node, or set it in the terminal before starting the backend.
Windows:
$env:NVIDIA_API_KEY="your-key"
start.batmacOS/Linux:
export NVIDIA_API_KEY="your-key"
./start.shIn the editor:
- Open Templates.
- Click NVIDIA NIM or NVIDIA NIM MCP Demo.
- Click the Model node and confirm the NVIDIA model.
- Click Cook on the Output node.
- Open Runs and check model-call timing.
- Open NVIDIA NIM Benchmark when you want repeated calls and latency metrics.
Expected result:
- The graph routes through NVIDIA NIM.
- The Output node shows the model response.
- The Runs panel records model-call events.
- The benchmark template returns text, latency, and metrics for the endpoint.
Use this when you want the local NVIDIA NIM story.
In the editor:
- Open Templates.
- Click NVIDIA Local NIM Launch.
- Click Cook on the Output node.
- Copy the Docker command from the result.
- Run that command in a separate terminal when you are ready to start the NIM container.
- Use the shown endpoint in
NIMHealthCheck,NIMAgent, orNIMBenchmark. - Open NVIDIA NIM Benchmark and set the endpoint to the local NIM URL when you want local latency metrics.
Expected result:
- Blacknode gives the command and endpoint wiring.
- The local endpoint can be checked before model calls are routed to it.
Install MCP support first:
pip install -e ".[mcp]"Start the MCP server:
blacknode mcpAdd this to an MCP client config:
{
"mcpServers": {
"blacknode": {
"command": "blacknode",
"args": ["mcp"]
}
}
}Restart the MCP client, then ask:
Using the blacknode MCP tools, list the available node types, show the schema
for Text, Concat, and Output, then create a workflow that concatenates "Hello"
and " World", validates it, runs it, and exports it as Python.
Expected result:
- The agent lists node types.
- The agent creates a typed workflow.
- Validation passes.
- Running the workflow returns
Hello World. - Export returns runnable Python.
Start Blacknode MCP over HTTP:
blacknode mcp --transport streamable-http --host 127.0.0.1 --port 9901 --path /mcpEndpoint:
http://127.0.0.1:9901/mcp
Use that endpoint in MCP clients that support streamable HTTP.
Expected result:
- The same Blacknode tool surface is available over HTTP.
- AI-Q, NeMo Agent Toolkit, or another MCP client can use Blacknode as the visual workflow editor.
Use this for the self-hosted demo path.
Windows:
.\docker-up.ps1macOS/Linux:
docker compose up --buildOpen:
http://127.0.0.1:3000
Services:
| Service | Port | Purpose |
|---|---|---|
editor |
3000 |
Browser editor. |
editor-server |
7777 |
Backend, workflow store, run store, cook API. |
blacknode-mcp |
9901 |
Streamable HTTP MCP server at /mcp. |
To add NVIDIA credentials:
Windows:
Copy-Item .env.example .envmacOS/Linux:
cp .env.example .envEdit .env, set NVIDIA_API_KEY, then run:
.\docker-up.ps1In the editor:
- Click the Script tab in the left sidebar.
- Paste this code:
from blacknode.node import node
@node(inputs=["text:Text", "n:Int"], outputs=["result:Text"])
def FirstNWords(ctx: dict) -> dict:
words = ctx.get("text", "").split()
n = int(ctx.get("n", 10))
return {"result": " ".join(words[:n])}- Click Run or press Ctrl+Enter to register it immediately.
- Set a file name and click Save to keep it in
custom-nodes/. - Open the node palette and find the new node in its category.
- Add it to the canvas and cook it like any other node.
Expected result:
- The custom node appears without restarting the server.
- Saved custom nodes auto-load on the next Blacknode start.
- Its typed inputs and outputs can connect to compatible handles.
In the editor:
- Open Templates.
- Click Python Tool Agent.
- Inspect PythonFn, ToolBox, and AgentLoop.
- Click Cook on the Output node.
For a no-model tool test:
- Open Templates.
- Click Subnet Tool Call.
- Click Cook on the Output node.
Expected result:
- PythonFn exposes Python code as a callable tool.
- ToolBox collects one or more tools.
- ToolCall tests a tool directly with a dictionary of arguments.
- SubnetAsTool turns a visual subgraph into a callable tool.
Before sharing a workflow:
Windows:
blacknode validate workflows\your-workflow.json
blacknode export-python workflows\your-workflow.json --output exported_workflow.py
python exported_workflow.pymacOS/Linux:
blacknode validate workflows/your-workflow.json
blacknode export-python workflows/your-workflow.json --output exported_workflow.py
python exported_workflow.pyExpected result:
- Validation passes.
- Exported Python runs.
- The workflow JSON can be copied, committed, or promoted into
templates/.
Run:
pip install -e ".[mcp]"Then close and reopen the terminal. The command is created by the package entry point:
blacknode = "blacknode.cli:main"
Run the launcher again:
start.bator:
./start.shThe launcher restarts an old Blacknode editor on port 3000. If another app is
using the port, close that app or start it on a different port.
Start the backend manually:
cd editor-server
python server.pyThen refresh:
http://localhost:3000
Check that the matching key is saved in the Model node or set in the environment:
NVIDIA_API_KEY
OPENAI_API_KEY
ANTHROPIC_API_KEY
Use this as the demo checklist:
| Feature | Where to try it |
|---|---|
| Local environment check | blacknode doctor |
| No-key workflow run | blacknode demo |
| Visual graph editing | Editor canvas |
| Templates | Templates tab |
| Save/reopen workflows | Workflows tab |
| Run replay | Runs tab |
| Python export | blacknode export-python |
| API keys and provider routing | Model node |
| NVIDIA NIM workflows | NVIDIA templates |
| NVIDIA video mission control | NVIDIA Video Intelligence Mission Control template |
| Local NIM command generation | NVIDIA Local NIM Launch template |
| Agent-controlled workflow building | blacknode mcp |
| AI-Q / NeMo MCP HTTP path | blacknode mcp --transport streamable-http ... |
| Docker deployment | .\docker-up.ps1 on Windows, docker compose up --build elsewhere |
| Custom nodes | Script tab |
| Tool workflows | Python Tool Agent and Subnet Tool templates |