Ranked diagnosis
Severity and confidence push the incident-driving finding to the top instead of leaving clues scattered across commands.
Kubernetes diagnostics without the archaeology
triage is a kubectl-native CLI that cross-references pod status, events, owner refs, services, endpoints, PVCs, and RBAC in one pass. It tells responders what is broken, why, and what command to run next.
ⓧ CRITICAL [high confidence] TRG-POD-CRASHLOOPBACKOFF Container "app" is in CrashLoopBackOff (5 restarts) Evidence: • pod.status.containerStatuses[app].state.waiting.reason = CrashLoopBackOff • pod.status.containerStatuses[app].restartCount = 5 Next commands: $ kubectl logs -n default crashloop-demo -c app --previous $ kubectl describe pod -n default crashloop-demo
Built for responders who need the likely root cause, the evidence behind it, and the shortest path to confirmation.
Why triage
triage keeps the raw cluster facts, but adds ranking, rule IDs, evidence correlation, and immediate follow-up commands so responders can move from symptom to fix faster.
Useful for raw detail, but the operator still has to correlate symptoms, owners, events, services, and next steps by hand.
Designed for incident response: rank the likely cause, preserve the evidence, and make the confirmation path obvious.
Core benefits
Severity and confidence push the incident-driving finding to the top instead of leaving clues scattered across commands.
Every finding carries contract-grade evidence so automation and humans can reason from the same facts.
Findings include pasteable follow-up commands, which shortens the loop from detection to remediation.
Scenario-led demos
See how triage prioritizes runtime failure, retains evidence, and keeps follow-up commands copyable.
Open scenarioWatch a broken dependency turn into a concrete configuration diagnosis with object-level evidence.
Open scenarioInspect how triage connects controller-level rollout failure to the underlying image pull problem.
Open scenarioArchitecture
The product stays fast because it does one diagnosis pass, builds a request-scoped cache, and runs compiled rules over explicit Kubernetes signals instead of trying to become a long-lived control plane.
Cobra commands map user intent to one diagnosis target and a renderer choice.
Request-scoped cache warms likely resources and removes duplicate Kubernetes API calls.
Compiled rules inspect explicit workload, event, network, storage, and RBAC signals.
Severity and confidence decide what responders should read first.
Text, JSON, and Markdown keep the same finding model for humans and automation.
Install
Releases ship as signed binaries with SBOMs. Source installs use the public module path, and kubectl plugin mode is built into the same binary.
Pull a signed release asset from GitHub Releases.
curl -L https://github.com/khvedela/triage/releases/latest/download/triage_darwin_arm64.tar.gz | tar xz chmod +x triage mv triage /usr/local/bin/triage
Release trust
GoReleaser publishes checksums and cosign signatures so teams can verify exactly what they install.
Each archive ships with SBOM material so provenance and dependency review do not require a second pipeline.
Binary downloads, release notes, and future package integrations all anchor on the public GitHub Releases feed.