Tools: Building a Lightweight Kubernetes Desktop Client GUI with Tauri and Rust

Tools: Building a Lightweight Kubernetes Desktop Client GUI with Tauri and Rust

Source: Dev.to

Why Another K8s GUI? ## The Tech Stack ## Tauri 2.0 + Rust Backend ## Next.js Frontend ## Key Features ## Learnings ## Current Status ## Try It I've been working with Kubernetes for years, and like many of you, I've tried various GUI tools to manage my clusters. They all had one thing in common: they felt heavy. Some consumed 500MB+ of RAM just sitting idle. That's more than some of my actual workloads. So I built Kubeli - an open-source Kubernetes desktop client that stays under 150MB RAM idle. The existing options fall into two categories: I wanted something in between: native performance with modern UX. Tauri was the obvious choice. Instead of bundling Chromium like Electron, it uses the system's native webview. The backend is pure Rust, which means: The UI is built with Next.js 16 (App Router), compiled to static files that Tauri serves. State management uses Zustand for global state and TanStack Query for server state. The result? A responsive UI that doesn't lag when streaming logs from noisy pods. Real-time Everything: Pod status, logs, and events update via Kubernetes watch API - no polling. Log Streaming: Tail logs with filtering, search, and export. The frontend batches updates to stay smooth even with high-volume streams. Monaco Editor: Edit YAML with syntax highlighting and validation before applying. Optional AI Integration: This was an experiment. Kubeli can connect to Claude Code CLI or OpenAI Codex CLI for log analysis and debugging assistance. It's completely optional and runs locally - no data leaves your machine unless you configure it. Rust's async ecosystem is mature now. kube-rs with Tokio handles complex K8s operations elegantly. The watch API, exec sessions, port forwarding - it all works reliably. Tauri 2.0 is production-ready. Auto-updates, deep linking, window state persistence - the plugin ecosystem covers most needs. Memory matters. Keeping idle usage under 150MB required attention to detail: lazy loading, proper cleanup of watch streams, and batched UI updates. GitHub: github.com/atilladeniz/kubeli I'd love feedback, especially from folks who've built similar tools or have opinions on the AI debugging features. Is AI-assisted K8s troubleshooting useful, or just a gimmick? What's your current K8s GUI setup? I'm curious what workflows people have optimized for. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse COMMAND_BLOCK: // Real-time pod watching with kube-rs let pods: Api<Pod> = Api::namespaced(client, &namespace); let watcher = watcher(pods, Config::default()); Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: // Real-time pod watching with kube-rs let pods: Api<Pod> = Api::namespaced(client, &namespace); let watcher = watcher(pods, Config::default()); COMMAND_BLOCK: // Real-time pod watching with kube-rs let pods: Api<Pod> = Api::namespaced(client, &namespace); let watcher = watcher(pods, Config::default()); - Web-based dashboards - Great for quick checks, but limited for daily workflows - Electron-based desktop apps - Feature-rich but resource-hungry - Direct Kubernetes API access via kube-rs - No Node.js runtime overhead - Native performance for watch streams and log tailing - macOS builds available now - Linux/Windows on the roadmap - MIT licensed