Architecture

How Ovrin is put together: a flat root package with the implementation in internal/, three provider seams, and a client an extraction never mutates.

The architecture is intentionally simple but strict. The core package defines the seams and orchestrates the flow, while provider-specific implementations live in separate modules.

Key structure

The upstream project’s architecture documentation describes a root package with a set of core files and a set of internal packages for detection, schema parsing, validation, normalization, grounding, scoring, and provider integration.

The design principle

The root package owns the orchestration and public types, while internal packages are implementation detail. That keeps the public API clear and the module boundaries clean.