How jvantuyl/snippy works
Snippy is an Elixir library that discovers certificate/key bundles from environment variables, decodes and validates them, caches usable groups, and produces TLS configuration. The principal workflow is: application calls the public API; the shared store scans and groups environment entries; materialization decodes files or PEM and validates certificates; lookup resolves hostname/SNI scope; helpers return options consumed by TLS listeners or framework adapters. The graph reflects sampled runtime modules and README capabilities; some adapter internals were not sampled.
Components 16
Public API
- Snippy API
lib/snippy.ex - Framework Adapters
lib/snippy.ex
Discovery Validation
- Environment Scanner
lib/snippy/discovery.ex - Group Materializer
lib/snippy/discovery.ex - PEM Decoder
lib/snippy/decoder.ex
Runtime State
- Certificate Store
lib/snippy/store.ex - ETS Certificate Table
lib/snippy/table_owner.ex - OTP Supervisor
lib/snippy/application.ex
TLS Resolution
- Certificate Lookup
lib/snippy/lookup.ex - Hostname Matching
lib/snippy/wildcard.ex - SNI Resolver
lib/snippy/lookup.ex
Other components
- Application
- Environment Variables
- PEM Files
- CAStore Bundle
- TLS Listener
Connections 18
- Application → Snippy API: calls helpers
- Snippy API → Certificate Store: discovers groups
- Certificate Store → Environment Scanner: scans environment
- Certificate Store → Group Materializer: materializes groups
- Environment Variables → Environment Scanner: provides variables
- Group Materializer → PEM Decoder: decodes material
- PEM Decoder → PEM Files: reads files
- PEM Decoder → CAStore Bundle: validates chain
- Certificate Store → ETS Certificate Table: caches state
- OTP Supervisor → ETS Certificate Table: starts owner
- OTP Supervisor → Certificate Store: starts store
- Snippy API → Certificate Lookup: resolves groups
- Certificate Lookup → Hostname Matching: matches hostnames
- Snippy API → SNI Resolver: builds callback
- Certificate Lookup → SNI Resolver: provides matches
- Snippy API → Framework Adapters: formats options
- Framework Adapters → TLS Listener: supplies TLS config
- TLS Listener → SNI Resolver: requests certificate