[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82056":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":40,"readmeContent":41,"aiSummary":42,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":43,"discoverSource":44},82056,"klustr","SametKUM\u002Fklustr","SametKUM","A native Kubernetes desktop client — nothing in your cluster. Helm, Argo CD, Flux CD, Gateway API & cert-manager built in. MIT-licensed.","https:\u002F\u002Fsametkum.github.io\u002Fklustr\u002F",null,"TypeScript",65,4,1,0,2,36,41,13,2.1,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36,37,38,39],"argocd","cloud-native","cncf","desktop-app","devops","gateway-api","golang","helm","k8s","k9s","kubernetes","kubernetes-dashboard","lens-alternative","wails","2026-06-12 02:04:22","\u003Cp align=\"center\">\n  \u003Cimg src=\"build\u002Fappicon.png\" width=\"128\" alt=\"Klustr\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Klustr\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  A native Kubernetes desktop client that installs \u003Cstrong>nothing\u003C\u002Fstrong> in your cluster.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Freleases\u002Flatest\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FSametKUM\u002Fklustr?style=flat-square&cacheSeconds=300&v=2\" alt=\"Latest release\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Factions\u002Fworkflows\u002Frelease.yml\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002FSametKUM\u002Fklustr\u002Frelease.yml?style=flat-square&cacheSeconds=300&label=build\" alt=\"Build\">\n  \u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FSametKUM\u002Fklustr?style=flat-square&cacheSeconds=300\" alt=\"License\">\n  \u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20%7C%20Windows%20%7C%20Linux-blue?style=flat-square&cacheSeconds=300\" alt=\"Platforms\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>macOS\u003C\u002Fstrong>&nbsp;·&nbsp;\u003Ccode>brew tap sametkum\u002Fklustr && brew install klustr\u003C\u002Fcode>\u003Cbr>\n  \u003Cstrong>Arch \u002F CachyOS \u002F Manjaro\u003C\u002Fstrong>&nbsp;·&nbsp;\u003Ccode>paru -S klustr-bin\u003C\u002Fcode>\u003Cbr>\n  \u003Cstrong>Debian \u002F Ubuntu\u003C\u002Fstrong>&nbsp;·&nbsp;\u003Ccode>sudo apt install .\u002Fklustr_*_amd64.deb\u003C\u002Fcode> &nbsp;(\u003Ca href=\"#debian--ubuntu-deb\">download first\u003C\u002Fa>)\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"#install\">other install options\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Fblob\u002Fmain\u002Fdocs\u002Fhero.mp4\">\n    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FSametKUM\u002Fklustr\u002Fmain\u002Fdocs\u002Fhero.gif\" width=\"900\" alt=\"Klustr — live demo\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Csub>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Fblob\u002Fmain\u002Fdocs\u002Fhero.mp4\">▶ Watch the full-quality video\u003C\u002Fa>\u003C\u002Fsub>\n\u003C\u002Fp>\n\n## What is Klustr?\n\nKlustr is a cross-platform Kubernetes desktop client built with [Wails](https:\u002F\u002Fwails.io\u002F) (Go + native webview) and React. It uses your existing `~\u002F.kube\u002Fconfig` and speaks the standard Kubernetes API directly — **nothing is deployed in the cluster**. Drop the binary in, point at any context, and you're looking at a live view of everything you have permission to see — built-in resources, full **RBAC** with a **subject → effective-permissions** review, **Custom Resources (CRDs)**, **Helm releases**, **Argo CD Applications**, **Flux CD reconcilers**, and **Gateway API** routes included. No extra logins, no `argocd`, `flux` or `helm` CLI required — only your kubeconfig.\n\n## Features\n\n- 🔌 **Pure client.** No CRDs, no in-cluster components — works with whatever your kubeconfig already grants.\n- 🔁 **Live everywhere.** `client-go` informers, never polled.\n- 🌐 **Multi-context aggregation.** View 2+ clusters in one table, per-context status pings with latency in the status bar.\n- 👥 **Context groups & tags.** Named multi-context groups; color tags on the top bar so you always know which environment you're touching.\n- 📋 **Every built-in resource.** Workloads, networking, storage, config, admission, autoscaling, and the full **RBAC** set under a dedicated Access Control sidebar group.\n- 🔎 **Access Review.** Subject → effective-permissions **GVR × verb matrix** with the binding → role chain behind every ✓, wildcards and `cluster-admin` flagged. Live, no `--as` impersonation, no extra API traffic.\n- 🧩 **Custom Resources (CRDs).** Auto-discovered on connect, grouped by API group, watch-backed.\n- ⎈ **Helm.** First-class Helm v3: install \u002F upgrade \u002F rollback \u002F uninstall with a **dry-run preview** before any change, plus repo management and chart search.\n- 🚢 **Argo CD.** Sync, Refresh, Rollback and cascade-aware Delete through the Kubernetes API — no `argocd-server`, no `argocd` CLI, no Argo login.\n- 🚀 **Flux CD.** Kustomization · HelmRelease · GitRepository · HelmRepository · OCIRepository · Bucket · Provider · Alert · Receiver — each with Reconcile + Suspend\u002FResume buttons that hit the standard Flux annotations, no `flux` CLI.\n- 🌉 **Gateway API.** Typed informers; **listener table**, per-rule **match → backend → weight** matrix and `RouteParentStatus` so a misrouted parent or `RefNotPermitted` backend is one click away. Vendor-neutral.\n- 📜 **Logs.** Stern-style multi-pod streaming with per-pod ANSI colors, follow, save and regex.\n- 🖥️ **In-app exec.** SPDY shell into any container.\n- 🔧 **YAML edit.** Monaco editor with a server-side dry-run diff before apply.\n- 🚀 **Scale, restart, pause\u002Fresume.** Replica controls, one-click rolling restart, inline pause\u002Fresume, HPA min\u002Fmax editable inline.\n- ⏪ **Rollout history & rollback.** Side-by-side template diff and one-click revert on Deployments \u002F StatefulSets \u002F DaemonSets.\n- 🔄 **Port-forwarding.** Suggested local ports, persistent header indicator, click-to-open in browser.\n- 🗺️ **Cluster overviews.** CPU \u002F memory \u002F pod donuts, workloads health, recent warnings — single-cluster or aggregated.\n- 🧭 **Cross-resource navigation.** Drill from workload to pod to node and back.\n- 🎨 **Themes & shortcuts.** Command palette (`⌘P`), namespace search (`⌘N`), keyboard cheatsheet (`?`).\n\n## Screenshots\n\nEvery shot is captured live from real clusters. Each is rendered in a different theme so the pack doubles as a tour of Klustr's themes — see [`docs\u002Fscreenshots\u002F`](docs\u002Fscreenshots) for the full set including light variants.\n\n|   |   |\n|---|---|\n| ![Cluster overview — Nord](docs\u002Fscreenshots\u002F03-cluster-overview-nord.png) | ![Pods aggregated — Dracula](docs\u002Fscreenshots\u002F02-pods-aggregated-dracula.png) |\n| **Cluster overview** — CPU \u002F memory \u002F pod donuts, warnings feed | **Aggregated pods** — two clusters in one table, status pill variety |\n| ![Argo CD Applications — One Dark](docs\u002Fscreenshots\u002F05-argo-sync-one-dark.png) | ![Helm Upgrade — Tokyo Night Day](docs\u002Fscreenshots\u002F04-helm-upgrade-tokyo-night-day.png) |\n| **Argo CD** — Sync \u002F Health pills, per-row Sync & Refresh without `argocd` CLI | **Helm Upgrade** — values editor, Wait \u002F Atomic options, dry-run preview |\n| ![HTTPRoutes — Monokai](docs\u002Fscreenshots\u002F06-gateway-httproutes-monokai.png) | ![Logs streaming — Default Dark](docs\u002Fscreenshots\u002F07-logs-audit-stream-default-dark.png) |\n| **Gateway API** — HTTPRoutes with parents, hostnames, accepted pills | **Aggregated logs** — multi-pod stream, per-pod ANSI colors, level highlighting |\n| ![Pod detail — Tokyo Night](docs\u002Fscreenshots\u002F08-pod-detail-tokyo-night.png) | ![YAML edit — Monokai Light](docs\u002Fscreenshots\u002F09-yaml-diff-monokai-light.png) |\n| **Pod detail** — env, containers, conditions, clickable owner & node | **YAML edit** — Monaco editor with diff before apply |\n\n## Install\n\n### macOS (Apple Silicon)\n\nThe release build is signed with a Developer ID Application certificate and notarized by Apple, so Gatekeeper opens it directly — even offline.\n\n#### Homebrew\n\n```bash\nbrew tap sametkum\u002Fklustr\nbrew install klustr\n```\n\nAfter the initial `brew tap`, future updates are just `brew upgrade klustr` (or `brew upgrade` for everything), and `brew search klustr` \u002F `brew info klustr` start finding it.\n\n#### Manual\n\nDownload the latest darwin-arm64 tarball from the [Releases](https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Freleases\u002Flatest) page, then:\n\n```bash\ntar -xzf klustr-*-darwin-arm64.tar.gz\nmv klustr.app \u002FApplications\u002F\nopen \u002FApplications\u002Fklustr.app\n```\n\n### Linux (amd64)\n\nThe Linux binary links against `webkit2gtk-4.1` + `gtk-3`. Ubuntu 24.04+, Fedora 39+, Arch and most other modern distros ship those runtime libraries by default; on Ubuntu 22.04 install `libwebkit2gtk-4.1-0 libgtk-3-0` first.\n\n#### Arch \u002F CachyOS \u002F Manjaro \u002F Endeavour (AUR)\n\n```bash\nparu -S klustr-bin\n# or\nyay -S klustr-bin\n```\n\nThe [`klustr-bin`](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fklustr-bin) PKGBUILD uses the prebuilt release tarball, so install completes in seconds. `paru -Syu` keeps it up to date.\n\n#### Debian \u002F Ubuntu (.deb)\n\nThe .deb pulls in the runtime dependencies automatically and registers a `klustr` desktop entry.\n\n```bash\nVERSION=\"$(curl -fsSL https:\u002F\u002Fapi.github.com\u002Frepos\u002FSametKUM\u002Fklustr\u002Freleases\u002Flatest | grep -oP '\"tag_name\":\\s*\"\\K[^\"]+')\"\nDEB=\"klustr_${VERSION#v}_amd64.deb\"\ncurl -LO \"https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Freleases\u002Fdownload\u002F${VERSION}\u002F${DEB}\"\nsudo apt install \".\u002F${DEB}\"\n```\n\n#### Manual (tarball)\n\nDownload the latest `linux-amd64` tarball from the [Releases](https:\u002F\u002Fgithub.com\u002FSametKUM\u002Fklustr\u002Freleases\u002Flatest) page, then:\n\n```bash\ntar -xzf klustr-*-linux-amd64.tar.gz\ninstall -Dm755 klustr ~\u002F.local\u002Fbin\u002Fklustr\nklustr\n```\n\n### Windows\n\nWindows builds will be attached to releases once they've been validated. Until then, please build from source — see [Build from source](#build-from-source).\n\n## Quick start\n\n1. Klustr reads `~\u002F.kube\u002Fconfig` at launch.\n2. On first run, pick a context — or check **two or more** to view them aggregated as one cluster. Save a recurring selection as a named **group** for one-click reconnect, and toggle **Auto-connect** on a card to pin it as the default.\n3. Browse via the sidebar, click any row for a detail dialog, or `⌘P` to fuzzy-search resources by name. The header's **Disconnect** button drops you back to the picker at any time.\n\n## Build from source\n\n```bash\nmise install     # installs Go, Node, Wails CLI pinned in .mise.toml\nwails dev        # hot-reload dev session\n\n# or a production build for your host platform\nwails build -trimpath -clean\n```\n\n## Architecture (short version)\n\n| Layer | Choice |\n|---|---|\n| Desktop | Wails v2 (Go + native webview) |\n| Backend | Go 1.26 + `client-go` (typed clientset + dynamic) + `sigs.k8s.io\u002Fgateway-api` |\n| Frontend | React 19 · TypeScript · Vite |\n| UI | Tailwind CSS · shadcn\u002Fui |\n| State | Zustand (real-time) · TanStack Query (mutations only) |\n| Tables | TanStack Table |\n| Live data | `client-go` informers → Wails events → Zustand → React |\n\nFull design notes, conventions and the \"add a new resource kind\" recipe live in [`CLAUDE.md`](CLAUDE.md).\n\n## Roadmap\n\n- [x] Every built-in resource kind (incl. full RBAC: ServiceAccounts, Roles, RoleBindings, ClusterRoles, ClusterRoleBindings)\n- [x] **Access Review** — subject → effective-permission matrix with binding trace, implicit-group expansion (`system:serviceaccounts:*`, `system:authenticated`), wildcard \u002F cluster-admin detection, live across every active context\n- [x] Logs, exec, port-forwarding\n- [x] YAML edit \u002F apply with diff, scale, restart, deployment pause\u002Fresume, HPA inline edit\n- [x] Rollout history with revision diff and one-click rollback (Deployments \u002F StatefulSets \u002F DaemonSets)\n- [x] Cross-resource navigation (related pods, owner\u002Fnode links, back stack)\n- [x] Custom Resource Definitions (CRDs)\n- [x] Helm support — release browser, dry-run diff, install \u002F upgrade \u002F rollback \u002F uninstall, repo management\n- [x] Gateway API — Gateways, HTTPRoutes, GRPCRoutes, GatewayClasses, ReferenceGrants (typed informers, status pills, listener \u002F rule \u002F RouteParentStatus tables)\n- [x] Multi-cluster aggregated mode + named context groups + per-context health ping\n- [x] Notarized macOS build — signed with a Developer ID Application certificate and notarized by Apple\n- [x] Linux (amd64) release distribution\n- [ ] Windows release distribution (after per-platform testing)\n\n## Contributing\n\nBug reports and focused pull requests are welcome.\n\n- Read [`CLAUDE.md`](CLAUDE.md) first — it's the architecture + conventions contract.\n- Use [Conventional Commits](https:\u002F\u002Fwww.conventionalcommits.org\u002F) (`feat:`, `fix:`, `refactor:` …) and prefer small, logically scoped commits.\n- Before opening a PR, run:\n  ```bash\n  go test klustr\u002Finternal\u002F... && go vet .\u002F...\n  cd frontend && npm test && npm run lint && npm run typecheck\n  ```\n- New user-facing features should include a screenshot or short clip in the PR description.\n\nFull guide: [`CONTRIBUTING.md`](CONTRIBUTING.md). Bug reports go through the [`bug_report.yml`](.github\u002FISSUE_TEMPLATE\u002Fbug_report.yml) issue template so the version \u002F OS \u002F cluster details we need actually land in the report.\n\n## License\n\n[MIT](LICENSE) © Samet Kum\n\n## Acknowledgments\n\nBuilt on the shoulders of: [Wails](https:\u002F\u002Fwails.io\u002F), [client-go](https:\u002F\u002Fgithub.com\u002Fkubernetes\u002Fclient-go), [React](https:\u002F\u002Freact.dev\u002F), [shadcn\u002Fui](https:\u002F\u002Fui.shadcn.com\u002F), [Tailwind CSS](https:\u002F\u002Ftailwindcss.com\u002F), [TanStack Table \u002F Query](https:\u002F\u002Ftanstack.com\u002F), [xterm.js](https:\u002F\u002Fxtermjs.org\u002F), [Monaco Editor](https:\u002F\u002Fmicrosoft.github.io\u002Fmonaco-editor\u002F), [Zustand](https:\u002F\u002Fzustand-demo.pmnd.rs\u002F), [Vite](https:\u002F\u002Fvitejs.dev\u002F), [mise](https:\u002F\u002Fmise.jdx.dev\u002F).\n","Klustr 是一个原生的 Kubernetes 桌面客户端，它不向集群中安装任何组件。该项目利用 Wails（Go 语言与本地 Web 视图）和 React 构建而成，支持直接通过标准 Kubernetes API 进行交互，并集成了 Helm、Argo CD、Flux CD 和 Gateway API 等功能。其核心特性包括纯客户端模式运行、实时数据更新、多上下文聚合显示以及丰富的内置资源管理能力。适用于需要在桌面环境中便捷地管理和监控 Kubernetes 集群状态的 DevOps 工程师或开发者，尤其适合那些希望避免在集群内部署额外组件的用户。","2026-06-11 04:07:37","CREATED_QUERY"]