holger-server-lib — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: The holger server core — config graph, wiring engine, gRPC + native-HTTP service, auth, storage, and the in-process Rust API.
- Does: Loads a RON config into a directed graph of
Repository→StorageEndpoint/ExposedEndpointnodes and resolves it viawire_holger(multi-pass: index → forward refs → reverse links → FastRoutes). Serves over gRPC (tonic) and a native HTTP/2 gateway, dispatching throughRepositoryBackendTrait. Modules:grpc,object(LocalHolger/RemoteHolgerimpls ofHolgerObject),repository,storage,exposed(+ fast_routes),auth(mTLS CN + OIDC bearer, TTL token cache),security,proxy,upstream/upstream_rust(pull-through remote-registry cache with sha256 verification),audit(append-only Arrow IPC log). - Key deps: all 16
repository-*backend crates,traits,tonic/prost/hyper,rustls/tokio-rustls/x509-parser(mTLS),reqwest+ureq(async + sync upstream),arrow-array/schema/ipc(audit),blake3/sha2/base64/hex(auth + cache guards),modgunn(security verdict gate, leanscanonly).signfeature forwards to the package repo's provenance verification. - Shape: lib (importable as
holger_server_lib); the largest crate — ~a dozen modules + submodule dirs (audit/, exposed/, storage/, upstream/, generated/ proto). - Observed role in the workspace: The heart of the server. Consumed by server/cli, ui (gui + tests), bench-scenarios (served/comparison). Proto codegen is done out-of-band via
cargo xtask gen-proto(no build.rs).
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: