The Problem

Operators need a single UI that can view, edit, and act on resources across many Kubernetes clusters while enforcing enterprise‑grade access controls. Existing dashboards either lack multi‑cluster support or require separate tools for RBAC, audit logs, and AI‑assisted troubleshooting, forcing teams to stitch together ad‑hoc scripts.

What This Does

kite delivers a full‑stack platform: a Go‑based API server (main.go) and a React/TypeScript front‑end (ui/src). The back‑end implements OAuth, RBAC, audit logging and proxies to the Kubernetes API (see pkg/auth/handler.go, pkg/rbac/*.go, pkg/kube/client.go). The UI talks to the API via the generated client in ui/src/lib/api.ts and renders resource tables, live charts, logs and an AI chat assistant (pkg/ai/handler.go). Helm charts (charts/kite/*.yaml) and Dockerfiles (Dockerfile, Dockerfile.binary) enable containerised deployment.

How It Is Wired

  1. Process start – main.go:223 runs main, which initializes the DB (InitDB in pkg/model/model.go), creates the Kubernetes client (NewClient in pkg/kube/client.go), registers HTTP routes (setupAPIRouter in pkg/auth/handler.go) and starts the HTTP server.
  2. Routing – setupAPIRouter registers handlers such as NewAuthHandler, NewGenericResourceHandler, and AI endpoints (HandleChat, HandleExecute). Each route is a hub; e.g., RegisterRoutes -> NewGenericResourceHandler occurs 27 times, giving generic_resource_handler.go the highest fan‑in (23 callers).
  3. Core request flow – A typical resource list request follows: HTTP → RegisterRoutes → NewGenericResourceHandler.List → Query (pkg/prometheus/client.go) → DB Exec → JSON response. The Query function is called from 12 places, making it a high‑impact node.
  4. AI interaction – HandleChat (entry point) creates an Agent (pkg/ai/agent.go), which builds a runtime prompt (buildRuntimePromptContext) and calls the model client (NewAnthropicClient or NewOpenAIClient). The model call is the only outbound network call from the AI path.
  5. External effects – DB writes: InitDB, Callback → Query, Create (resource creation). Network calls: Kubernetes client (client.Get), model APIs, Prometheus queries. * Filesystem: log streaming (pkg/kube/log.go), reading/writing config files.
  6. Hotspots – ui/src/pages/resource-list imports 20 other modules but is only imported once, indicating high instability* (0.95). UI components button and card are pure leaf nodes (Ca = 10, Ce = 0). The most connected back‑end module is pkg/handlers/resources/cr_handler.go (9 functions, called from 23 files).

No circular import cycles were detected, so static dependencies are acyclic, simplifying refactoring.

How To Use It

# Clone the repo
git clone https://github.com/moses-y/kite
cd kite

# Build the server (requires Go 1.25+)
make build          # produces ./kite (binary)

# Build the UI (pnpm required)
cd ui
pnpm install
pnpm run build      # outputs dist/ for the static assets

# Run locally with Docker (recommended)
docker build -t kite:local .
docker run -d -p 8080:8080 -v $(pwd)/data:/data \
  -e DB_DSN=/data/db.sqlite kite:local

Configuration lives in environment variables (DB_DSN, OAuth client IDs, Prometheus URLs) as documented in docs/config/*.md. The Helm chart (charts/kite/values.yaml) provides a production‑ready manifest; install with:

helm repo add kite https://kite-org.github.io/kite/
helm install kite kite/kite -n kube-system -f myvalues.yaml

Real‑World Use

A SaaS platform runs kite as a side‑car in each customer’s management cluster. The back‑end authenticates users via the provider configured in docs/config/oauth-setup.md, enforces per‑tenant RBAC (pkg/rbac/manager.go), and exposes an AI chat that can query Prometheus metrics and suggest scaling actions, all from a single UI.

Code Health & Issues

  • Critical – Privileged pull‑request checkout in .github/workflows/build-preview-docker-image.yml.
  • Critical – Secrets used in a fork‑triggered workflow .github/workflows/deploy-test-env.yml.
  • High – GitHub Actions not pinned to commit SHAs (docker/setup-qemu-action@v3, etc.).
  • High – Release workflow pushes directly to default branch (.github/workflows/release.yaml).
  • Medium – Base images referenced by mutable tags in Dockerfile.
  • Medium – No dependency‑vulnerability scan step in CI.
  • Medium – Checkout step retains token; should set persist-credentials: false.
  • Medium – Container runs as root; no non‑root USER defined.
  • Medium – Test coverage low (9 test files vs 269 source files).
  • Low – Workflow jobs lack explicit timeout-minutes.

Additional static findings: deep nesting (max depth 8) in several UI components, duplicated logic across AI helper files, and oversized files (ui/src/lib/api.ts, pkg/ai/tools.go). These are reported by the analysis and include suggested fixes.

The Bottom Line

kite is a well‑structured, full‑stack Kubernetes dashboard with solid modular separation between UI, API, and cluster interaction. It offers the needed multi‑cluster, RBAC, and AI features, but the repository contains serious CI/CD security gaps and limited test coverage that must be addressed before production deployment. Suitable for teams comfortable with Go and React who can invest in hardening the CI pipeline.