runlore

module
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2026 License: Apache-2.0

README ยถ

RunLore

RunLore

An open-source SRE agent that investigates incidents โ€” and remembers what it learns.

๐Ÿ“– Read the docs โ†’ runlore.io

Docs CI Nightly eval Go Report Card Go Version Status


RunLore is an open-source SRE agent that investigates any incident โ€” what changed? what's wrong? โ€” and posts a confidence-scored root cause to chat (Slack, Matrixโ€ฆ). It is read-only by default: it reads your cluster, metrics, logs, and network flows โ€” its only writes go to Git, via reviewed PRs.

What sets it apart: it learns your platform. Every investigation opens a PR in a Git repo you own; a human merges it, building a knowledge base of your incidents and context. The same pattern next time gets an instant answer โ€” no fresh investigation.

Learns your platform ยท single Go binary ยท runs in your cluster ยท on your models.

The autonomy ladder. Teams that want more than the read-only default can climb suggest โ†’ approve: even at the top supported rung RunLore only executes reversible GitOps operations after an explicit human approval โ€” a human stays in the loop at every step (see Project status).

Who it's for โ€” SRE and platform teams who want their incident knowledge portable and self-hosted (no lock-in, your models, your data), and would rather an agent say "I don't know" than guess. It shines if you run GitOps (Flux/Argo CD) โ€” RunLore turns "what changed?" into an exact Git diff (and, with an opt-in source-repo allowlist, into the offending commit inside an image bump) โ€” but GitOps isn't required: every data source is pluggable, and an unset one simply disables its tool.

See it in action

Two sides of the same incident, delivered to your chat (shown here in Slack; Matrix delivers the same findings) โ€” the whole point of the learning loop in one place.

First time โ€” a full investigation. A verdict-first summary: the actionability call (no action / suggested / required / inconclusive), the confidence-scored root cause, the alert metadata and recurrence, top-cause "why", suggested next steps, ruled-out hypotheses and data gaps, and a link to the pull request it opened in your knowledge base. With the Slack notifier's bot token, the full analysis lands as a threaded reply under that summary. The footer shows the real cost โ€” model calls and tokens.

Next time โ€” an instant recall. Once that entry is merged, the same incident โ€” even under a different, generic alert โ€” is answered straight from your knowledge base: no investigation, no new PR, just the known cause, the human-reviewed resolution, and the entry's resolve-rate track record. An order of magnitude cheaper (two model calls vs a full ReAct loop), delivered in seconds.

How it works

flowchart LR
    A["Incident<br/>any alert ยท event"] -->|"trigger policy<br/>(prod ยท critical ยท nsโ€ฆ)"| B
    subgraph B["๐Ÿ”Ž Investigate"]
      direction TB
      W["what changed?<br/>deploys ยท infra ยท certs ยท scaling<br/>(GitOps โ†’ exact Git diff)"]
      C["what's wrong?<br/>saturation ยท network ยท nodes ยท deps"]
    end
    B --> R["๐ŸŽฏ Root cause<br/>+ confidence + evidence"]
    R --> D["๐Ÿ’ฌ Chat<br/>(Slack ยท Matrixโ€ฆ)<br/>findings + suggested fix"]
    R -. learn .-> K[("๐Ÿ“š GitHub PR<br/>draft entry in your KB")]
    K -. instant recall .-> B
  1. An event fires โ€” a pluggable source triggers RunLore: an Alertmanager webhook, a GitOps failure event, or any adapter you register.
  2. RunLore investigates โ€” it reads your cluster, metrics, logs, and network flows.
  3. Findings land in chat โ€” ranked root causes with confidence, the evidence trail, and suggested next steps, delivered through a pluggable notifier (Slack, Matrix, a generic webhookโ€ฆ).
  4. A PR opens in your KB repo โ€” RunLore drafts what it found as a knowledge-base entry.
  5. A human reviews and merges โ€” after adding resolution context, the PR is merged. That entry is indexed: the same incident next time gets an instant answer, no re-investigation.

๐Ÿ“ Detailed architecture: docs/architecture/runlore-architecture.md โ€” the full component diagram (the flow above is the summary).

๐Ÿ“š The learning loop

