A ComfyUI-inspired visual interface for Kubernetes - design, deploy, and manage your cluster with drag-and-drop simplicity.
[Screenshot: Main Canvas - Coming Soon]
k8n (Kubernetes Node) is a visual IDE that transforms Kubernetes management into an intuitive, node-based workflow. Instead of writing YAML files, you drag resources onto a canvas, connect them visually, and deploy with a single click.
Think ComfyUI for Kubernetes - where your infrastructure is a visual graph you can see, edit, and understand at a glance.
- Drag & Drop Interface: Add Deployments, Services, ConfigMaps, and more from a toolbox
- Smart Connections: Visual edges show relationships between resources
- Auto-Layout: Automatically arranges resources for optimal visibility
- Real-Time Status: See resource health with color-coded indicators (Running, Pending, Failed)
[Screenshot: Canvas with nodes - Coming Soon]
- Multi-Context Support: Connect to any kubectl context
- Live Import: Load existing cluster resources onto the canvas
- One-Click Deploy: Apply changes directly to your cluster
- Namespace Filtering: Focus on specific namespaces
[Screenshot: Cluster connection - Coming Soon]
- Inline Editing: Double-click node names to rename
- Property Panels: Edit resource specs without touching YAML
- Type-Safe Connections: Only compatible resources can connect (Service β Deployment)
- Connection Hints: Hover over handles to see what they accept
[Screenshot: Node editing - Coming Soon]
- Chart Search: Browse and search Helm charts
- Drag & Deploy: Add Helm releases as visual nodes
- Values Editing: Configure chart values in the UI
[Screenshot: Helm dashboard - Coming Soon]
- Save & Load: Persist workflows to database
- Templates: Start with example workflows (Nginx, Redis, etc.)
- Export/Import: Share workflows as JSON
- Version History: Undo/redo with Ctrl+Z
[Screenshot: Workflow manager - Coming Soon]
Ctrl+S- Save workflowCtrl+R- Refresh from clusterCtrl+Z- UndoDelete- Remove selected node?- Show keyboard shortcuts
- Typed Connections: ComfyUI-style color-coded connection types
- π΅ Blue: Network connections (Service β Deployment)
- π‘ Yellow: Configuration (ConfigMap β Deployment)
- π’ Green: Routing (Ingress β Service)
- Connection Validation: Prevents invalid resource relationships
- Status Indicators: Real-time resource health monitoring
- Namespace Awareness: Visual grouping by namespace
[Screenshot: Connection types - Coming Soon]
New to k8n? Check out the Quick Start Guide for a 5-minute tutorial!
- Node.js 18+ and npm
- Go 1.21+
- Docker and Docker Compose
- kubectl configured with at least one context
Linux/Mac:
git clone https://github.com/yourusername/k8n.git
cd k8n
./install.shWindows:
git clone https://github.com/yourusername/k8n.git
cd k8n
install.batThe install script will:
- Check all prerequisites
- Create environment files
- Start the database
- Install dependencies
- Clone the repository
git clone https://github.com/yourusername/k8n.git
cd k8n- Start the database
docker-compose up -d- Start the backend
cd apps/api
go run main.goBackend runs on http://localhost:8080
- Start the frontend
cd apps/web
npm install
npm run devFrontend runs on http://localhost:3000
- Open your browser
open http://localhost:3000For convenience, use the start script:
./start.sh # Starts everything in the background
./stop.sh # Stops all services- Connect to Cluster: Select your kubectl context from the dropdown
- Choose a Workflow:
- New Workflow: Start with an empty canvas
- Example Workflow: Try the Nginx starter template
- Import from Cluster: Load your existing resources
- Design: Drag resources from the toolbox, connect them visually
- Deploy: Click "Apply" to deploy to your cluster
[Screenshot: Getting started flow - Coming Soon]
-
Add a Deployment
- Drag "Deployment" from the toolbox
- Double-click the name to rename it to "web-app"
- Click to expand and set:
- Image:
nginx:latest - Replicas:
3
- Image:
-
Add a Service
- Drag "Service" from the toolbox
- Rename to "web-service"
- Set Port:
80
-
Connect Them
- Drag from the Service's green output handle
- Connect to the Deployment's green input handle
-
Deploy
- Click the "Apply" button
- Watch the status indicators turn green
-
Verify
kubectl get all -n default- Open Workflow Manager (top-right button)
- Click "Import from Cluster"
- Your resources appear on the canvas
- Edit and re-apply as needed
- Auto-save: Press
Ctrl+Sanytime - Workflow Manager: Access saved workflows from the manager
- Export: Download as JSON for sharing
k8n/
βββ apps/
β βββ api/ # Go backend
β β βββ main.go # API server
β β βββ internal/
β β βββ handlers/ # HTTP handlers
β β βββ k8s/ # Kubernetes client
β βββ web/ # Next.js frontend
β βββ app/ # Pages (canvas, connect, deployed)
β βββ components/ # React components
β βββ lib/ # Utilities (compiler, layout)
β βββ store/ # Zustand state management
βββ docker-compose.yml # PostgreSQL setup
βββ init-db.sql # Database schema
Frontend
- Next.js 14 (React)
- React Flow (Canvas)
- Zustand (State Management)
- Tailwind CSS (Styling)
Backend
- Go 1.21+
- Gin (HTTP Framework)
- client-go (Kubernetes SDK)
- Helm SDK
Database
- PostgreSQL 15
Create .env in the root directory:
# Database
DATABASE_URL=postgres://k8n:k8npassword@localhost:5432/k8n_db?sslmode=disable
# API
API_PORT=8080
# Frontend
NEXT_PUBLIC_API_URL=http://localhost:8080k8n uses your local kubectl configuration:
- Default:
~/.kube/config - Supports all kubectl contexts
- Uses the same authentication as kubectl
- Verify kubectl is configured:
kubectl config get-contexts- Ensure backend is running:
curl http://localhost:8080/health- Check backend logs for errors
- Click the refresh button (or press
Ctrl+R) - Check namespace filter (top toolbar)
- Verify you have resources in the cluster:
kubectl get all -n default- Check Go version:
go version(need 1.21+) - Verify database is running:
docker ps - Check kubeconfig:
kubectl cluster-info
- Verify backend is on port 8080
- Check
NEXT_PUBLIC_API_URLin.env - Look for CORS errors in browser console
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Pulkit Chauhan
- Keshav Sharma
- Denish Goyal
- Md. Shaad
- Inspired by ComfyUI
- Built with React Flow
- Powered by Kubernetes
- Features Guide - Comprehensive feature documentation
- API Reference - REST API documentation
- Contributing Guide - How to contribute
- Graph Schema - JSON schema for workflows
- OpenAPI Spec - API specification
Made with β€οΈ for the Kubernetes community