Skip to content
Registry StackDocsv0.20.0

Connect an existing registry

View as Markdown

Registry Relay publishes an institution’s records from one reviewed contract, not from the shape of its database. Connecting a registry is therefore an authoring task: choose which views, records, operations, callers, and properties the contract admits, then prove that choice before an operator ever sees it. Registry Stack does not infer access policy, safe fields, or published meaning from source data.

Relay reads read-only SQLite and nothing else. The institution decides in SQL what leaves the system of record, and the contract then decides what leaves the API. Only views can be bound as sources, so a raw table never becomes a route.

relayctl inspect reports the structure you are allowed to reason about: objects, columns, declared types, nullability, key membership, and a schema fingerprint. It reads no row values, and it offers no option to sample, limit, or print them.

Choose the source profile the institution can actually operate:

PropertySnapshotLive read-only
Publisher updates while Relay runsNoYes, through a separate trusted publisher
Source revisionCaptured content digestExplicitly unversioned
Available operationsEvery declared operationIdentifier read and named exact lookup

registry.yaml is the governed agreement. It carries Registry identity and metadata, governance records, semantics, classifications, source bindings, resources with their operations and access profiles, and any statistical datasets. Every key is closed: an unknown field is a refusal, not a silently ignored line.

runtime.yaml is the operator’s file. It binds local paths, the listener, token issuers, audit storage, cursor keys, limits, and quotas. It cannot add a resource, enable an operation, widen an access profile, change a classification, or relax disclosure.

Keep authored and generated files separate

Section titled “Keep authored and generated files separate”

You own registry.yaml, runtime.yaml, the governance/, codelists/, and semantics/ files the contract references, and the synthetic fixtures. relayctl generate owns its artifact directory and relayctl package owns the sealed package directory. Both refuse a destination that already holds content instead of overwriting it, so a generated tree is always the product of exactly one run.

Fixtures are synthetic and never authorize a live network request. relayctl test replays the project’s expected requests through the same compiled router the service uses, offline.