Proto in, typed responses out
UDB is a broker over external databases — backends own data replication; UDB owns the contract, routing, tenant isolation, control-plane state, CDC, sagas, and SDKs. One descriptor drives build-time generation and runtime enforcement, so docs, SDKs, and behavior can’t drift.
The descriptor is the contract
Proto plus the embedded descriptor manifest is the one product contract for RPCs, DTOs, table/column security, endpoint security, SDK metadata, CLI scaffolds, events, native service ids, and docs. Runtime decodes it and fails closed if it can’t.
You own the model
Describe entities in normal .proto files and annotate where data lives and how it’s secured.
Generation
The parser builds a deterministic catalog manifest → DDL/RLS, migrations, SDKs, CLI scaffolds, and generated docs.
Runtime enforcement
The same descriptor drives the method-security tower layer, redaction, event contracts, and capability reporting.
What happens on every call
- 1Authenticate — bearer JWT, session, API key, or federated identity; mTLS SAN where configured.
- 2Authorize — one engine for RBAC + ABAC + ReBAC over Casbin, with explicit-deny-wins and a deterministic
decision_id. - 3Admission — per-tenant fair channels, concurrency limits, and bounded-queue backpressure.
- 4Neutral IR — the request compiles to a backend-agnostic intermediate representation.
- 5Execute — the right executor speaks the backend dialect; RLS context is applied with
SET LOCAL. - 6Emit & audit — typed response back; events to the transactional outbox; a redacted compliance envelope to audit.
Data plane and a network-isolated control plane
| Plane | Listener | Surface | RPCs |
|---|---|---|---|
| Data plane | Public DataBroker | Relational, vector, object, cache, document, graph, time-series, analytical; transactions, CDC, catalog, migration, saga | 76 |
| Control plane | Isolated UDB_AUTH_GRPC_ADDR | 15 native services — authn, authz, API keys, IdP, tenant, notification, analytics, storage, asset, WebRTC, policy distribution | 186 |
The control plane is PEP-frontable and serves the public plane via
Authorize/GetNativeAccess. Runtime domain modules own the business
engines; service modules only adapt them to gRPC.