There is no kubectl on a phone and no official Kubernetes client library for Dart. So Vizxr talks to the API server the way kubectl does underneath: plain HTTPS and JSON.
🔌 The client
Everything goes through one service, k8s_client.dart, built on Dart's own HttpClient:
- TLS: a
SecurityContextwith the system's trusted roots, plus an explicitinsecure-skip-tls-verifyoption for self-signed home-lab clusters - Auth: bearer tokens from your kubeconfig
- Requests: one
_request(method, path, body)helper that every screen uses
Listing pods is literally:
final ns = namespace; final path = ns != null ? '/api/v1/namespaces/$ns/pods' : '/api/v1/pods'; final json = await _request('GET', path); Each resource type maps to its REST path: core types under /api/v1, workloads under /apis/apps/v1, Jobs and CronJobs under /apis/batch/v1, Ingresses under /apis/networking.k8s.io/v1, and CRDs under /apis/apiextensions.k8s.io/v1.
📜 Live logs
Logs use the same endpoint kubectl logs -f uses:
GET /api/v1/namespaces/{ns}/pods/{pod}/log?follow=true The response stays open and Vizxr renders lines as they arrive.
📝 Apply, like kubectl apply
Paste YAML or JSON into the editor and tap apply. Vizxr works out the resource's collection path, tries a POST to create it, and if the API answers 409 Conflict because the object already exists, it updates it instead.
⛵ Helm without the Helm binary
There is no Helm binary on the phone either. On k3s, Helm charts are Kubernetes objects: k3s's built-in controller watches HelmChart resources (helm.cattle.io/v1) and does the work. Vizxr lists, installs, rolls back and deletes those resources, which is exactly what you want against Linxr's k3s.
🧪 A demo cluster built in
Point Vizxr at demo.k8s.local and it switches to an in-memory mock cluster. Handy for trying the UI without a cluster, and for our own UI tests.
🎨 The UI layer
Flutter with provider for state, yaml for parsing manifests and xterm for the terminal view. The theme is our own Lens-inspired dark theme.
Next, Part 2: what shipped in v1.1.0, and what is still on the to-do list.
📥 Get Vizxr
- 🐙 APK on GitHub: github.com/AI2TH/Vizxr/releases/latest
- 🌐 Website: ai2th.github.io/vizxr.html
- 💬 Questions and feedback: AI2TH Google Group
