Skip to content
Alpha: Odal Node is in active development. APIs, schemas and docs will change before 1.0.

Core Concepts

Odal Node’s design follows three rules. Each section links to a fuller page.

The operator’s product data never reaches Odal. The manufacturer validates each passport on its own node, signs it with its own Ed25519 key, and stores it there. The node serves the signed passport: the product data the operator chose to publish, with each field bound to a signature and filtered by the reader’s access rights.

Verifying a passport needs only the signed passport and the manufacturer’s public did:web document. Odal does not need to be online, or to exist.

What Odal can and cannot see covers the data boundary in full.

Regulation in one part, operation in the other

Section titled “Regulation in one part, operation in the other”

Odal Node has two parts under two licences. The core is the regulatory library, open source under Apache-2.0: the rules a compliant passport must satisfy. The engine is the service that runs those rules in production, source-available under BSL-1.1 with a grant that allows self-hosting.

One rule decides where a change belongs. If it changes because an EU regulation changed, it goes in the core. If it changes because of how the system is deployed or operated, it goes in the engine. The engine depends on the core; the core does not depend on the engine.

Licensing covers what each licence allows.

Regulation arrives one product group at a time, and it keeps changing. The core has a single extension point for it: each product group’s compliance logic plugs in there, so new product groups and revised rules are added without changing anything around them. See Product groups & plugins.

To run a node, start with the Quick Start. To use the library on its own, read What the core does. To see how the software maps to the law, start with the ESPR overview.