Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
lookout
command
Command lookout is the single multicall binary of k8s-lookout (DESIGN.md §4.1): deterministic, token-dense reads of Kubernetes/GKE clusters for agent-driven troubleshooting, plus the resident per-cluster sentinel, `lookout watch`.
|
Command lookout is the single multicall binary of k8s-lookout (DESIGN.md §4.1): deterministic, token-dense reads of Kubernetes/GKE clusters for agent-driven troubleshooting, plus the resident per-cluster sentinel, `lookout watch`. |
|
dev
|
|
|
tools/harvest-corpus
command
harvest-corpus is the §9.3 drill tool over pkg/corpus: it reads a captured inject stream (dev/drills/stub-daemon.py's log format — `kubectl logs` of the stub pod verbatim, optionally interleaved with exported §9.4 triage-status record JSON lines) and emits one labeled trajectory per incident session as JSON lines on stdout, complete trajectories first.
|
harvest-corpus is the §9.3 drill tool over pkg/corpus: it reads a captured inject stream (dev/drills/stub-daemon.py's log format — `kubectl logs` of the stub pod verbatim, optionally interleaved with exported §9.4 triage-status record JSON lines) and emits one labeled trajectory per incident session as JSON lines on stdout, complete trajectories first. |
|
internal
|
|
|
mcpserver
Package mcpserver serves the registered read-path checks as MCP tools (DESIGN.md §4.3): every non-hidden checks.Command becomes one tool whose name is the command's MCPName, whose description is the command's §4.4.1 micro-skill metadata, and whose input schema is derived mechanically from the same FlagSpecs that generate --help.
|
Package mcpserver serves the registered read-path checks as MCP tools (DESIGN.md §4.3): every non-hidden checks.Command becomes one tool whose name is the command's MCPName, whose description is the command's §4.4.1 micro-skill metadata, and whose input schema is derived mechanically from the same FlagSpecs that generate --help. |
|
newcheck
command
Command newcheck scaffolds a read-path check: the command file, its test suite, and a first golden.
|
Command newcheck scaffolds a read-path check: the command file, its test suite, and a first golden. |
|
sitedoc
Package sitedoc generates the docs-site Reference section under docs/site/src/content/docs/reference/ — the fourth generated surface after --help, the MCP schemas, and the skill reference stubs (DESIGN.md §4.4.3: one source of truth, generated outward).
|
Package sitedoc generates the docs-site Reference section under docs/site/src/content/docs/reference/ — the fourth generated surface after --help, the MCP schemas, and the skill reference stubs (DESIGN.md §4.4.3: one source of truth, generated outward). |
|
sitedoc/gen
command
Command gen regenerates the docs-site Reference section under docs/site/src/content/docs/reference/ from the pkg/checks registry, the sentinel flag/metric inventories, and the signal-schema v1 ledger.
|
Command gen regenerates the docs-site Reference section under docs/site/src/content/docs/reference/ from the pkg/checks registry, the sentinel flag/metric inventories, and the signal-schema v1 ledger. |
|
skilldoc
Package skilldoc generates the per-command reference stubs under skills/<skill>/references/ from the pkg/checks command metadata — the third generated surface after --help and the MCP schemas, and the site reference pages are the fourth (DESIGN.md §4.4.3: one source of truth, generated outward).
|
Package skilldoc generates the per-command reference stubs under skills/<skill>/references/ from the pkg/checks command metadata — the third generated surface after --help and the MCP schemas, and the site reference pages are the fourth (DESIGN.md §4.4.3: one source of truth, generated outward). |
|
skilldoc/gen
command
Command gen regenerates the skill reference stubs under skills/*/references/ from the pkg/checks registry.
|
Command gen regenerates the skill reference stubs under skills/*/references/ from the pkg/checks registry. |
|
telemetry
Package telemetry initializes OpenTelemetry for the sentinel.
|
Package telemetry initializes OpenTelemetry for the sentinel. |
|
version
Package version centralizes build-identity reporting for cmd/lookout, ported from core-agent's internal/version (issue #146: a go-installed lookout reported the literal string "dev", with no way to correlate a binary with a release).
|
Package version centralizes build-identity reporting for cmd/lookout, ported from core-agent's internal/version (issue #146: a go-installed lookout reported the literal string "dev", with no way to correlate a binary with a release). |
|
watch
Auto defaults for the sentinel (--sources=auto / --storm=auto): probe-and-enable resolution at startup.
|
Auto defaults for the sentinel (--sources=auto / --storm=auto): probe-and-enable resolution at startup. |
|
pkg
|
|
|
checks
Package checks is the read-path command surface: implementations plus the metadata registry that is the single source of truth for every invocation surface (§4.3, §4.4.3).
|
Package checks is the read-path command surface: implementations plus the metadata registry that is the single source of truth for every invocation surface (§4.3, §4.4.3). |
|
checks/all
Package all blank-imports every read-path check package, so that one import populates the default registry with the complete command set:
|
Package all blank-imports every read-path check package, so that one import populates the default registry with the complete command set: |
|
checks/audit
Package audit implements the `lookout audit` command group (docs/fleet-audit-detectors-design.md, epic #182): deterministic best-practice POSTURE checks, as distinct from the incident groups that report what is currently broken.
|
Package audit implements the `lookout audit` command group (docs/fleet-audit-detectors-design.md, epic #182): deterministic best-practice POSTURE checks, as distinct from the incident groups that report what is currently broken. |
|
checks/bundle
Package bundle implements `lookout bundle` (DESIGN.md §5): the first tool call of every incident.
|
Package bundle implements `lookout bundle` (DESIGN.md §5): the first tool call of every incident. |
|
checks/checktest
Package checktest is the §13 contract-test scaffold for read-path commands.
|
Package checktest is the §13 contract-test scaffold for read-path commands. |
|
checks/cloudcheck
Package cloudcheck implements the `lookout cloud` command group (DESIGN.md §5): stockout, orphans, ipspace, and quota — the GCP-side point-in-time reads.
|
Package cloudcheck implements the `lookout cloud` command group (DESIGN.md §5): stockout, orphans, ipspace, and quota — the GCP-side point-in-time reads. |
|
checks/crd
Package crd is the read path's seam for detectors over API groups that may or may not be installed: Gateway API, OLM, KEDA, Kyverno.
|
Package crd is the read path's seam for detectors over API groups that may or may not be installed: Gateway API, OLM, KEDA, Kyverno. |
|
checks/delta
Package delta implements `lookout triage delta` (DESIGN.md §5): one scan of the cluster's current state that reports every abnormal object and nothing else.
|
Package delta implements `lookout triage delta` (DESIGN.md §5): one scan of the cluster's current state that reports every abnormal object and nothing else. |
|
checks/events
Package events implements `lookout triage events` (DESIGN.md §5): the deduped chronological event timeline over a target's owner-reference tree, absorbing v2's ev-sifter and hpa-loop-catcher.
|
Package events implements `lookout triage events` (DESIGN.md §5): the deduped chronological event timeline over a target's owner-reference tree, absorbing v2's ev-sifter and hpa-loop-catcher. |
|
checks/findings
Package findings implements the `lookout findings` command group (docs/findings-diff-design.md, issue #212): the run-to-run transition surface an unattended agent needs so consecutive scans report what CHANGED rather than re-listing the same forty findings every fifteen minutes.
|
Package findings implements the `lookout findings` command group (docs/findings-diff-design.md, issue #212): the run-to-run transition surface an unattended agent needs so consecutive scans report what CHANGED rather than re-listing the same forty findings every fifteen minutes. |
|
checks/health
Package health implements `lookout health` (DESIGN.md §5): the "are there issues with this cluster?" scorecard.
|
Package health implements `lookout health` (DESIGN.md §5): the "are there issues with this cluster?" scorecard. |
|
checks/inventory
Package inventory implements `lookout triage list` (issue #252): kubectl get, aggregated — every namespaced kind an incident normally involves, in one call, one line per object.
|
Package inventory implements `lookout triage list` (issue #252): kubectl get, aggregated — every namespaced kind an incident normally involves, in one call, one line per object. |
|
checks/logs
Package logs implements `lookout triage logs` (DESIGN.md §5): the token-density workhorse of the read path.
|
Package logs implements `lookout triage logs` (DESIGN.md §5): the token-density workhorse of the read path. |
|
checks/netprobe
Package netprobe implements `lookout net probe` (DESIGN.md §5): active DNS/TCP/HTTP checks for hypothesis CONFIRMATION — "is this Service name resolvable", "does this port accept connections", "what does this endpoint actually return" — bending read-only in letter, not spirit: packets are sent, but nothing in the cluster is mutated and no Kubernetes API is touched at all.
|
Package netprobe implements `lookout net probe` (DESIGN.md §5): active DNS/TCP/HTTP checks for hypothesis CONFIRMATION — "is this Service name resolvable", "does this port accept connections", "what does this endpoint actually return" — bending read-only in letter, not spirit: packets are sent, but nothing in the cluster is mutated and no Kubernetes API is touched at all. |
|
checks/perf
Package perf implements `lookout perf probe` (DESIGN.md §5): control-plane and startup performance via data-driven metrics query packs — apiserver p99 by verb/resource, APF queue saturation + 429 rejects, etcd fsync p99 + DB size, pod-startup p95 trend.
|
Package perf implements `lookout perf probe` (DESIGN.md §5): control-plane and startup performance via data-driven metrics query packs — apiserver p99 by verb/resource, APF queue saturation + 429 rejects, etcd fsync p99 + DB size, pod-startup p95 trend. |
|
checks/scan
Package scan implements `lookout scan`: the zero-argument entry point.
|
Package scan implements `lookout scan`: the zero-argument entry point. |
|
checks/stab
Package stab implements the `lookout stab` command group (DESIGN.md §5): stability reads.
|
Package stab implements the `lookout stab` command group (DESIGN.md §5): stability reads. |
|
checks/state
Package state implements the `lookout state` command group (DESIGN.md §5): dependency and configuration verification.
|
Package state implements the `lookout state` command group (DESIGN.md §5): dependency and configuration verification. |
|
checks/top
Package top implements `lookout triage top` (DESIGN.md §5): CPU/memory saturation vs limits, RIGHT NOW.
|
Package top implements `lookout triage top` (DESIGN.md §5): CPU/memory saturation vs limits, RIGHT NOW. |
|
checks/triage
Package triage implements the graph-backed commands of the `lookout triage` group that consume §6.6 history: `triage radius` (blast radius, live or point-in-time via --at) and `triage changes` (what changed in the window before onset, from the delta log the sentinel writes).
|
Package triage implements the graph-backed commands of the `lookout triage` group that consume §6.6 history: `triage radius` (blast radius, live or point-in-time via --at) and `triage changes` (what changed in the window before onset, from the delta log the sentinel writes). |
|
cloud
Package cloud is the provider boundary of DESIGN.md §2: everything cloud-touching in lookout (capacity explanations, quota inventory, orphan sweeps, metrics queries, IP-space utilization, stockout extraction, workload-identity verification, cluster-config posture) goes through the Provider interface defined here.
|
Package cloud is the provider boundary of DESIGN.md §2: everything cloud-touching in lookout (capacity explanations, quota inventory, orphan sweeps, metrics queries, IP-space utilization, stockout extraction, workload-identity verification, cluster-config posture) goes through the Provider interface defined here. |
|
corpus
Package corpus is the §9.3 verified-fix corpus harvester: it extracts LABELED incident trajectories — symptom → diagnosis → action → externally verified outcome — from a captured inject stream, by pure schema walks over the frozen signal-schema v1 payloads (docs/signal-schema-v1.md).
|
Package corpus is the §9.3 verified-fix corpus harvester: it extracts LABELED incident trajectories — symptom → diagnosis → action → externally verified outcome — from a captured inject stream, by pure schema walks over the frozen signal-schema v1 payloads (docs/signal-schema-v1.md). |
|
cronsched
Package cronsched resolves a CronJob's spec.schedule into activation times.
|
Package cronsched resolves a CronJob's spec.schedule into activation times. |
|
emit
Package emit implements the §4.2 output contract shared by every read-path command: findings on stdout as flat, ordered key=value records (logfmt by default, one JSON object per line with --format=json), a mandatory terminating summary line (`scanned=<n> findings=<n> elapsed=<d>`), diagnostics on stderr only, and exit codes 0 data / 1 runtime / 2 usage.
|
Package emit implements the §4.2 output contract shared by every read-path command: findings on stdout as flat, ordered key=value records (logfmt by default, one JSON object per line with --format=json), a mandatory terminating summary line (`scanned=<n> findings=<n> elapsed=<d>`), diagnostics on stderr only, and exit codes 0 data / 1 runtime / 2 usage. |
|
engine
Package engine implements the watch-path signal pipeline (DESIGN.md §7): the Signal type carried between stages (§8 schema), the frozen cross-cluster Fingerprint, and the reason/namespace filter and rolling-window dedup cache that decide which observed signals become incidents.
|
Package engine implements the watch-path signal pipeline (DESIGN.md §7): the Signal type carried between stages (§8 schema), the frozen cross-cluster Fingerprint, and the reason/namespace filter and rolling-window dedup cache that decide which observed signals become incidents. |
|
exempt
Package exempt implements the third suppression axis (issue #234): an owner-declared, git-reviewed, expiring statement that a finding is intentional here.
|
Package exempt implements the third suppression axis (issue #234): an owner-declared, git-reviewed, expiring statement that a finding is intentional here. |
|
findings
Package findings implements the run-to-run transition surface (issue #212): consecutive scans are diffed against each other so a consumer reports what CHANGED — new / ongoing / escalated / resolved / suppressed — instead of re-listing every open finding on every run.
|
Package findings implements the run-to-run transition surface (issue #212): consecutive scans are diffed against each other so a consumer reports what CHANGED — new / ongoing / escalated / resolved / suppressed — instead of re-listing every open finding on every run. |
|
graph
Package graph is the in-memory topology index of DESIGN.md §6: a directed, typed graph centered on the Pod, connecting the traffic/policy layers above it (Ingress → Service/EndpointSlice → NetworkPolicy → Pod) to the infrastructure below (Containers, ConfigMaps/Secrets, PVCs, Node, Zone).
|
Package graph is the in-memory topology index of DESIGN.md §6: a directed, typed graph centered on the Pod, connecting the traffic/policy layers above it (Ingress → Service/EndpointSlice → NetworkPolicy → Pod) to the infrastructure below (Containers, ConfigMaps/Secrets, PVCs, Node, Zone). |
|
inject
Package inject implements the agent sinks the watch sentinel delivers incidents through — the core-agent daemon client (the default) and the generic webhook sink (webhook.go), both behind the two-verb Sink interface (sink.go) — plus the frozen wire types they POST (see payload.go).
|
Package inject implements the agent sinks the watch sentinel delivers incidents through — the core-agent daemon client (the default) and the generic webhook sink (webhook.go), both behind the two-verb Sink interface (sink.go) — plus the frozen wire types they POST (see payload.go). |
|
inject/schema
Package schema exports the signal-schema v1 kind ledger as data (docs/signal-schema-v1.md; frozen at M5): every shipped signal kind, the wire struct that serializes it, and its one-line role.
|
Package schema exports the signal-schema v1 kind ledger as data (docs/signal-schema-v1.md; frozen at M5): every shipped signal kind, the wire struct that serializes it, and its one-line role. |
|
kube
Package kube provides Kubernetes client bootstrap shared by the lookout subcommands.
|
Package kube provides Kubernetes client bootstrap shared by the lookout subcommands. |
|
leeway
Package leeway is the placement-drift scoring engine: given where a subject's objects actually are and what its intent says they should be, it produces the numbers §7.3 of docs/leeway-design.md defines.
|
Package leeway is the placement-drift scoring engine: given where a subject's objects actually are and what its intent says they should be, it produces the numbers §7.3 of docs/leeway-design.md defines. |
|
memory
Package memory holds lookout's durable, agent-queryable memory records (DESIGN.md §9.2/§9.4): the low-volume distilled facts a scheduled distiller pass derives from recurring raw occurrences, and (next change in this stack) the triage-status records incident agents write at material transitions.
|
Package memory holds lookout's durable, agent-queryable memory records (DESIGN.md §9.2/§9.4): the low-volume distilled facts a scheduled distiller pass derives from recurring raw occurrences, and (next change in this stack) the triage-status records incident agents write at material transitions. |
|
memory/distill
Package distill is the §9.2 distiller: the scheduled pass in the sentinel that converts recurring raw occurrences (pkg/store) into durable distilled facts (pkg/memory) — "us-east1-b nodegroup n2d-pool: 3 stockouts in 7d".
|
Package distill is the §9.2 distiller: the scheduled pass in the sentinel that converts recurring raw occurrences (pkg/store) into durable distilled facts (pkg/memory) — "us-east1-b nodegroup n2d-pool: 3 stockouts in 7d". |
|
sources
Package sources defines the signal-source contract of the sentinel (DESIGN.md §7.2): pluggable sources feeding one shared pipeline — one resident process per cluster, never N sidecars.
|
Package sources defines the signal-source contract of the sentinel (DESIGN.md §7.2): pluggable sources feeding one shared pipeline — one resident process per cluster, never N sidecars. |
|
sources/autoscaling
Package autoscaling is the HPA-saturation signal source (post-M5 roadmap B.2, issue #131).
|
Package autoscaling is the HPA-saturation signal source (post-M5 roadmap B.2, issue #131). |
|
sources/capacity
Package capacity is the capacity signal source (DESIGN.md §7.2 row 7, §10.1): cluster-autoscaler signals from STRUCTURED sources — never the CA text log.
|
Package capacity is the capacity signal source (DESIGN.md §7.2 row 7, §10.1): cluster-autoscaler signals from STRUCTURED sources — never the CA text log. |
|
sources/computeclass
Package computeclass is leeway's preference half (§7.7 of docs/leeway-design.md): the source that answers "which priority of its compute class is this workload actually running on, and for how much of the time".
|
Package computeclass is leeway's preference half (§7.7 of docs/leeway-design.md): the source that answers "which priority of its compute class is this workload actually running on, and for how much of the time". |
|
sources/degradation
Package degradation is the degradation signal source (DESIGN.md §7.2 row 5): leading indicators from TRENDS on EndpointSlice ready ratios and from probe flaps below the `Unhealthy` threshold — "payment-backend capacity 5/5 → 3/5 over 10 min".
|
Package degradation is the degradation signal source (DESIGN.md §7.2 row 5): leading indicators from TRENDS on EndpointSlice ready ratios and from probe flaps below the `Unhealthy` threshold — "payment-backend capacity 5/5 → 3/5 over 10 min". |
|
sources/expiry
Package expiry is the expiry signal source (DESIGN.md §7.2 row 6): leading COUNTDOWNS — TLS secret certificates, webhook CA bundles, ServiceAccount token expiries where detectable, and cert-manager Certificate status — "cert expires in 72 h and last renewal failed".
|
Package expiry is the expiry signal source (DESIGN.md §7.2 row 6): leading COUNTDOWNS — TLS secret certificates, webhook CA bundles, ServiceAccount token expiries where detectable, and cert-manager Certificate status — "cert expires in 72 h and last renewal failed". |
|
sources/gateway
Package gateway is the Gateway API health signal source (post-M5 roadmap C.5, issue #168): the Gateway-API sibling of the ingress source (#135).
|
Package gateway is the Gateway API health signal source (post-M5 roadmap C.5, issue #168): the Gateway-API sibling of the ingress source (#135). |
|
sources/ingress
Package ingress is the GCLB/Ingress programming-failure signal source (post-M5 roadmap C.5, issue #135 half 1): the ingress-gce controller's failure events — Sync errors, Translate errors, and NEG attach/sync failures.
|
Package ingress is the GCLB/Ingress programming-failure signal source (post-M5 roadmap C.5, issue #135 half 1): the ingress-gce controller's failure events — Sync errors, Translate errors, and NEG attach/sync failures. |
|
sources/k8sevents
Package k8sevents is the first signal source (DESIGN.md §7.2): the core/v1 Event informer behind the pkg/sources.Source interface.
|
Package k8sevents is the first signal source (DESIGN.md §7.2): the core/v1 Event informer behind the pkg/sources.Source interface. |
|
sources/notifications
Package notifications is the cluster-notification signal source (post-M5 roadmap C.1, issue #130): the provider's own announcements about the cluster — upgrades starting, upgrades becoming available, security bulletins — read through the §2 cloud boundary (GKE: a Pub/Sub subscription on the cluster's notificationConfig topic).
|
Package notifications is the cluster-notification signal source (post-M5 roadmap C.1, issue #130): the provider's own announcements about the cluster — upgrades starting, upgrades becoming available, security bulletins — read through the §2 cloud boundary (GKE: a Pub/Sub subscription on the cluster's notificationConfig topic). |
|
sources/objectstate
Package objectstate is the object-state signal source (DESIGN.md §7.2 row 2): leading indicators from STATE TRANSITIONS, observed by shared informers on Pods, Nodes, Deployments, EndpointSlices, and PodDisruptionBudgets.
|
Package objectstate is the object-state signal source (DESIGN.md §7.2 row 2): leading indicators from STATE TRANSITIONS, observed by shared informers on Pods, Nodes, Deployments, EndpointSlices, and PodDisruptionBudgets. |
|
sources/quota
Package quota is the quota signal source (DESIGN.md §7.2 row 8, §10.2): a leading countdown over cloud quota exhaustion, deployed ONCE PER GCP PROJECT — fifty clusters in a project must not each poll the quota APIs, so Scope() is Project (§11) and exactly one sentinel per project enables this source.
|
Package quota is the quota signal source (DESIGN.md §7.2 row 8, §10.2): a leading countdown over cloud quota exhaustion, deployed ONCE PER GCP PROJECT — fifty clusters in a project must not each poll the quota APIs, so Scope() is Project (§11) and exactly one sentinel per project enables this source. |
|
sources/rollout
Package rollout is the rollout signal source (DESIGN.md §7.2 row 3): as-it-happens leading indicators from Deployments and StatefulSets with in-progress rollouts.
|
Package rollout is the rollout signal source (DESIGN.md §7.2 row 3): as-it-happens leading indicators from Deployments and StatefulSets with in-progress rollouts. |
|
sources/saturation
Package saturation is the saturation signal source (DESIGN.md §7.2 row 4): trend leading indicators from continuously sampled resource usage — "pod hits memory limit in ~14 min" (slope → ETA), "PVC full in ~3 h".
|
Package saturation is the saturation signal source (DESIGN.md §7.2 row 4): trend leading indicators from continuously sampled resource usage — "pod hits memory limit in ~14 min" (slope → ETA), "PVC full in ~3 h". |
|
sources/tokenburn
Package tokenburn is the token-burn signal source (DESIGN.md §7.2 row 9, §12): token spend as a first-class saturation dimension — a runaway agent loop is an OOM in the currency that matters.
|
Package tokenburn is the token-burn signal source (DESIGN.md §7.2 row 9, §12): token spend as a first-class saturation dimension — a runaway agent loop is an OOM in the currency that matters. |
|
sources/topologydrift
Package topologydrift is the resident source for topology axes: it maintains the per-subject distributions that pkg/leeway scores (docs/leeway-design.md §6).
|
Package topologydrift is the resident source for topology axes: it maintains the per-subject distributions that pkg/leeway scores (docs/leeway-design.md §6). |
|
sources/workload
Package workload is the batch-workload signal source (post-M5 roadmap B.1, issue #129): failed Jobs and CronJobs that stopped being scheduled.
|
Package workload is the batch-workload signal source (post-M5 roadmap B.1, issue #129): failed Jobs and CronJobs that stopped being scheduled. |
|
store
Package store is the sentinel-local raw-occurrence store (DESIGN.md §9.1): ONE bounded, TTL'd embedded SQLite database, living alongside the --dedup-persist file on the same volume, that holds every signal the watch-path pipeline emitted — including info-severity signals that never inject (§7.7) — together with the routing outcome each one received.
|
Package store is the sentinel-local raw-occurrence store (DESIGN.md §9.1): ONE bounded, TTL'd embedded SQLite database, living alongside the --dedup-persist file on the same volume, that holds every signal the watch-path pipeline emitted — including info-severity signals that never inject (§7.7) — together with the routing outcome each one received. |
Click to show internal directories.
Click to hide internal directories.