The Go sidecar listens on 127.0.0.1:5050 by default. All endpoints except /health require the X-Podscape-Token header.
X-Podscape-Token: <token> # injected automatically by checkedSidecarFetch
RBAC denial header
Resource-list endpoints (/pods, /deployments, /crds, etc.) always return 200 OK. When the current user lacks list/watch permission for a resource, the response body is [] and the following header is set:
X-Podscape-Denied: true
The main-process getResources IPC handler detects this header and throws RBACDeniedError so the renderer store can differentiate “permission denied” from a genuinely empty namespace. The deniedSections Zustand store field tracks which sections are denied; ResourceList renders an “Access denied” banner for them.
HPA version
/hpas returns autoscaling/v2 objects (requires Kubernetes ≥ 1.23). The response includes spec.metrics and status.currentMetrics arrays used by HPADetail to render target-vs-current metric comparisons.
Health
Method
Path
Description
GET
/health
Returns 200 OK when informers are synced (or in no-kubeconfig mode). Returns 503 while syncing. No auth required.
Workloads
Method
Path
Description
GET
/nodes
All cluster nodes
GET
/namespaces
All namespaces
GET
/pods
Pods (filter with ?namespace=)
GET
/deployments
Deployments
GET
/daemonsets
DaemonSets
GET
/statefulsets
StatefulSets
GET
/replicasets
ReplicaSets
GET
/jobs
Jobs
GET
/cronjobs
CronJobs
GET
/hpas
HorizontalPodAutoscalers
GET
/pdbs
PodDisruptionBudgets
Networking
Method
Path
Description
GET
/services
Services
GET
/ingresses
Ingresses
GET
/ingressclasses
IngressClasses
GET
/networkpolicies
NetworkPolicies
GET
/endpoints
Endpoints
Config & Storage
Method
Path
Description
GET
/configmaps
ConfigMaps
GET
/secrets
Secrets (values masked server-side)
GET
/pvcs
PersistentVolumeClaims
GET
/pvs
PersistentVolumes
GET
/storageclasses
StorageClasses
RBAC
Method
Path
Description
GET
/serviceaccounts
ServiceAccounts
GET
/roles
Roles
GET
/clusterroles
ClusterRoles
GET
/rolebindings
RoleBindings
GET
/clusterrolebindings
ClusterRoleBindings
GET
/crds
CustomResourceDefinitions
GET
/events
Events
Kubernetes Operations
Method
Path
Body / Params
Description
POST
/scale
{kind, name, namespace, replicas}
Scale a workload
POST
/delete
{kind, name, namespace}
Delete a resource
POST
/rollout/restart
{kind, name, namespace}
Rollout restart
GET
/rollout/history
?kind=&name=&namespace=
Rollout revision history
POST
/rollout/undo
{kind, name, namespace, revision?}
Rollout undo
GET
/getYAML
?kind=&name=&namespace=
Fetch resource manifest as YAML
POST
/apply
Raw YAML body
Apply a manifest (kubectl apply equivalent)
GET
/secret/value
?name=&namespace=&key=
Reveal a single secret value
GET
/exec/oneshot
?pod=&container=&namespace=&command=
Run a one-shot command in a container (non-interactive); returns {stdout, stderr, error?}
GET
/cp/from
?pod=&container=&namespace=&path=
Copy a file from a container (streams as binary)
POST
/cp/to
?pod=&container=&namespace=&path=
Copy a file into a container (binary body)
Node Operations
Method
Path
Body / Params
Description
POST
/node/cordon
?name=&unschedulable=
Cordon (true) or uncordon (false) a node
POST
/node/drain
?name=
Drain a node (cordon + pod eviction)
CronJob Operations
Method
Path
Body / Params
Description
POST
/cronjob/trigger
?namespace=&name=
Create a Job from a CronJob manually
Context Management
Method
Path
Description
GET
/config/contexts
List all kubeconfig contexts
GET
/config/current-context
Active context name
POST
/config/switch
Switch active context {context}
Metrics
Method
Path
Description
GET
/metrics/pods
Pod CPU / memory (requires metrics-server)
GET
/metrics/nodes
Node CPU / memory (requires metrics-server)
Cost Estimation
Method
Path
Description
GET
/cost/status
Detect whether Kubecost or OpenCost is reachable; ?url=
GET
/cost/allocation
Proxy an allocation query to Kubecost or OpenCost
Allocation query params:
url — Cost provider base URL (optional)
provider — kubecost or opencost (optional; defaults to kubecost)
window — Time window, e.g. 1d, 7d, 30d (optional; defaults to 1d)
aggregate — Aggregation level: namespace, controller, pod (optional; defaults to namespace)
namespace — Filter results to a specific namespace (optional)
Returns a raw JSON array of the matched custom resources. Returns an error (not a silent empty array) when the CRD does not exist or the request fails.
Owner Chain
Method
Path
Description
GET
/owner-chain
Traverses owner references up (ancestors) and down (descendants)