Decision records
ADR-0023: Remote administration over mutual TLS
- Status: Accepted (2026-10-06)
Context
Handoff §11: the admin API uses a Unix socket by default; remote administration only when explicitly enabled and strongly authenticated (mTLS). ADR-0017 delivered the socket.
Decision
server.admin.remote: {address, cert, key, client_ca}— absent by default. All four fields are required; there is no password or token mode.- TLS 1.3 only, ALPN
http/1.1;WebPkiClientVerifierwith the roots inclient_ca: a connection without a client certificate chaining to that CA fails the handshake and never reaches the router. Refused handshakes are logged underscalws::audit. - Authenticated connections get the same router and privileges as the Unix socket (views and mutations). Every mutation is audited with the client certificate subject and the peer address.
scalwsctl --remote host:port --ca <server CA> --client-cert <pem> --client-key <pem>; every resolved address ofhostis tried.- Changing
admin.remoterequires a restart (topology).
Consequences
- Operators manage a small private CA (issue/revoke by re-issuing the CA bundle; CRLs are
not checked). Restrict
addresswith a firewall as defence in depth.