AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
k8sight Kubernetes 클러스터 탐색·운영용 네이티브 데스크톱 UI
A beautiful native desktop UI for browsing and operating your Kubernetes clusters: live dashboards, logs, shells, topology, Helm, Argo CD & a built-in Security Center, plus EKS, AKS and GKE with no CL
개발 도구JavaScript · HTMLGitHub @praveenraghav01온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
The modern Kubernetes workspace for developers and DevOps engineers.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
See your whole cluster in one beautiful window.
A native desktop app (macOS · Windows · Linux) — and a Docker image — for browsing and operating any Kubernetes cluster from your local kubeconfig.
Grab the latest macOS .dmg, Windows .exe, or Linux .AppImage/.deb from the Releases page — no build required.README 전문 보기 ↗See your whole cluster in one beautiful window.
A native desktop app (macOS · Windows · Linux), plus a Docker image, for browsing and operating any Kubernetes cluster from your local kubeconfig.
[!TIP] Grab the latest macOS
.dmg, Windows.exe, or Linux.AppImage/.debfrom the Releases page. No build required.
Demo mode: try it with no cluster
Explore
helm, so there's nothing extra to install.Stays up to date
Operate
kubectl exec -it over WebSocket).localhost, and a multi-tab bottom panel for logs/terminal/YAML.Cloud clusters, no CLI
az), and Google GKE (your existing gcloud login, browser OAuth, or a service-account key): discover clusters across accounts / subscriptions / projects and merge them into your kubeconfig. Bundled token helpers authenticate at runtime, so using imported clusters needs no aws/az/gcloud/kubelogin/gke-gcloud-auth-plugin.Security Center
Argo CD (auto-detected)
Flux CD & Flagger (auto-detected)
AI, bring your own
PATH.k8sight is a desktop UI for clusters you already have: closest in spirit to Lens and k9s, not to a management platform like Rancher. Rancher runs inside your clusters to provision and govern a whole fleet for a team; k8sight runs on your laptop, reads your kubeconfig, and needs nothing installed in-cluster.
| k8sight | Rancher | Lens | k9s | |
|---|---|---|---|---|
| Category | Native desktop UI | Multi-cluster platform (server) | Desktop UI | Terminal UI |
| Setup | Download & run | Deploy & operate in-cluster | Download, sign in with a Lens ID | Download & run |
| Runs where | Your laptop | In a cluster | Your laptop | Your terminal |
| Cluster lifecycle (provision, upgrade) | ❌ | ✅ | ❌ | ❌ |
| Centralized team RBAC & multi-tenancy | ❌ | ✅ | ❌ | ❌ |
| Built-in security scan (image CVEs, config, RBAC) | ✅ bundled Trivy | via add-ons | ❌ | ❌ |
| Cost view (OpenCost/Kubecost) | ✅ | via add-ons | ❌ | ❌ |
| Built-in AI assistant | ✅ any OpenAI-compatible model | ✅ Liz, Rancher Prime | ✅ Lens Prism | ❌ |
| MCP server for your own agents | ✅ 42 read + 12 write tools | ✅ Rancher Prime | ✅ since March 2026 | ❌ |
| GitOps views | ✅ Argo CD, Flux, Flagger | Fleet | Flux | ❌ |
| Try with no cluster (demo mode) |
AI, MCP and cloud details for Lens and Rancher are from their public docs as of October 2026: Lens MCP server, Lens licensing, Rancher Prime AI assistant, Rancher Prime MCP.
[!NOTE] Reach for Rancher to provision and govern a fleet of clusters for a team. Reach for k8sight as a fast local cockpit for clusters you already have: dashboards, logs, shell, topology, security scans and an AI assistant, with nothing to deploy. They coexist happily.
[!TIP] No cluster handy? Launch the app and click Explore the demo (or pick the demo context) to browse and operate a synthetic cluster. Every feature works, no setup needed.
[!NOTE] To use a real cluster, k8sight shells out to
kubectl(required on yourPATH) and needs a workingkubeconfig(~/.kube/config, or setKUBECONFIG). The packaged desktop app bundles its own Node runtime; building from source needs Node.js 20+ (24 recommended).
Most people just download a build. To build it yourself:
npm ci && npm ci --prefix client
npm run dist # builds the UI and packages for the current OS → release/
| OS | Artifact |
|---|---|
| macOS | k8sight-macos.dmg (Apple Silicon) |
| Windows | k8sight-windows.exe (NSIS) |
| Linux | k8sight-linux.AppImage and k8sight-linux.deb |
[!IMPORTANT] The macOS app and its
.dmgare Developer ID–signed and notarized: open the.dmg, drag k8sight to Applications, and it launches normally. Run it from Applications so it can update itself. Windows builds are unsigned, so in SmartScreen choose More info → Run anyway.
The image bundles Node, kubectl, kubelogin and Trivy, and serves the UI + API on port 3001 as the unprivileged node user. Build it from this repository (no current image is published):
docker build -t k8sight .
docker run --rm -p 127.0.0.1:8080:3001 \
-v "$HOME/.kube:/home/node/.kube:ro" \
k8sight
Open the access link from the container log (docker logs <container>): http://localhost:3001/?token=…. Use your published port, e.g. http://localhost:8080/?token=…. A new token is generated on every start.
[!WARNING] Publish to
127.0.0.1to keep the API off your network. If you expose it beyond loopback (-p 8080:3001, or behind a proxy), list the hostname inALLOWED_HOSTS; the access token still protects it, but treat it like any credential (see Security).
127.0.0.1, which inside a container points at the container itself. Add --add-host=host.docker.internal:host-gateway and set the context's server: to https://host.docker.internal:<port> with insecure-skip-tls-verify: true, or just use the desktop app for local clusters.kubectl oidc-login): the container can't open a browser, so log in on the host first (kubectl get nodes) to cache a token, then mount ~/.kube read-write (drop :ro) so kubelogin can refresh it.aws eks update-kubeconfig, az aks get-credentials, or GKE reference their own exec plugins, so those CLIs must be on PATH inside the container.npm install && npm install --prefix client
npm run dev # UI on http://localhost:3000, API on :3001
For a single-port production run: npm run build && npm start, then open the access link the server prints (http://127.0.0.1:3001/?token=…). In dev, open the same link on port 3000.
The app is also an MCP server exposing the same capabilities as the UI: 42 read tools (contexts, resources, logs, events, topology, metrics, Helm, CRDs, costs, Security Center findings, Argo CD, Flux and Flagger) plus 12 write tools (switch_context, apply_yaml, delete_resource, scale_workload, rollout_restart, sync_argocd_app, refresh_argocd_app, reconcile_flux_resource, suspend_flux_resource, restart_canary, suspend_canary, set_canary_skip_analysis). Tools carry MCP readOnlyHint / destructiveHint annotations so clients can ask before changes.
[!NOTE]
- Agents need the MCP access token from Preferences → MCP Server (copy the ready-made command there). It only allows MCP tools: no shells, no local commands, and no changes unless write access is on. Rotate it to disconnect every configured agent.
- Write tools are off by default. Enable them in Preferences → MCP Server → Write access, or start with
MCP_ALLOW_WRITE=1. Reconnect the agent to pick up the new tool set.- Secret values are redacted for agents (
<redacted>), including Secret-looking Helm values. Raw values can be allowed in Preferences → MCP Server → Secret values.
HTTP (recommended): while the app runs, agents connect to http://localhost:3001/mcp with the token:
claude mcp add --transport http k8sight http://localhost:3001/mcp \
--header "Authorization: Bearer <token from Preferences → MCP Server>"
Stdio: for agents launched by command; the app must be running. The bridge reads the token from the app's settings automatically (or K8SIGHT_MCP_TOKEN):
{
"mcpServers": {
"k8sight": {
"command": "node",
"args": ["/absolute/path/to/k8sight/mcp-stdio.js"],
"env": { "MCP_API_BASE": "http://127.0.0.1:3001", "MCP_ALLOW_WRITE": "0" }
}
}
}
All tools act on the currently selected context. Run the bridge standalone with npm run mcp.
| Variable | Purpose | Default |
|---|---|---|
KUBECONFIG | Path to kubeconfig | ~/.kube/config |
LLM_BASE_URL | OpenAI-compatible endpoint for the AI assistant | none |
LLM_API_KEY | API key for the assistant (also settable in Preferences → AI) | none |
LLM_MODEL | Model the assistant requests | none |
MCP_ALLOW_WRITE | Enable MCP write/destructive tools | 0 (read-only) |
MCP_API_BASE | API base URL the stdio MCP bridge targets | http://127.0.0.1:3001 |
HOST | Interface the backend binds | 127.0.0.1 (Docker sets 0.0.0.0) |
ALLOWED_ORIGINS | Extra browser origins allowed to call /api and /mcp (comma-separated) | none |
ALLOWED_HOSTS | Extra Host names accepted besides localhost / 127.0.0.1 (e.g. a reverse proxy) | none |
K8SIGHT_API_TOKEN | Fixed UI access token instead of a random one per start (development only) | random |
K8SIGHT_MCP_TOKEN | MCP token for the stdio bridge (otherwise read from the app's settings) | from settings |
K8SIGHT_PORT | Backend port | 3001 |
[!IMPORTANT] The API and the
/ws/execshell carry your kubeconfig's full read/write access, so every request must carry an access token. Other local processes, other users on the machine and web pages don't have it.
/api, /mcp and /ws/exec request needs a token. The desktop app creates a new one each launch and hands it only to its own window; browser/Docker runs print it in the startup link.localhost / 127.0.0.1 (plus ALLOWED_HOSTS) are accepted, which blocks DNS-rebinding attacks from web pages.127.0.0.1; set HOST=0.0.0.0 only to expose it deliberately (the Docker image does this so its published port works).https:// endpoints (plain http:// only for a model on localhost). Before anything is sent to the model or to MCP agents, k8sight strips escape codes and invisible characters, masks credentials and personal data (private keys, tokens, cloud keys, passwords in URLs and settings, emails, card numbers, secret-looking env values), and marks cluster text as untrusted data so it can't pass as instructions. Masking is pattern-based, so treat logs as potentially sensitive anyway.~/.aws/credentials and k8sight's own config are written 0600 (folders 0700), and older files are tightened on startup.SHA256SUMS.txt.server.js): Express + @kubernetes/client-node; REST API, a /ws/exec WebSocket for shells, short-TTL caches, and kubectl/helm fallbacks. In production it also serves the built UI.client/): React + Vite; same-origin /api + /ws/exec, xterm.js terminal, ⌘K palette, token-driven theming.aws-eks.js, azure-aks.js, gke.js and the *-token.js helpers): CLI-free EKS/AKS/GKE discovery, kubeconfig merge, and native runtime auth via bundled token helpers.trivy-scan.js): reads Trivy Operator reports or runs a bundled Trivy binary.electron/): Electron shell that runs the backend as a utility process and self-updates via electron-updater. Released macOS builds are Developer ID–signed and notarized by the Build & Release workflow (after-pack.cjs ad-hoc-signs local dev builds); all three OSes are published on a v*.*.* tag.~/.kube/config exists or set KUBECONFIG.helm; the Docker image and source builds use helm from your PATH (run npm run fetch:helm to get the bundled one locally). Either way it needs to reach the cluster. Chart search works without it.| ✅ |
| ❌ |
| ❌ |
| ❌ |
| One-click cloud onboarding (no CLI) | ✅ EKS, AKS, GKE | ✅ | AWS & Azure | ❌ |
| No account or sign-in | ✅ | ❌ | ❌ | ✅ |
| Price | Free, open source | Free, open source; Prime is paid | Free tier; Pro for larger orgs | Free, open source |