# Kepler v0.1.0 - Table of Contents

> An event router that lives inside your Elixir app. Declare the occurrences you care about; Kepler enriches them with in-VM context and delivers them to an external consumer.

## Pages

- [Kepler](readme.md)
- [Changelog](changelog.md)

- Guides
  - [Getting started](getting_started.md)
  - [Crash attribution](crash_attribution.md)
  - [Writing watches](writing_watches.md)
  - [Sinks and payloads](sinks_and_payloads.md)
  - [Performance](performance.md)
  - [Testing](testing.md)

## Modules

- [Kepler.Config](Kepler.Config.md): Reads and validates Kepler's application environment.
- [Kepler.DSL](Kepler.DSL.md): The macros behind `use Kepler`.
- [Kepler.Registry](Kepler.Registry.md): Owns everything installed at boot: counters, ring buffers, the `:telemetry`
attachments, and the `:logger` handler behind report sources.
- [Kepler.Supervisor](Kepler.Supervisor.md): Kepler's supervision tree, started for you when the `:kepler` application
boots.

- Declaring watches
  - [Kepler](Kepler.md): An event router that lives inside your application.
  - [Kepler.CompileError](Kepler.CompileError.md): Raised when a `Kepler` declaration cannot be compiled.
  - [Kepler.Context](Kepler.Context.md): The values a `fire when:` condition is evaluated against.
  - [Kepler.Watch](Kepler.Watch.md): A single compiled `watch` declaration.

- Sources
  - [Kepler.SystemMonitor](Kepler.SystemMonitor.md): Tier 0: thresholds the VM enforces on Kepler's behalf.
  - [Kepler.Source.Process](Kepler.Source.Process.md): Tier 2: named processes, read on the tick.
  - [Kepler.Source.Report](Kepler.Source.Report.md): Tier 0: crash and supervisor reports, enriched with what OTP already captured.
  - [Kepler.Source.Telemetry](Kepler.Source.Telemetry.md): Tier 1: telemetry events folded into lock-free counters.
  - [Kepler.Source.VM](Kepler.Source.VM.md): Tier 2: whole-node statistics, read on the tick.

- Events and delivery
  - [Kepler.Event](Kepler.Event.md): The event a watch fires. Kepler's entire output.
  - [Kepler.Sink](Kepler.Sink.md): Where events go.
  - [Kepler.Transport](Kepler.Transport.md): How `Kepler.Sink.Webhook` makes an HTTP request.
  - [Kepler.Sink.Callback](Kepler.Sink.Callback.md): Calls a function in your application with each event.
  - [Kepler.Sink.Webhook](Kepler.Sink.Webhook.md): POSTs each event as JSON to a URL.
  - [Kepler.Transport.Httpc](Kepler.Transport.Httpc.md): The default transport, built on OTP's `:httpc`.

- Internals
  - [Kepler.Budget](Kepler.Budget.md): Kepler measuring its own cost, and shedding work when it exceeds it.
  - [Kepler.Emitter](Kepler.Emitter.md): The bounded queue between a firing watch and the outside world.
  - [Kepler.Histogram](Kepler.Histogram.md): A fixed-layout, allocation-free histogram backed by an `:counters` array.
  - [Kepler.Poller](Kepler.Poller.md): The single process that turns counters into conditions.
  - [Kepler.RingBuffer](Kepler.RingBuffer.md): A fixed-size ring of recent terms, written in O(1) and read only when a
watch fires.
  - [Kepler.Trigger](Kepler.Trigger.md): The debounce state machine behind every watch.

