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 SecurityContext with the system's trusted roots, plus an explicit insecure-skip-tls-verify option 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