Documentation
¶
Overview ¶
Demo UI server — substrate multiplex visualization.
Tiny stdlib HTTP server. Reads worker + actor state from the substrate ateapi gRPC service, reads pod logs from the k8s API via client-go, exposes JSON endpoints, and serves index.html that polls them.
No kubectl shellouts — all data flows go through:
- ateapi gRPC (workers / actors / actor names) — mirrors the pattern in demos/sandbox/client/main.go.
- client-go corev1 typed client (pod logs) — uses the operator's kubeconfig when running outside the cluster; in-cluster service account credentials otherwise.
Connecting to ateapi: by default the server auto-port-forwards to svc/api in ate-system, mints an ate-client ServiceAccount token, and verifies ateapi's serving cert against the live ClusterTrustBundle — the same authenticated path kubectl-ate uses. It needs a kube context with access to ate-system (a laptop/dev kubeconfig, or an in-cluster ServiceAccount with the ate-client RBAC):
PORT=8090 DEMO_NAMESPACE=claude-multiplex-demo go run ./server.go
To target an already-forwarded endpoint instead of auto-forwarding, set ATEAPI_ADDR (still authenticated — token + CTB verification):
kubectl port-forward svc/api 8443:443 -n ate-system & PORT=8090 ATEAPI_ADDR=localhost:8443 DEMO_NAMESPACE=claude-multiplex-demo go run ./server.go
(Pick a UI PORT that doesn't collide with any manual port-forward.)