{"id":39506584,"url":"https://github.com/atilladeniz/kubeli","last_synced_at":"2026-04-02T19:06:23.375Z","repository":{"id":333123135,"uuid":"1136293178","full_name":"atilladeniz/Kubeli","owner":"atilladeniz","description":"A modern, native Kubernetes management desktop app for macOS \u0026 Windows. Multi-cluster support, real-time monitoring, AI assistant, terminal access, and more.","archived":false,"fork":false,"pushed_at":"2026-02-18T20:55:25.000Z","size":5748,"stargazers_count":230,"open_issues_count":4,"forks_count":19,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-18T23:36:20.653Z","etag":null,"topics":["cloud-native","devops","k8s","kubectl","kubernetes","kubernetes-dashboard","kubernetes-monitoring","kubernetes-ui","pods"],"latest_commit_sha":null,"homepage":"https://kubeli.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atilladeniz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-17T12:27:49.000Z","updated_at":"2026-02-18T20:55:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"96eab22a-5d98-4520-96a9-3695279f9eff","html_url":"https://github.com/atilladeniz/Kubeli","commit_stats":null,"previous_names":["atilladeniz/kubeli"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/atilladeniz/Kubeli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atilladeniz%2FKubeli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atilladeniz%2FKubeli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atilladeniz%2FKubeli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atilladeniz%2FKubeli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atilladeniz","download_url":"https://codeload.github.com/atilladeniz/Kubeli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atilladeniz%2FKubeli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29806142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T22:43:48.403Z","status":"ssl_error","status_checked_at":"2026-02-24T22:43:18.536Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","devops","k8s","kubectl","kubernetes","kubernetes-dashboard","kubernetes-monitoring","kubernetes-ui","pods"],"created_at":"2026-01-18T05:56:43.450Z","updated_at":"2026-03-17T23:09:59.831Z","avatar_url":"https://github.com/atilladeniz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\".assets/preview.png\" alt=\"Kubeli - The K8S viewer you deserve\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/atilladeniz/Kubeli/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/atilladeniz/Kubeli\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/atilladeniz/Kubeli\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://cyclonedx.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/SBOM-CycloneDX-6db33f\" alt=\"SBOM\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-blue\" alt=\"Platform\"\u003e\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/downloads/atilladeniz/Kubeli/total\" alt=\"Downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://deepwiki.com/atilladeniz/Kubeli\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Kubeli\n\nA modern, beautiful Kubernetes management desktop application with real-time monitoring, terminal access, and a polished user experience.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/macOS-Download%20.dmg-0078D4?style=for-the-badge\u0026logo=apple\u0026logoColor=white\" alt=\"Download for macOS\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Windows-Download%20.exe-0078D4?style=for-the-badge\u0026logo=windows\u0026logoColor=white\" alt=\"Download for Windows\"\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://github.com/atilladeniz/Kubeli/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Linux-Download%20.AppImage-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black\" alt=\"Download for Linux\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/macOS-Notarized%20%26%20Signed-success?logo=apple\u0026logoColor=white\" alt=\"macOS Notarized\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/arch-Apple%20Silicon%20(arm64)-lightgrey?logo=apple\" alt=\"Apple Silicon\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/arch-x64-lightgrey?logo=windows\" alt=\"x64\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/arch-x64-lightgrey?logo=linux\u0026logoColor=white\" alt=\"Linux x64\"\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Multi-Cluster Support** - Connect to multiple clusters, auto-detect provider type (Minikube, EKS, GKE, AKS)\n- **Real-Time Updates** - WebSocket-based pod watching with efficient Kubernetes watch API\n- **Resource Browser** - View and manage Pods, Deployments, Services, ConfigMaps, Secrets, Nodes, and more\n- **Pod Logs** - Stream logs in real-time with filtering, search, and export\n- **Terminal Access** - Interactive shell access to running containers via XTerm.js\n- **Port Forwarding** - Forward ports from pods/services to localhost with status tracking\n- **Metrics Dashboard** - CPU and memory usage visualization (requires metrics-server)\n- **YAML Editor** - Full Monaco editor integration for viewing and editing resources\n- **AI Assistant** - Integrated AI support with Claude Code CLI and OpenAI Codex CLI\n- **MCP Server** - Model Context Protocol server for IDE integration (VS Code, Cursor, Claude Code)\n- **Helm Releases** - View and manage Helm deployments\n- **Proxy Support** - HTTP/HTTPS/SOCKS5 proxy configuration for corporate environments\n- **Internationalization** - English and German language support\n- **Dark/Light Mode** - Theme support with vibrancy effects\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|------------|\n| Frontend | Vite, React 19, TypeScript, Tailwind CSS 4 |\n| Desktop | Tauri 2.9 (Rust) |\n| K8s Client | kube-rs with k8s-openapi v1.35 |\n| State | Zustand |\n| UI Components | Radix UI, Lucide Icons |\n| Editor | Monaco Editor |\n| Terminal | XTerm.js |\n| Charts | uPlot |\n\n## Installation\n\n### Build from Source\n\n**Prerequisites:**\n- Node.js 18+\n- Rust 1.70+\n- npm (default) or pnpm\n\n```bash\n# Clone the repository\ngit clone https://github.com/atilladeniz/kubeli.git\ncd kubeli\n\n# Install dependencies\nmake install\n\n# Run in development mode\nmake dev\n\n# Build for production (macOS)\nmake build\n\n# Build for Windows (cross-compile from macOS)\nmake install-windows-build-deps  # One-time setup\nmake build-windows\n\n# Build both platforms\nmake build-all\n```\n\n## Development\n\n```bash\n# Start Tauri + Vite dev environment\nmake dev\n\n# Start Vite only (no Tauri)\nmake web-dev\n\n# Run linting\nmake lint\n\n# Format code\nmake format\n\n# Type check\nmake check\n```\n\n### Debug Bundle vs Dev Mode\n\n- `make dev` runs the live Tauri dev server with hot reload (uses the dev URL).\n- `make screenshot-build` creates a **bundled debug app** (`Kubeli.app`) used for deep-link screenshot automation. This is not the same as dev mode.\n\nFor automated screenshots (deep links are debug-only):\n\n```bash\n# Build bundled debug app for screenshots\nmake screenshot-build\n\n# Capture all screenshots\nmake screenshots\n```\n\nYou can override the target context:\n\n```bash\nSCREENSHOT_CONTEXT=\"minikube (dev)\" make screenshots\n```\n\n## Testing\n\n```bash\n# Frontend unit tests\nnpm run test\n\n# Backend unit tests\ncd src-tauri \u0026\u0026 cargo test\n\n# E2E smoke tests (static export + mocked IPC)\nnpm run test:e2e\n```\n\n`npm run test:e2e` loads environment defaults from `config/e2e.env` and injects a mocked Google Fonts response from `config/font-mocks.cjs`.\n\n## Local Testing Lab\n\nFor testing Kubeli with simulated environments (OpenShift, EKS/GKE/AKS contexts, auth errors, scale testing), see the [Local Testing Lab documentation](.dev/README.md). This allows you to test environment detection and error handling without cloud provider access.\n\n```bash\n# Quick examples\nmake minikube-setup-openshift    # OpenShift CRDs + Routes\nmake kubeconfig-fake-eks         # Fake EKS context\nmake minikube-setup-scale N=100  # Create 100 dummy pods\n```\n\n## SBOM (Software Bill of Materials)\n\nKubeli provides [CycloneDX](https://cyclonedx.org/) SBOMs for supply chain security and compliance.\n\n### What's Included\n\n| SBOM File | Contents | Format |\n|-----------|----------|--------|\n| `sbom-npm.json` | Production npm dependencies | CycloneDX 1.5 JSON |\n| `sbom-rust.json` | Production Rust crates | CycloneDX 1.5 JSON |\n\n### Automatic Generation\n\nEvery [GitHub Release](https://github.com/atilladeniz/Kubeli/releases) includes validated SBOMs as downloadable assets. The CI pipeline:\n\n1. Generates SBOMs excluding dev/build dependencies\n2. Validates against CycloneDX 1.5 schema\n3. Attaches to release for audit/compliance download\n\n### Local Generation\n\n```bash\n# Generate both SBOMs\nmake sbom\n\n# Generate and validate (requires Docker)\nmake sbom-validate\n```\n\n### Enterprise Use\n\nThese SBOMs support:\n- **Vulnerability scanning** (Grype, Trivy, Snyk)\n- **License compliance** audits\n- **Supply chain security** (SLSA, SSDF frameworks)\n- **Regulatory requirements** (FDA, EU CRA, Executive Order 14028)\n\n## Security Scanning\n\nKubeli includes automated security scanning in CI and local development.\n\n### Automated Scans (CI)\n\n| Scanner | Purpose | Trigger |\n|---------|---------|---------|\n| **Trivy** | SBOM vulnerability scanning | PRs, pushes to main |\n| **Trivy** | Secret \u0026 misconfiguration detection | PRs, pushes to main |\n| **Semgrep** | Static code analysis (SAST) | PRs, pushes to main |\n\nResults appear in the GitHub Security tab (requires GitHub Advanced Security for private repos).\n\n### Local Scanning\n\n```bash\n# Run all security scans (requires Docker)\nmake security-scan\n\n# Individual scans\nmake security-trivy    # Vulnerability + secret scanning\nmake security-semgrep  # Static code analysis\n```\n\n### Configuration\n\n- `trivy.yaml` - Severity thresholds and scan settings\n- `trivy-secret.yaml` - Secret detection rules\n- `.semgrep.yaml` - Custom SAST rules for TypeScript and Rust\n\n## Code Verification (Vet)\n\n[Vet](https://github.com/imbue-ai/vet) is an AI-powered code verification tool that reviews code changes for correctness, security issues, and goal adherence. It uses your existing Claude Code subscription (no extra API keys needed).\n\n### Quick Start\n\n```bash\n# Review all changes in current branch against main\n# (auto-generates goal from commit messages if GOAL is omitted)\nmake vet\n\n# Review with a specific goal\nmake vet GOAL=\"Refactor storage layer without breaking API\"\n```\n\n### Use Cases\n\n| Scenario | Command | Description |\n|----------|---------|-------------|\n| **Branch review** | `make vet` | Review all commits in the branch against main |\n| **Goal verification** | `make vet GOAL=\"Add auth to API\"` | Verify changes match the intended goal |\n| **PR preparation** | `make vet GOAL=\"...\"` | Self-review entire branch before opening a PR |\n| **Post-refactor check** | `make vet GOAL=\"Refactor X without breaking Y\"` | Ensure refactoring didn't introduce regressions |\n| **Security review** | `make vet GOAL=\"Harden input validation\"` | Check for security issues in new code |\n\n### How It Works\n\n1. Vet compares all commits in the current branch against `main` (full branch diff)\n2. Sends the diff + your goal description to Claude (via Claude Code)\n3. Returns a list of issues: logic errors, security problems, goal mismatches\n4. Exit code `0` = no issues, `10` = issues found\n\n### Installation\n\n`make install` will attempt to install vet automatically (requires Python with pipx, uv, or pip). If Python is not available, vet is skipped with a warning. To install separately:\n\n```bash\nmake vet-install\n```\n\n### Agent Skill\n\nVet is also installed as a Claude Code skill (`.claude/skills/vet/`). When using Claude Code for development, the agent will proactively run vet after code changes to catch issues early.\n\n## Platform Support\n\n### macOS\n- **Requirements:** macOS 10.15+ (Catalina or later)\n- **Architecture:** Apple Silicon (arm64) native\n- **Auto-Updates:** Fully supported via Tauri updater\n\n### Windows\n- **Requirements:** Windows 10/11 (64-bit)\n- **WebView2:** Automatically installed if missing (embedded bootstrapper)\n- **Auto-Updates:** Fully supported via Tauri updater\n- **Note:** First launch may show SmartScreen warning (app is not code-signed with Microsoft certificate)\n\n### Linux\n- **Requirements:** x64 Linux with GLIBC 2.31+ (Ubuntu 20.04+, Fedora 33+, etc.)\n- **Format:** AppImage (portable, no installation required)\n- **Auto-Updates:** Fully supported via Tauri updater\n\n### Windows Development Setup\n\nFor developing or testing Kubeli on Windows, see the [Windows Setup Guide](.dev/windows/WINDOWS-SETUP.md).\n\n## Supported Kubernetes Providers\n\n| Provider | Detection | Icon |\n|----------|-----------|------|\n| Minikube | Context name | Yes |\n| AWS EKS | Context/URL pattern | Yes |\n| Google GKE | Context/URL pattern | Yes |\n| Azure AKS | Context/URL pattern | Yes |\n| Generic K8s | Fallback | Yes |\n\n## Project Structure\n\n```\nkubeli/\n├── src/                    # React frontend (Vite)\n│   ├── app/                # App styles/tests\n│   ├── components/         # React components\n│   │   ├── features/       # AI, Dashboard, Home, Logs, Port Forward, Resources,\n│   │   │                   # Settings, Shortcuts, Terminal, Updater, Visualization\n│   │   ├── layout/         # Sidebar, Tabbar, Titlebar\n│   │   └── ui/             # Radix UI components\n│   └── lib/\n│       ├── hooks/          # useK8sResources, useLogs, useShell, etc.\n│       ├── stores/         # Zustand stores\n│       ├── tauri/          # Tauri command bindings\n│       └── types/          # TypeScript definitions\n├── src-tauri/              # Tauri/Rust backend\n│   └── src/\n│       ├── commands/       # clusters, resources, logs, shell, portforward,\n│       │                   # flux, helm, metrics, mcp, network, watch, etc.\n│       ├── k8s/            # KubeClientManager, config parsing\n│       ├── ai/             # AI assistant integration\n│       └── mcp/            # MCP server\n├── web/                    # Landing page (Astro)\n└── Makefile                # Development shortcuts\n```\n\n## Contributing\n\nWe welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) and [AI Usage Policy](AI_POLICY.md) before submitting PRs.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a detailed list of changes.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Author\n\nCreated by [Atilla Deniz](https://atilladeniz.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatilladeniz%2Fkubeli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatilladeniz%2Fkubeli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatilladeniz%2Fkubeli/lists"}