flowchart LR
    R["๐Ÿ”Ž Retrieve<br/>recall a past answer"] --> C["๐Ÿงช Capture<br/>record what happened"]
    C --> U["๐Ÿ“ Curate<br/>write the entry (PR)"]
    U --> P["โ™ป๏ธ Compound<br/>merged note re-indexed"]
    P --> R
    classDef s fill:#eef,stroke:#557,stroke-width:1px,color:#113;
    class R,C,U,P s;

The autonomous alert โ†’ RCA โ†’ chat loop is a commodity. What isn't: a knowledge base that compounds in a catalog you own. Every merged PR becomes a searchable entry โ€” plain markdown in a Git repo you control, PR-reviewed, with full provenance. Knowledge that consistently resolves incidents gains trust; knowledge that keeps failing decays.

An instant recall is never a blind cache hit โ€” three gates stand in front of it: the entry must structurally match the incident (same workload/resource, retrieval score above a floor), it must win by a clear margin over the runner-up entry (ambiguous matches fall through to a full investigation), and its confidence is weighted by its real-world track record โ€” an entry that keeps resolving incidents gains trust, one that keeps failing decays toward re-investigation. Even then, the recalled finding goes through the same adversarial verify pass as a fresh one; the shipped eval suite includes a poisoned-entry scenario proving a bad entry is rejected at recall time.

โ†’ How the learning loop works ยท Reviewing & approving knowledge

[!NOTE] What about "PR fatigue"?

The question comes up fast: if a team had no time to document incidents yesterday, who reviews AI-drafted PRs tomorrow? That's the bet, and it is a deliberate one โ€” the review is what separates a memory you own from a dump of LLM output.

The volume is bounded by design. A known incident produces no PR at all (it is served from the catalog โ€” recalled findings are never curated); a duplicate is dropped; an incident that already has an open PR gets a comment on it rather than a new one. Only a novel, verified finding above forge.min_confidence (0.75), carrying evidence and a change-ref or a suggested action, ever becomes a PR.

And nothing says you review by hand. Keep an agent in the loop during the diagnosis itself: have it cross-check RunLore's draft against what you found while resolving the incident, and enrich it with your context. You keep the decision โ€” not the line-by-line reading.

Optionally, put an agent on the queue. The kb-steward skill triages open KB PRs from your terminal โ€” quality and duplicate check per PR, a merge / refine / close call with the concrete fix, and a pointer at the volume levers (forge.skip_verdicts, min_confidence, dup_score) when the queue is systematically noisy. It recommends; you merge. Install is two commands, no binary:

/plugin marketplace add Smana/runlore
/plugin install kb-steward@runlore

๐Ÿ”Œ Supported integrations

Every backend is pluggable behind an interface โ€” wire what you run; an unset source just disables its tool. GitOps (Flux / Argo CD) anchors the what-changed spine; everything else is optional and additive. Full setup detail in Data sources.

Category Supported Config
GitOps โ€” what changed Flux ยท Argo CD gitops.engine
Metrics VictoriaMetrics ยท Prometheus (PromQL) metrics.url
Logs VictoriaLogs (LogsQL) logs.url
Network flows Cilium Hubble ยท AWS VPC Flow Logs ยท GCP Firewall Logs network.provider
Cloud AWS โ€” CloudTrail + EC2 / ASG / EKS cloud.provider
Kubernetes client-go โ€” pod status, events, controller logs (in-cluster)
LLM Anthropic ยท Google Gemini ยท any OpenAI-compatible (vLLM, Ollama, OpenRouterโ€ฆ) model.provider
Triggers (sources) Alertmanager webhook ยท GitOps failures ยท PagerDuty webhook (new) sources.*
Notifiers Slack (bot token: threaded summary + detail; opt-in ๐Ÿ‘/๐Ÿ‘Ž buttons) ยท Matrix (opt-in ๐Ÿ‘/๐Ÿ‘Ž reactions) โ€” both feed the learning loop ยท Slack incoming webhook / generic webhook (single verdict-first message) notify.*
Knowledge base (git forge) GitHub (App auth) forge.*
MCP Server โ€” query your KB from Claude Code / any MCP client ยท Client โ€” wire external MCP tool servers into investigations (allowlist-gated) mcp.*

โšก Try it in one minute โ€” no cluster, no keys

Before you wire up a cluster, see the front of the pipeline for yourself. This runs lore serve locally with a keyless demo config and fires a batch of mocked Alertmanager alerts at it โ€” no Kubernetes, no LLM, no credentials. You only need Go and curl:

