Install NimbleTools Runtime on your Kubernetes cluster in minutes using our automated installer or manual Helm setup.
Prerequisites
Before installing NimbleTools Runtime, ensure you have:
Kubernetes Cluster k3d, minikube, or any Kubernetes 1.24+
Helm 3.0+ Package manager for Kubernetes
kubectl Kubernetes command-line tool
ntcli (optional) NimbleTools CLI for easier management
Quick Installation
The fastest way to get started is using our automated installer script:
curl -sSL https://raw.githubusercontent.com/NimbleBrainInc/nimbletools-core/refs/heads/main/install.sh | bash
This script will:
Check for required dependencies (helm, k3d, kubectl)
Create a local k3d cluster (if needed)
Install the NimbleTools operator
Deploy the REST API
Configure the service registry
The entire installation process takes approximately 2-3 minutes.
Manual Installation
For production deployments or custom configurations, follow these steps:
Step 1: Create Kubernetes Cluster (Local)
If you don’t have a Kubernetes cluster, create one locally with k3d:
# Install k3d
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
# Create cluster
k3d cluster create nimbletools \
--api-port 6550 \
--servers 1 \
--agents 3 \
--port "8080:80@loadbalancer"
# Verify cluster
kubectl cluster-info
Step 2: Add Helm Repository
# Add NimbleTools Helm repository
helm repo add nimbletools https://nimblebraininc.github.io/nimbletools-core
# Update repo
helm repo update
# Create namespace
kubectl create namespace nimbletools-system
# Install operator
helm install nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
--set image.tag=latest \
--wait
# Install REST API
helm install nimbletools-api nimbletools/nimbletools-api \
--namespace nimbletools-system \
--set ingress.enabled= true \
--wait
Step 5: Verify Installation
# Check operator status
kubectl get pods -n nimbletools-system
# Check CRDs
kubectl get crd mcpservices.nimbletools.ai
# Check API service
kubectl get svc -n nimbletools-system
Expected output:
NAME READY STATUS RESTARTS AGE
nimbletools-operator-xxx 1/1 Running 0 2m
nimbletools-api-xxx 1/1 Running 0 1m
Production Installation
For production environments, consider these additional configurations:
High Availability
Deploy multiple replicas of the operator and API:
helm install nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
--set replicaCount= 3 \
--set resources.requests.memory="512Mi" \
--set resources.requests.cpu="500m" \
--wait
Persistent Storage
Configure persistent volumes for the service registry:
helm install nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
--set persistence.enabled= true \
--set persistence.size=20Gi \
--set persistence.storageClass=standard \
--wait
TLS/SSL Configuration
Enable TLS for secure communications:
helm install nimbletools-api nimbletools/nimbletools-api \
--namespace nimbletools-system \
--set ingress.enabled= true \
--set ingress.tls.enabled= true \
--set ingress.tls.secretName=nimbletools-tls \
--set ingress.hosts[0].host=api.nimbletools.example.com \
--wait
Custom Values File
Create a values.yaml
for complex configurations:
# values.yaml
replicaCount : 3
image :
repository : ghcr.io/nimblebraininc/nimbletools-operator
tag : v1.0.0
pullPolicy : IfNotPresent
resources :
requests :
memory : "512Mi"
cpu : "500m"
limits :
memory : "1Gi"
cpu : "1000m"
ingress :
enabled : true
className : nginx
annotations :
cert-manager.io/cluster-issuer : letsencrypt-prod
hosts :
- host : api.nimbletools.example.com
paths :
- path : /
pathType : Prefix
tls :
- secretName : nimbletools-tls
hosts :
- api.nimbletools.example.com
persistence :
enabled : true
size : 20Gi
storageClass : standard
monitoring :
enabled : true
prometheus :
enabled : true
grafana :
enabled : true
Install with custom values:
helm install nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
-f values.yaml \
--wait
Cloud Provider Installation
AWS EKS
GCP GKE
Azure AKS
# Create EKS cluster
eksctl create cluster \
--name nimbletools \
--region us-west-2 \
--nodegroup-name standard-workers \
--node-type t3.medium \
--nodes 3
# Install NimbleTools
helm install nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
--create-namespace \
--set cloud.provider=aws \
--wait
Installing ntcli
The NimbleTools CLI simplifies interaction with the runtime:
# macOS/Linux
curl -sSL https://install.nimbletools.ai/cli | bash
# Or with npm
npm install -g @nimbletools/ntcli
# Verify installation
ntcli version
Configure ntcli to use your runtime:
# Point to local runtime
ntcli config set endpoint http://localhost:8080
# Or production runtime
ntcli config set endpoint https://api.nimbletools.example.com
# Verify connection
ntcli health
Troubleshooting
Pods stuck in Pending state
Cause : Insufficient cluster resourcesSolution :# Check node resources
kubectl describe nodes
# Increase cluster size (k3d)
k3d cluster delete nimbletools
k3d cluster create nimbletools --agents 5
Cause : Operator not installed correctlySolution :# Reinstall operator
helm uninstall nimbletools-operator -n nimbletools-system
helm install nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
--wait
# Verify CRDs
kubectl get crd | grep nimbletools
Cause : Ingress not configured or port not forwardedSolution :# Port forward API service
kubectl port-forward -n nimbletools-system \
svc/nimbletools-api 8080:80
# Access at http://localhost:8080
Cause : RBAC not configured correctlySolution :# Check service account
kubectl get serviceaccount -n nimbletools-system
# Check role bindings
kubectl get rolebinding,clusterrolebinding -n nimbletools-system
# Reinstall with proper RBAC
helm upgrade nimbletools-operator nimbletools/nimbletools-operator \
--namespace nimbletools-system \
--set rbac.create= true \
--wait
Next Steps