v0.3.3Logs, continuous profiling, eBPF network cost, alerting and agents — now in the same open-source install.Logs, profiles, eBPF network, agents.Release notes
///v0.3 — observe · allocate · act
Every signal.Every dollar.One agent.
Cost allocation, logs, continuous profiling, eBPF network cost, rightsizing and alerting for AKS, GKE and EKS — with a read-only agent that connects every signal to the dollar it costs.
kubehero ask “why did checkout-api spend jump?” live
Rendered live in your browser · demo dataHyperFrames
Clouds
AKS · GKE · EKS
any Kubernetes ≥ 1.28
License
Apache-2.0 · BSL-1.1
free to self-host
Install
One Helm chart
air-gap capable
Data
Never leaves your cluster
agents are read-only
///The stack—002
Five tools, five agents, five UIs. Or one install.
The usual answer to “what is this cluster doing, and what does it cost?” is a cost tool, a log stack, a profiler, a network agent and an alerting layer — each with its own collector, storage, query language and UI, and none sharing a cost model. KubeHero is one collector and one control plane that speaks their APIs.
Cost
OpenCost / Kubecost
agent
cost-model + scrape
store
Prometheus
query
allocation API
ui
its own
Logs
Loki + Promtail / Alloy
agent
log-shipper DaemonSet
store
object store + index
query
LogQL
ui
Grafana
Profiles
Pyroscope + Alloy
agent
eBPF profiler DaemonSet
store
object store
query
profile selectors
ui
Grafana / Pyroscope
Network
a flow-cost agent
agent
network DaemonSet
store
its own
query
its own
ui
its own
Alerts
Alertmanager + rules per tool
agent
an evaluator per tool
store
—
query
PromQL · LogQL · …
ui
Alertmanager
5node agents
4+storage systems
4+query languages
0shared cost model
///The platform—003
Seven signals.One model of what they cost.
Every pillar writes into the same ClickHouse store with the same labels — cluster, namespace, workload, team — so a log spike, a hot function and a cross-zone edge all carry a dollar figure, and the agent can join them.
01Cost
Allocation you can reconcile.
OpenCost-compatible allocation by any dimension — namespace, workload, team, label — with idle and shared cost handled explicitly, per-resource cost for CPU, RAM, GPU and network, and a FinOps FOCUS export for the finance side of the house.
Drop-in /allocation/compute — OpenCost and Kubecost API consumers keep working
Idle and shared cost kept separate, or shared back weighted or evenly
FOCUS 1.2 CSV export, forecasts, chargeback and an efficiency score
A DaemonSet tails every container’s logs into ClickHouse. Query with LogQL — filters, json and logfmt parsers, metric queries — live-tail it, collapse a million lines into a handful of patterns, and see what each team’s log volume costs per month.
LogQL: selectors, line filters, json/logfmt parsers, label filters, metric queries
Drain pattern mining and live tail; log volume priced per team
Loki push + query API — Grafana’s Loki datasource just works
eBPF samples every CPU on every node — no code changes, no restarts. Scrape pprof endpoints with the annotations Pyroscope and Alloy already use, or push to a Pyroscope-compatible /ingest. Every function gets a monthly cost.
Whole-node eBPF CPU profiling — nothing to instrument
pprof scraping via profiles.grafana.com/* annotations; Pyroscope-compatible /ingest
Diff flamegraphs and $/mo per function, from the workload’s real CPU spend
cgroup eBPF programs account every byte between pods, services, nodes and the internet. A live service map shows who talks to whom — and which edges cross zones or leave the cloud, priced per GB, with TCP retransmits on every hop.
Byte-level flow accounting per workload pair — no sidecars, no mesh
Cross-zone and internet egress priced per GB, defaults per cloud, overridable
TCP retransmits per edge from a stable kernel tracepoint
Honest limit — eBPF needs Linux ≥ 5.8 with cgroup v2 — the default on current AKS (Ubuntu 22.04+, Azure Linux), GKE (COS) and EKS (AL2023, Bottlerocket) node images.
Percentile recommendations from measured container usage — p95 CPU plus headroom, memory never below the observed max. The operator applies them only through a RightsizingPolicy a human arms: bounded steps, OOM-aware, rollout-aware, reversible.
p50 / p95 / p99 / max per container, confidence from sample coverage
Alert on LogQL metrics, spend rate, budget burn, anomalies, network cost and cluster events — OOM kills, crash loops, unschedulable pods — and route to the tools your on-call already lives in. Silences and re-notification included.
Six rule kinds, one grammar: logs · cost · budget · anomaly · network · event
kubehero ask runs a read-only investigation across cost, logs, profiles, the network map and cluster events, then answers with cited evidence and guarded proposals. The same tools are exposed over MCP, so Claude can query your clusters too.
A read-only tool loop over every signal; every fact cites its query
kubehero mcp — an MCP server for Claude and other agents
Bring your own Anthropic key, or deterministic rules and nothing leaves
kubehero ask
$ kubehero ask "why did checkout-api spend jump last night?"
↳ get_cost_allocation checkout · 24h +31%
↳ get_log_patterns payments-client retry storm ×14.2k
↳ get_top_functions checkout-api http.(*Client).Do $1.9k/mo
answer spend +31% ($4.2k/mo): a retry storm in payments-client
proposal RightsizingPolicy + alert rule — inert until you arm it
Don’t take the screenshots’ word for it. Run it, in this tab.
Four live demos on a bundled demo cluster: a working LogQL engine with Drain pattern mining, a zoomable flamegraph priced per frame, the eBPF service map with cross-zone and egress cost, and the spend-ceiling kill switch — armed by a human, reversible by design.
loading demo…
Runs entirely in your browser on bundled demo data — no backend, no account, nothing sent anywhere.
///Agents & guardrails—005
An agent that can read everything. And change nothing.
Advisor briefings (text and voice), kubehero ask investigations and the MCP server all run the same read-only tool loop over every signal. What comes out is evidence and proposals — never a write. A proposal becomes a change only as a guarded CRD.
01
Propose
the agent
Drafts a RightsizingPolicy, CeilingPolicy or alert rule, validated against a CRD whitelist. It holds no write credentials — anything else is downgraded to “investigate”.
02
Arm
a human
Reviews the diff, the dollar impact and the risk call, then arms it from the dashboard or the CLI. Nothing fires before this.
03
Execute
the operator
Deterministic reconciler: bounded steps, OOM- and rollout-aware, PDB-aware evictions, dry-run first. Never the model.
04
Audit
the control plane
Every proposal, arm and action lands in an append-only, HMAC-signed log you can forward to your SIEM.
05
Reverse
a human
kubehero undo <audit-id> restores the previous spec inside the cooldown window.
the model never holds the pen: it drafts, a human arms, the operator executes
kubehero ask · read-only investigation
$ kubehero ask "why did checkout-api spend jump last night?" investigating · eks-use1-prod · 24h · brain: claude (your key)✓get_cost_allocationcheckout · 24h vs 7d 412msspend +31% · $4.2k/mo✓list_anomalies kind=spend 188mscheckout-api z=4.1 from 01:40✓get_log_patterns {namespace="payments"} 603ms"retrying request" ×14.2k✓get_top_functions checkout-api · cpu 377msTLS handshake +12.6 pts✓get_service_map checkout → payments 241ms164 retransmits/minANSWER
checkout-api spend rose 31% ($4.2k/mo) because payments-worker's
upstream started failing at 01:40. Every retry opens a fresh TLS
connection [3][4], multiplying handshake CPU and cross-zone
traffic [5]. Fix the client's connection reuse; cap the blast radius:
PROPOSED inert until a human arms themAlertRule payments-retry-storm logs · rate > 200/5m
RightsizingPolicy checkout-api shadow · cpu 2.0 → 1.2
evidence [1] allocation [2] anomaly [3] LogQL [4] flamegraph [5] map
MCP server · kubehero mcp
Claude, meet your clusters.
The same read-only tools, over the Model Context Protocol — stdio for desktop clients, streamable HTTP with --http. Authenticate with a viewer-role token.
LLM features use your own Anthropic API key; the advisor defaults to Claude Opus 5 and the model is configurable.
No key? Still works
Deterministic rules brains write the briefings and run investigations. Nothing leaves the cluster.
What an LLM sees
In LLM mode, the tool results an investigation needs — including capped samples of log lines — go to Anthropic under your key. Rules mode sends nothing.
Voice briefings
Every briefing carries a spoken script; the dashboard reads it with your browser’s speech synthesis.
///Works with—006
Works with what you already run. Adoption is a config change.
KubeHero speaks the wire formats your tools already use — Loki push and query, the OpenCost allocation API, Pyroscope ingest, OTLP logs, Alertmanager — so Grafana dashboards, shippers and FinOps pipelines point at it without a migration.
query it from
Your existing front-ends
GrafanaLoki datasource → KubeHero
OpenCost clients/allocation/compute
FinOps toolsFOCUS 1.2 CSV export
Claude + MCP clientskubehero mcp
Prometheus/metrics + recording rules
ship into it
The agents you already run
Promtail/loki/api/v1/push
Grafana Alloyloki.write
Fluent Bitloki output
OpenTelemetry CollectorOTLP/HTTP logs · /v1/logs
Pyroscope SDKs/ingest (pprof, folded)
alert through
Where on-call lives
Slackslack://
PagerDutypagerduty://
Opsgenieopsgenie://
Microsoft Teamsteams://
Discorddiscord+https://
Webhookswebhook+https://
Alertmanageralertmanager+https://
runs beside
Your platform, untouched
Karpenter · Cluster Autoscalertheir nodes priced, not replaced
HPA · KEDArightsizing edits requests, not replicas
Cost tools, log stores, profilers and all-in-one SaaS each do part of this well. KubeHero's claim is narrower and checkable: all of it, in one open install you run yourself, with automation a human arms.
Capabilities of KubeHero compared with OpenCost, Kubecost, Grafana Loki, Grafana Pyroscope, Datadog and Cast AI
capability
KubeHero
OpenCost
Kubecost
Grafana Loki
Grafana Pyroscope
Datadog
Cast AI
Cost allocation
idle + shared, any label
✓
✓
✓
✗
✗
✓
✓
Logs
store + LogQL-class queries
✓
✗
✗
✓
✗
✓
✗
Continuous profiling
incl. no-code eBPF
✓
✗
✗
✗
✓
✓
✗
Network cost per workload
cross-zone + egress
✓
◐3
✓3
✗
✗
✓5
✓6
Rightsizing that applies
not just recommends
✓
✗
✓2
✗
✗
✓5
✓
Human-armed guardrails
armed · bounded · audited · undo
✓
—
◐2
—
—
◐5
◐6
AI investigation
built-in, cites evidence
✓
✗
✗
✗4
✗4
✓5
✗
MCP server
for Claude & other agents
✓
✓1
✓2
◐4
◐4
✓5
✓6
Self-hosted, data stays in-cluster
air-gap capable
✓
✓
✓
✓
✓
✗
✗
License
Apache-2.0 + BSL-1.17
Apache-2.0
Proprietary (free tier)
AGPL-3.0
AGPL-3.0
Proprietary
Proprietary
Price
Free, self-hosted
Free
Free tier + enterprise
Free OSS; Grafana Cloud paid
Free OSS; Grafana Cloud paid
Usage-based SaaS
Quote-based SaaS
✓ built in◐ partial — see note✗ not offered— no automation to guardchecked against public docs on 2026-09-28 · wrong? open an issue
1OpenCost ships a built-in MCP server from v1.118. source
2Kubecost 3.0 added automated container request sizing (free tier up to 250 cores) with suspendable, audited resize runs; an MCP server ships by default from v3.3. source
3OpenCost/Kubecost network costs come from a separate network-costs DaemonSet that classifies egress as cross-zone, cross-region or internet; no service map. source
4Loki and Pyroscope are AGPL-3.0. MCP access is through the separate mcp-grafana server; the Grafana Assistant AI is a Grafana Cloud feature. source
5Datadog: Kubernetes Autoscaling applies rightsizing (in-app or GitOps rollouts); data-transfer cost allocation via Cloud Network Monitoring (eBPF) + CCM; Bits AI SRE and the MCP server are GA. source
6Cast AI: network cost monitoring (egress, cross-AZ), policy-driven workload autoscaling, and an MCP server; SaaS control plane with an in-cluster agent. source
7CLI, collector, cost model and protos are Apache-2.0; control plane, operator, advisor and dashboard are BSL-1.1 — source-available and free to self-host, not OSI-approved. source
One collector. One control plane. Every surface reads the same store.
A DaemonSet does the kernel work on every node; a control plane on ClickHouse and Postgres stores, prices and serves it. Agents propose through CRDs; only the operator — armed by a human — ever writes to your cluster.
Collector — eBPF needs Linux ≥ 5.8 with cgroup v2; without it the collector keeps running and skips the kernel signals.
Control plane — degrades to clearly-labelled demo data when a store is missing, unless KUBEHERO_DEMO_MODE=false.
Everything runs in your cluster from one Helm chart; images on ghcr.io/kubehero-io are cosign-signed with SBOM attestations.
Five minutes to every signal. No account. No license key.
One Helm chart installs the collector, control plane, operator, advisor and dashboard into your cluster. Nothing phones home; the images mirror cleanly into air-gapped registries.
Any Kubernetes ≥ 1.28 · Helm ≥ 3.12 · embedded Postgres + ClickHouse, auth on by default
helm · oci://ghcr.io/kubehero-io/charts
helm install kubehero oci://ghcr.io/kubehero-io/charts/kubehero \ -n kubehero-system --create-namespace# your admin token (dashboard sign-in, CLI, API)kubectl -n kubehero-system get secret kubehero-control-plane -o jsonpath='{.data.admin-token}' | base64 -d; echo# the dashboard — sign in with that tokenkubectl -n kubehero-system port-forward svc/kubehero-dashboard 3001:3001
Docker, kind, Helm and kubectl on your laptop · the same chart you'd install in production
kind · local cluster
git clone https://github.com/kubehero-io/platform && cd platform./infra/demo/e2e-kind.sh # the real chart on kind, every signal asserted# or the guided demo, with a policy that trips on purpose:task demo # task demo:clean to tear it down
No Kubernetes at all — telemetry from a synthetic three-cluster fleet, streamed through the real ingest APIs
docker compose · laptop
git clone https://github.com/kubehero-io/platform && cd platformdocker compose up --build -d # full stack + a synthetic three-cluster fleetopen http://localhost:3001
What you get
Cost allocation and chargeback by namespace, team and label
Every container's logs, queryable with LogQL — or from Grafana
CPU flamegraphs for every workload, no code changes
A priced service map: cross-zone and internet egress
Rightsizing recommendations — applied only when you arm a policy
Sixty seconds, start to fix. Watch the whole story.
From the 3 AM page to a cited answer and a guarded, reversible fix. The film is also a HyperFrames composition — flip to the live-rendered version and it plays as HTML, right in this page.
the 3 am problem → one install → every signal → the agent → a guarded action → the outcome