hack/demo.sh

It builds the binary, starts the server, POSTs examples/alertmanager-webhook.json to the webhook, and prints the trigger policy deciding which alerts become incidents:

=== trigger-policy decisions ===
msg=incident alert=HarborProbeFailure severity=critical namespace=apps investigate=true  reason="matched trigger policy"
msg=incident alert=HarborProbeFailure severity=critical namespace=apps investigate=false reason="deduplicated (still-firing)"
msg=incident alert=NoisyWarn        severity=warning  namespace=apps investigate=false reason="filtered by trigger policy"
msg=incident alert=StagingCrit      severity=critical namespace=apps investigate=false reason="filtered by trigger policy"
msg=incident alert=Watchdog         severity=critical namespace=apps investigate=false reason="filtered by trigger policy"

That's one alert admitted (critical + prod), the rest correctly deduped, severity-filtered, environment-filtered, and ignore-listed โ€” the exact gate that controls noise and LLM cost in production. The demo stops there: a full investigation (root cause โ†’ chat โ†’ PR) needs a real cluster, an LLM, and a knowledge base, which is the production install below. To exercise every feature end-to-end on a throwaway cluster, hack/e2e-k3d.sh spins one up with k3d.

๐Ÿš€ Getting started (production install)

Ready to point it at real incidents? RunLore runs in your Kubernetes cluster as a single Go binary, deployed via Helm. Before installing, you need:

  • Data sources โ€” at least one wired source (each is pluggable, an unset one just disables its tool); for the what-changed anchor, a cluster running Flux or Argo CD, plus optionally Prometheus/VictoriaMetrics, VictoriaLogs, Hubble for richer signals
  • An LLM โ€” any OpenAI-compatible endpoint, Anthropic, or Gemini (in-cluster or external)
  • A knowledge-base repo โ€” a private GitHub repo + a scoped GitHub App; this is where RunLore commits what it learns
  • A notification destination โ€” a pluggable notifier: Slack, Matrix, a generic outgoing webhook, or your own

Wire your credentials into a Kubernetes Secret, point the chart at them via a values.yaml (GitOps engine, LLM endpoint, KB repo, notification), and install:

helm install runlore oci://ghcr.io/smana/charts/runlore -n runlore --create-namespace -f values.yaml

The chart is an OCI artifact on GHCR โ€” no git clone, no helm repo add. It is published and cosign-signed on every release; pin a version with --version X.Y.Z. A minimal starting point for values.yaml is deploy/helm/runlore/values-minimal.yaml. Working from a clone (dev alternative): helm install runlore deploy/helm/runlore -n runlore --create-namespace -f values.yaml.

Then point a source at RunLore โ€” for example, route your Alertmanager alerts to http://runlore.runlore.svc:8080/webhook/alertmanager โ€” and it starts investigating immediately.

โ†’ Full getting-started guide โ€” KB repo setup, GitHub App, credentials, complete values.yaml reference, data sources, and verification steps.

Why RunLore

