A desktop gRPC client for Kubernetes environments. Grails automatically discovers clusters from your kubeconfig, port-forwards to gRPC services, discovers available methods via server reflection, and lets you compose and send requests — all from a single UI.
kubectl in PATHgrpcurl in PATHwails dev
Runs the app with Vite HMR for the frontend. Backend changes trigger a rebuild automatically.
wails build -clean -trimpath -ldflags "-s -w -H windowsgui" -tags "production" -upx
Produces a compressed, production-ready executable in build/bin/.
Settings are accessible via the gear icon in the header:
Settings persist to the Go backend config file. Theme and auth overrides persist in the WebView's localStorage.
grails/
├── build/ # Build assets (icons, manifests, installer scripts)
├── frontend/ # Svelte 5 + Tailwind frontend
│ └── src/
│ ├── lib/
│ │ ├── components/ # UI components
│ │ └── stores/ # Svelte 5 reactive stores
│ ├── App.svelte
│ └── style.css # Theme palettes & global styles
├── grpc/ # gRPC reflection & request execution (grpcurl wrapper)
├── kubernetes/ # Cluster, namespace, service discovery & port-forwarding
├── logging/ # Rolling file logger
├── cmdutil/ # Platform-specific process helpers (hide console on Windows)
├── auth/ # OIDC token generation
├── config/ # Settings persistence
├── app.go # Wails app struct & bound methods
└── main.go # Entry point
Private — not for redistribution.