This guide covers deploying NodeTool on your own infrastructure.
Overview
Self-hosted deployment supports:
- Docker: Runs NodeTool in a container.
- SSH: Installs and runs NodeTool as a
systemduser service on a remote host. - Local: Same as SSH mode but on the local machine.
Deployment Configuration
Deployments are configured via deployment.yaml.
Docker Deployment
deployments:
my-server:
type: docker
host: 192.168.1.10
ssh:
user: ubuntu
key_path: ~/.ssh/id_rsa
container:
name: nodetool-server
port: 8000
gpu: "0"
paths:
workspace: /data/nodetool
hf_cache: /data/hf-cache
image:
name: ghcr.io/nodetool-ai/nodetool
tag: latest
SSH Deployment
deployments:
my-ssh-server:
type: ssh
host: 192.168.1.11
ssh:
user: ubuntu
key_path: ~/.ssh/id_rsa
port: 8000
service_name: nodetool-8000
paths:
workspace: /home/ubuntu/nodetool
hf_cache: /home/ubuntu/.cache/huggingface
Local Deployment
deployments:
my-local-server:
type: local
host: localhost
port: 8000
service_name: nodetool-8000
paths:
workspace: /home/me/.nodetool-workspace
hf_cache: /home/me/.cache/huggingface/hub
Apply Flow
Docker Process
- Directory Creation: Ensures
workspaceandhf_cachedirectories exist. - Image Check: Verifies the configured image exists locally/remote.
deploy applydoes not auto-pull. - Image Transfer: For remote hosts, copies image to remote runtime if needed.
- Container Management: Restarts container with new configuration.
- Health Check: Verifies HTTP endpoint.
SSH/Local Process
- Directory Creation: Creates workspace and environment directories.
- Micromamba Setup: Downloads and installs
micromambalocally in the workspace if missing. - Environment Creation: Creates a Conda environment with system dependencies (ffmpeg, etc.).
- Package Installation: Installs
nodetool-coreandnodetool-baseusinguv. - Service Management: Creates and enables a user-level
systemdservice (nodetool-<name>.service). - Health Check: Verifies HTTP endpoint.
End-to-End: Local Docker Deployment
This walkthrough matches a common local setup flow:
- Pull the Docker image.
- Add a docker deployment interactively.
- Review the generated deployment.
- Apply deployment and validate health.
- Sync workflows.
- Run a synced workflow on the deployed instance.
0. Pull the Image First
docker pull ghcr.io/nodetool-ai/nodetool:latest
1. Add Local Docker Deployment
nodetool deploy add local
Use these values (or your own):
- Deployment type:
docker - Host address:
localhost - Docker image name:
ghcr.io/nodetool-ai/nodetool - Docker image tag:
latest - Container name:
nodetool - Port:
8000 - GPU/workflows assignment: optional
- Workspace folder:
$HOME/.nodetool-workspace - HF cache folder: canonical local HF cache (auto-detected, usually
$HOME/.cache/huggingface/hub)
Path meanings:
- Workspace: stores assets and temporary runtime data.
- HF cache: stores downloaded Hugging Face artifacts/models.
2. Review Deployment Config
nodetool deploy show local
You should see:
Type: DeploymentType.DOCKERImage: ghcr.io/nodetool-ai/nodetool:latestWorkspace: $HOME/.nodetool-workspaceHF Cache: $HOME/.cache/huggingface/hub- endpoint URL at
http://localhost:8000
You can also inspect the raw config:
cat ~/.config/nodetool/deployment.yaml
3. Apply Deployment
nodetool deploy apply local
Expected successful output includes:
- directories created
- image check passed
- app container started
- health checks passing for
http://127.0.0.1:8000/health Deployment successful- secrets synced
If the first apply fails (for example due to container/port conflicts), run apply again:
nodetool deploy apply local
Then confirm runtime state:
nodetool deploy status local
docker ps --filter name=nodetool --format "table \t\t"
curl http://127.0.0.1:8000/health
4. Sync Workflows to the Deployment
List local workflows first:
nodetool workflows list
Sync one workflow by ID to the deployed instance:
nodetool deploy workflows sync local <workflow_id>
This sync command also:
- uploads referenced assets
- downloads referenced models (HuggingFace/Ollama) on the target
Verify remote workflows:
nodetool deploy workflows list local
5. Test Workflow Execution on Deployed Instance
Run a synced workflow remotely:
nodetool deploy workflows run local <workflow_id>
Optional params example:
nodetool deploy workflows run local <workflow_id> -p prompt="hello"
If a run fails, inspect logs:
nodetool deploy logs local --tail 200
Manual Troubleshooting
Docker Logs
ssh user@host "docker logs nodetool-server"
Shell Logs
ssh user@host "journalctl --user -u nodetool-server-01 -f"