What it is What RunLore adds
k8sgpt A detector โ€” analyzers + LLM explanation An investigation loop, cross-signal correlation, real Git diffs, and learning
HolmesGPT The strongest OSS investigation agent Relies on your hand-curated runbooks (it doesn't learn); RunLore is what-changed-first and self-improving
kagent A generic in-cluster agent framework A focused, opinionated SRE agent (RunLore can run on kagent later)

RunLore is GitOps-engine-agnostic (Flux + Argo CD), metrics-backend-agnostic (VictoriaMetrics + Prometheus), with pluggable logs and CNI-agnostic network signals. Change-aware RCA isn't unique โ€” commercial tools (Komodor, Anyshift) diff changes too (prior art). The wedge is the combination the open tools don't have: that signal feeding an open, portable catalog you own โ€” OKF-compatible markdown, not a proprietary store; as far as we know RunLore is the first agent that produces OKF entries from its own investigations โ€” from an agent that's honest about the sub-50% reality:

Project status & stability

RunLore is pre-1.0 and under active development โ€” interfaces and config may shift between commits. It's usable today, but "stable" means different things across the surface:

  • The supported golden path is eval-tested and stable. That's Flux + VictoriaMetrics / Prometheus + an Anthropic or OpenAI-compatible model + a chat notifier (Slack in the eval) + GitHub for the knowledge base. This is the path the nightly eval and the k3d e2e suite exercise โ€” run it with confidence.
  • Argo CD is now end-to-end tested, alongside Flux โ€” including the approve rung: the k3d suite reconfigures to the argocd engine, drives an Application Degraded failure through a full investigation, then human-approves a pause-auto-sync action that executes reversibly (the prior syncPolicy.automated is preserved for resume). Both engines share the same reversible-only, allowlisted action envelope.
  • Functional but less exercised: Matrix, Gemini, the PagerDuty webhook source, cloud integrations, and the network (Hubble) provider. They work and are unit-tested, but see less real-world mileage โ€” expect rougher edges and please file issues.
  • The auto autonomy rung is experimental, frozen, and not recommended on real clusters. The supported posture is read-only โ†’ suggest โ†’ approve: RunLore reads and recommends, a human reviews and merges. Hands-off auto remains on the roadmap, off by default, and should not be pointed at production.

If you stay on the golden path with a human in the approval loop, you're on the surface we test hardest.

Docs

๐Ÿ“ Design ยท ๐Ÿ“š Learning loop ยท โœ… Reviewing knowledge ยท ๐Ÿง‘โ€๐Ÿ”ง KB steward skill ยท ๐Ÿš€ Getting started ยท ๐Ÿงช Worked example ยท ๐Ÿ”Œ Data sources ยท โš™๏ธ Configuration ยท ๐Ÿ”— MCP โ€” server & client ยท ๐Ÿ“Š Observability ยท ๐Ÿฉบ Troubleshooting ยท ๐Ÿ”’ Security model ยท ๐Ÿ›ก LLM security architecture ยท โฌ†๏ธ Upgrade & uninstall ยท ๐Ÿงญ Prior art ยท ๐Ÿ“Š Benchmarking models ยท ๐Ÿงฎ Nightly eval scorecard ยท ๐Ÿ›  Contributing

License

Apache-2.0.

Directories ยถ

Path Synopsis
cmd
lore command
Command lore is the RunLore CLI and in-cluster agent entrypoint.
Command lore is the RunLore CLI and in-cluster agent entrypoint.
internal
action
Package action gates proposed remediations against the autonomy-ladder policy (config.actions: off | suggest | approve | auto).
Package action gates proposed remediations against the autonomy-ladder policy (config.actions: off | suggest | approve | auto).
app
Package app holds the dependency-injection builders and config predicates that assemble the RunLore agent.
Package app holds the dependency-injection builders and config predicates that assemble the RunLore agent.
audit
Package audit provides an append-only, tamper-evident record of every action the agent attempts โ€” the accountability backbone for the autonomy ladder.
Package audit provides an append-only, tamper-evident record of every action the agent attempts โ€” the accountability backbone for the autonomy ladder.
catalog
Package catalog loads and searches an OKF knowledge catalog (a directory of markdown files with YAML frontmatter) โ€” the read half of RunLore's Learn pillar.
Package catalog loads and searches an OKF knowledge catalog (a directory of markdown files with YAML frontmatter) โ€” the read half of RunLore's Learn pillar.
coalesce
Package coalesce folds correlated Alertmanager incidents into a single investigation, suppressing the redundant per-alert investigations a storm would otherwise spawn.
Package coalesce folds correlated Alertmanager incidents into a single investigation, suppressing the redundant per-alert investigations a storm would otherwise spawn.
config
Package config defines RunLore's configuration, including provider wiring and the trigger policy that decides which incidents start an investigation.
Package config defines RunLore's configuration, including provider wiring and the trigger policy that decides which incidents start an investigation.
curate
Package curate is the Phase-2 grooming agent: it dedups the KB backlog, gates the decision-ready queue on incident resolution, surfaces recurring blind spots as knowledge-gap issues, and drives lifecycle/decay.
Package curate is the Phase-2 grooming agent: it dedups the KB backlog, gates the decision-ready queue on incident resolution, surfaces recurring blind spots as knowledge-gap issues, and drives lifecycle/decay.
curator
Package curator is the file-time learning gate: it dedups a finding against the catalog and open PRs, gates on quality, and drafts a merge-ready PR for novel, quality findings.
Package curator is the file-time learning gate: it dedups a finding against the catalog and open PRs, gates on quality, and drafts a merge-ready PR for novel, quality findings.
embed
Package embed provides an OpenAI-compatible embeddings client and the similarity + fusion primitives for hybrid (BM25 + vector) catalog retrieval.
Package embed provides an OpenAI-compatible embeddings client and the similarity + fusion primitives for hybrid (BM25 + vector) catalog retrieval.
eval
Package eval replays recorded incident cases through the investigation loop and scores whether the agent identifies the root cause โ€” a reproducible RCA benchmark (cf.
Package eval replays recorded incident cases through the investigation loop and scores whether the agent identifies the root cause โ€” a reproducible RCA benchmark (cf.
executor/argocd
Package argocd executes safe, reversible Argo CD operations on Application CRs โ€” the Argo half of the autonomy ladder's executable rungs, mirroring internal/executor/flux.
Package argocd executes safe, reversible Argo CD operations on Application CRs โ€” the Argo half of the autonomy ladder's executable rungs, mirroring internal/executor/flux.
executor/flux
Package flux executes safe, reversible Flux operations (suspend / resume / reconcile) on the cluster โ€” the executable half of the autonomy ladder.
Package flux executes safe, reversible Flux operations (suspend / resume / reconcile) on the cluster โ€” the executable half of the autonomy ladder.
forge/github
Package github is RunLore's GitHub forge client (curation + re-investigation) over the GitHub REST API, authenticated with short-lived GitHub App installation tokens.
Package github is RunLore's GitHub forge client (curation + re-investigation) over the GitHub REST API, authenticated with short-lived GitHub App installation tokens.
httpx
Package httpx provides small HTTP helpers shared across providers.
Package httpx provides small HTTP helpers shared across providers.
investigate
Package investigate routes triggers (incident alerts, GitOps failures) into a single async investigation queue and runs them.
Package investigate routes triggers (incident alerts, GitOps failures) into a single async investigation queue and runs them.
kbimport
Package kbimport converts existing markdown runbooks/postmortems into OKF-compatible catalog entries โ€” the cold-start answer: deterministic frontmatter inference (Infer), dedup against the live catalog (Plan), and an optional LLM refinement (Enrich).
Package kbimport converts existing markdown runbooks/postmortems into OKF-compatible catalog entries โ€” the cold-start answer: deterministic frontmatter inference (Infer), dedup against the live catalog (Plan), and an optional LLM refinement (Enrich).
kbmcp
Package kbmcp exposes the OKF knowledge catalog as MCP tools (kb_search, kb_get) for the `lore mcp` stdio server โ€” so any MCP client (Claude Code, HolmesGPT, editors) can recall RunLore's learned incident knowledge without a cluster or a model.
Package kbmcp exposes the OKF knowledge catalog as MCP tools (kb_search, kb_get) for the `lore mcp` stdio server โ€” so any MCP client (Claude Code, HolmesGPT, editors) can recall RunLore's learned incident knowledge without a cluster or a model.
kbvalidate
Package kbvalidate provides deterministic structural validation of OKF knowledge-base entries (the merge gate) and an LLM-assisted semantic advisory.
Package kbvalidate provides deterministic structural validation of OKF knowledge-base entries (the merge gate) and an LLM-assisted semantic advisory.
logging
Package logging builds RunLore's slog logger with a configurable output format (human-readable text or structured JSON) and verbosity level.
Package logging builds RunLore's slog logger with a configurable output format (human-readable text or structured JSON) and verbosity level.
logs
Package logs hosts the backend-agnostic pieces of the logs data source; the concrete clients live in the victorialogs and loki sub-packages.
Package logs hosts the backend-agnostic pieces of the logs data source; the concrete clients live in the victorialogs and loki sub-packages.
logs/loki
Package loki implements providers.LogsProvider against Grafana Loki, querying with LogQL over /loki/api/v1/* and normalizing the streams response into log lines.
Package loki implements providers.LogsProvider against Grafana Loki, querying with LogQL over /loki/api/v1/* and normalizing the streams response into log lines.
logs/victorialogs
Package victorialogs implements providers.LogsProvider against VictoriaLogs, querying with LogsQL and normalizing the NDJSON response into log lines.
Package victorialogs implements providers.LogsProvider against VictoriaLogs, querying with LogsQL and normalizing the NDJSON response into log lines.
mcp
Package mcp is a minimal Model Context Protocol server over the stdio transport (newline-delimited JSON-RPC 2.0) โ€” enough to expose RunLore tools to MCP clients such as HolmesGPT, kagent, or Claude Desktop.
Package mcp is a minimal Model Context Protocol server over the stdio transport (newline-delimited JSON-RPC 2.0) โ€” enough to expose RunLore tools to MCP clients such as HolmesGPT, kagent, or Claude Desktop.
metrics/prometheus
Package prometheus implements providers.MetricsProvider against the Prometheus HTTP API โ€” also spoken by VictoriaMetrics โ€” for instant and range PromQL queries.
Package prometheus implements providers.MetricsProvider against the Prometheus HTTP API โ€” also spoken by VictoriaMetrics โ€” for instant and range PromQL queries.
model/anthropic
Package anthropic implements providers.ModelProvider against the Anthropic Messages API (native tool use).
Package anthropic implements providers.ModelProvider against the Anthropic Messages API (native tool use).
model/clientcore
Package clientcore provides the plumbing shared by the hand-rolled model provider clients (anthropic, gemini, openai): common construction defaults, the streaming request pipeline (retry, status classification, idle-timeout guard), SSE event decoding, and error-detail sanitization.
Package clientcore provides the plumbing shared by the hand-rolled model provider clients (anthropic, gemini, openai): common construction defaults, the streaming request pipeline (retry, status classification, idle-timeout guard), SSE event decoding, and error-detail sanitization.
model/gemini
Package gemini implements providers.ModelProvider against the Gemini API (streamGenerateContent with native function calling).
Package gemini implements providers.ModelProvider against the Gemini API (streamGenerateContent with native function calling).
model/openai
Package openai implements providers.ModelProvider against an OpenAI-compatible /chat/completions endpoint (OpenAI, in-cluster vLLM, Ollama, OpenRouter).
Package openai implements providers.ModelProvider against an OpenAI-compatible /chat/completions endpoint (OpenAI, in-cluster vLLM, Ollama, OpenRouter).
network/awsvpc
Package awsvpc implements providers.NetworkProvider against AWS VPC Flow Logs delivered to a CloudWatch Logs group, surfacing REJECT (denied) flows for an investigation.
Package awsvpc implements providers.NetworkProvider against AWS VPC Flow Logs delivered to a CloudWatch Logs group, surfacing REJECT (denied) flows for an investigation.
network/gcpfirewall
Package gcpfirewall implements providers.NetworkProvider against GCP Firewall Rules Logging, surfacing DENIED connections for an investigation.
Package gcpfirewall implements providers.NetworkProvider against GCP Firewall Rules Logging, surfacing DENIED connections for an investigation.
network/hubble
Package hubble implements providers.NetworkProvider against Cilium Hubble Relay (the observer gRPC API), surfacing dropped flows for an investigation.
Package hubble implements providers.NetworkProvider against Cilium Hubble Relay (the observer gRPC API), surfacing dropped flows for an investigation.
notify
Package notify delivers completed investigations to chat (Slack, Matrix).
Package notify delivers completed investigations to chat (Slack, Matrix).
notify/templated
Package templated is a config-only generic notifier: it renders a user-supplied Go text/template over notify.Payload and POSTs the result to any endpoint (Teams, Discord, ntfy, incident.io, โ€ฆ).
Package templated is a config-only generic notifier: it renders a user-supplied Go text/template over notify.Payload and POSTs the result to any endpoint (Teams, Discord, ntfy, incident.io, โ€ฆ).
notify/webhook
Package webhook is a generic outgoing-webhook notifier: it POSTs each investigation's findings as JSON to an operator-configured URL.
Package webhook is a generic outgoing-webhook notifier: it POSTs each investigation's findings as JSON to an operator-configured URL.
okf
Package okf serializes providers.KBEntry values as OKF markdown files (YAML frontmatter + body).
Package okf serializes providers.KBEntry values as OKF markdown files (YAML frontmatter + body).
outcome
Package outcome records, in an append-only JSONL ledger, whether an investigated incident later resolved and which answer was used for it โ€” the "did it actually work?" signal the learning loop reads.
Package outcome records, in an append-only JSONL ledger, whether an investigated incident later resolved and which answer was used for it โ€” the "did it actually work?" signal the learning loop reads.
providers
Package providers defines the pluggable backend contracts RunLore is built on.
Package providers defines the pluggable backend contracts RunLore is built on.
providers/cloud/aws
Package aws implements providers.CloudProvider against AWS using aws-sdk-go-v2 and in-cluster identity (EKS Pod Identity / IRSA, resolved by the SDK's default credential chain).
Package aws implements providers.CloudProvider against AWS using aws-sdk-go-v2 and in-cluster identity (EKS Pod Identity / IRSA, resolved by the SDK's default credential chain).
providers/cluster
Package cluster reads Kubernetes pod logs for investigation (read-only) via the client-go CoreV1 GetLogs API.
Package cluster reads Kubernetes pod logs for investigation (read-only) via the client-go CoreV1 GetLogs API.
providers/gitops/argocd
Package argocd implements providers.GitOpsProvider for Argo CD: it reads Argo CD Applications from the cluster and emits engine-agnostic Changes (diffable via whatchanged.Differ) and failure events โ€” the same contract as the flux package.
Package argocd implements providers.GitOpsProvider for Argo CD: it reads Argo CD Applications from the cluster and emits engine-agnostic Changes (diffable via whatchanged.Differ) and failure events โ€” the same contract as the flux package.
providers/gitops/flux
Package flux implements providers.GitOpsProvider for Flux: it reads Flux Kustomizations and their GitRepository sources from the cluster and emits engine-agnostic Changes, each diffable through whatchanged.Differ.
Package flux implements providers.GitOpsProvider for Flux: it reads Flux Kustomizations and their GitRepository sources from the cluster and emits engine-agnostic Changes, each diffable through whatchanged.Differ.
ratelimit
Package ratelimit provides a sliding-window start limiter โ€” the windowed timestamp pattern from internal/action/auto.go:reserve(), reusable.
Package ratelimit provides a sliding-window start limiter โ€” the windowed timestamp pattern from internal/action/auto.go:reserve(), reusable.
redact
Package redact masks secret-shaped values in free text before it crosses a trust boundary โ€” specifically before tool output (pod/controller logs, git diffs, status/event messages) is fed to the LLM provider, from where the model's quoted evidence would otherwise flow on into a (possibly public) KB pull request and chat.
Package redact masks secret-shaped values in free text before it crosses a trust boundary โ€” specifically before tool output (pod/controller logs, git diffs, status/event messages) is fed to the LLM provider, from where the model's quoted evidence would otherwise flow on into a (possibly public) KB pull request and chat.
server
Package server exposes RunLore's HTTP endpoints (incident webhooks).
Package server exposes RunLore's HTTP endpoints (incident webhooks).
source
Package source registers event-source adapters and runs their core-owned transports.
Package source registers event-source adapters and runs their core-owned transports.
source/alertmanager
Package alertmanager is the Alertmanager/VMAlert webhook source adapter.
Package alertmanager is the Alertmanager/VMAlert webhook source adapter.
source/custom
Package custom is the config-only generic webhook source: operators map any vendor's alert JSON to investigation requests with dot-path field extraction (sources.custom.instances.<name>), no Go required.
Package custom is the config-only generic webhook source: operators map any vendor's alert JSON to investigation requests with dot-path field extraction (sources.custom.instances.<name>), no Go required.
source/gitops
Package gitops is the GitOps-failure watcher source adapter (Flux/Argo CD).
Package gitops is the GitOps-failure watcher source adapter (Flux/Argo CD).
source/pagerduty
Package pagerduty is the PagerDuty V3 webhook source adapter.
Package pagerduty is the PagerDuty V3 webhook source adapter.
sourcerepo
Package sourcerepo gates which source repositories the source_diff investigation tool may clone.
Package sourcerepo gates which source repositories the source_diff investigation tool may clone.
telemetry
Package telemetry provides RunLore's self-instrumentation: an OpenTelemetry metric set plus a Prometheus-exporter HTTP handler.
Package telemetry provides RunLore's self-instrumentation: an OpenTelemetry metric set plus a Prometheus-exporter HTTP handler.
trigger
Package trigger ingests incidents (Alertmanager/VMAlert webhooks) and decides, per the configured policy, which ones start an investigation.
Package trigger ingests incidents (Alertmanager/VMAlert webhooks) and decides, per the configured policy, which ones start an investigation.
whatchanged
Package whatchanged produces the "what changed" delta between two GitOps revisions: a path-scoped unified diff (the actual landed change).
Package whatchanged produces the "what changed" delta between two GitOps revisions: a path-scoped unified diff (the actual landed change).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL