1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Services should talk to UDB through the UDB-owned gRPC contract, not by reaching
behind the broker into backend-specific databases.
The broker serves gRPC on `UDB_GRPC_ADDR` or the CLI positional serve address.
The local default is:
```text
127.0.0.1:50051
```
gRPC reflection is registered by the server, so standard reflection-aware tools
can inspect the compiled descriptor set.
Every non-health request should carry these headers (exact names — see
`context_from_metadata` in `../src/runtime/service/mod.rs`):
All wrapper SDKs attach these for you from their `Metadata`/`UdbMetadata` object.
Header-scoped permissions should stay disabled in production unless the trust
boundary is explicit (`UDB_ALLOW_HEADER_SCOPES=false`).
The native control-plane services (Authn/Authz/ApiKey/Tenant/Notification/
Analytics) are served on a **separate internal listener** (`UDB_AUTH_GRPC_ADDR`),
not the `DataBroker` endpoint above — see [native-services.md](native-services.md).
- -----
Per-language quickstarts: [root README](../README.md#-quickstart-per-language).
Common client env:
```env
UDB_ENDPOINT=udb.internal:50051
UDB_DEADLINE_MS=30000
UDB_SERVICE_IDENTITY=my.service
UDB_PROJECT_ID=my-project
UDB_DEFAULT_PURPOSE=service.request
UDB_DEFAULT_SCOPES=udb:read,udb:write
```
Use the playground when you need backing services:
```powershell
cargo run --bin udb-proto-parser -- dev up
cargo run --bin udb-proto-parser -- dev smoke
cargo run --bin udb-proto-parser -- dev down
```
Use `cargo run --bin udb-proto-parser -- init` to emit a small project scaffold
with proto, compose, and client examples.