Per-user isolation via impersonation
Every Kubernetes call carries the user's OIDC identity through impersonation, so the audit row shows alice@corp, never periscope-bot. Per-cluster RBAC, no shared service account.
Keyless cluster access
Connects via EKS Pod Identity / IRSA, kubeconfig, or in-cluster service account. Nothing static lives on the console pod; OIDC sessions (Auth0 / Okta) are held in memory only.
Multi-cluster over the agent tunnel
A periscope-agent pod on each cluster dials out over a long-lived mTLS WebSocket. Outbound HTTPS only, no inbound, no per-cluster IAM. Works on EKS, GKE, AKS, k3s, and kind.
Searchable audit log
Every privileged action lands in a SQLite-backed audit store with a first-class in-app view, time-filterable and retention-bounded. Structured JSON streams to stdout; no external logging system required.
Live resource streaming
21+ resource pages stream over Server-Sent Events with reconnect resumption and per-user concurrency caps, so one user cannot overload a large cluster. Tested polling fallback for restrictive proxies.
EKS-native operations
Schema-aware Monaco YAML editor with server-side apply and drift detection, Helm release browser with atomic rollback, EKS managed add-ons and upgrade readiness, a Karpenter dashboard, and Inspector v2 CVE surfacing.
Existing Kubernetes dashboards either share one service account, so the audit log shows a bot instead of a person, or need kubeconfigs sitting on disk. Periscope attributes every action to a real user through their IdP identity via Kubernetes impersonation, and holds zero static cloud credentials.