Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,11 @@ an identity rule binding transport config.
web console — see [`docs/SECURITY.md`](docs/SECURITY.md)): local + AD (LDAP/Kerberos) users, fixed
built-in roles, deny-by-default per-route permissions, opaque sessions, native TOTP MFA + browser
WebAuthn passkeys (WP-14/WP-14b, ADR 0068 — `[webauthn]` extra) for local
accounts (AD MFA delegated), full audit. The API still
binds `127.0.0.1` by default; remote **TLS** exposure is later.
accounts (AD MFA delegated), full audit. The API binds `127.0.0.1` by default and **always
serves TLS** ([ADR 0172](docs/adr/0172-the-engine-always-serves-tls-minting-a-self-signed-certificate-on-first-run.md)):
an operator-supplied `[api].tls_cert_file` wins if set, otherwise the engine mints and reuses a
self-signed pair on first run. Remote network exposure (opening the bind beyond loopback) is
still a separate, later question from whether the hop itself is encrypted.

**Staged pipeline (ADR 0001, Step B).** The store is a **generic staged queue** on SQLite (WAL)
with a `stage` discriminator. A received message flows through three persisted stages: **`ingress`**
Expand Down
6 changes: 4 additions & 2 deletions messagefoundry/api/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
Authentication + RBAC are enforced whenever an enabled :class:`AuthService` is attached (the
``serve`` path always attaches one). With **no** auth attached the routes are **fail-closed** (403)
unless the app explicitly opts out via ``allow_no_auth=True`` (embedding / dev), in which case
requests run as the full-access system identity (SYS-1). The API still binds localhost by default;
remote exposure (TLS) is later.
requests run as the full-access system identity (SYS-1). The API binds localhost by default and
always serves TLS (ADR 0172): an operator-supplied certificate wins if configured, otherwise the
engine mints and reuses a self-signed pair on first run. Remote network exposure (opening the
bind beyond loopback) is a separate, later question from whether the hop is encrypted.
"""

from __future__ import annotations
Expand Down
Loading