Important
This program was never designed to be compatible with other systems, it was strictly written for my own use case. If you would like to use this for your own services you'll have to modify the source code yourself and build the project.
Terminal dashboard for Sentry issues, API health latency, Kubernetes pods, and live pod logs, built with Bubble Tea, Bubbles, and Lip Gloss.
- Sentry errors (multiple projects): Lists recent unresolved issues for
siip-ticketingandsiip-iam-serviceusingsentry-cli. - Analytics pane:
- Sentry totals: Counts of current issues per project.
- API latency: Measures response times for
https://ticketing.siip.io/healthandhttps://iam.siip.io/healthviacurl. - IAM health details: Parses status and lists group statuses by querying subgroup endpoints.
- Kubernetes pods overview:
- Fetches
kubectl get podsand colorizes pod rows by status (Running/Pending/Error states). - Shows the current kube context in the pane title.
- Navigate the list and open logs for the selected pod.
- Fetches
- Live pod log viewer:
- Streams the last lines (
kubectl logs --tail=500) for the selected pod. - Scroll with arrow keys or mouse wheel, press
Escto return.
- Streams the last lines (
- UX details:
- Splash screen on startup with version.
- Auto-refresh of panes on a 15s tick, with Sentry errors refreshed at least every 60s.
- Clean keybindings for navigation across panes and within pods.
- Go: 1.24+
- External tools in PATH:
sentry-clikubectlcurl
- Install:
- macOS (Homebrew):
brew install getsentry/tools/sentry-cli
- macOS/Linux (curl script): see
sentry-cliinstall instructions.
- macOS (Homebrew):
- Authenticate:
- Interactive login:
sentry-cli login
- Or set a token via environment variable:
export SENTRY_AUTH_TOKEN=YOUR_TOKEN
- Interactive login:
- Verify:
sentry-cli info sentry-cli issues list --org siip --project siip-ticketing | head -n 5 | cat
- Install (macOS):
brew install kubectl
- Ensure you have a valid kubeconfig/current context and permissions.
- Verify:
kubectl config current-context | cat kubectl get pods | head -n 10 | cat
- Preinstalled on macOS/Linux. Verify:
curl --version | cat
# Resolve modules
go mod tidy
# Local build (macOS)
go build -o oncall .
# Linux amd64
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o oncall-linux .
# Windows amd64
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o oncall.exe .# from source
go run main.go
# or built binary
./oncall- Global:
qorCtrl+Cto quit,Tab/Shift+Tabto switch panes - Pods pane:
↑/kand↓/jto move selection,lto view logs,Escto return
- Sentry org/projects/queries are configured in code:
getSentryErrorLogsCmdandgetSentryStatsCmdinsentry.go. - API endpoints for latency checks are configured in
getApiResponseTimesCmdinhealth.go. - Kubernetes context is read from your current
kubectlcontext; switch viakubectl config use-context.
- The app makes shell calls via
os/exectosentry-cli,kubectl, andcurl; ensure these are accessible and authenticated where needed. - Pod coloring heuristics cover common statuses: Running (green), Pending/Initializing (yellow), Error/CrashLoopBackOff/ImagePullBackOff (red).
- A
.gitignoreis included to avoid committing build artifacts, logs, and OS/editor files.
- Sentry panes empty: Verify
sentry-cli loginorSENTRY_AUTH_TOKENand project access. - Kubernetes pane errors: Verify kube context (
kubectl config current-context) and cluster RBAC. - API latency errors: Ensure
curlis installed and the endpoints are reachable from your network.
This project is licensed under the GNU GPL v3.0. See LICENSE.