Skip to content

Commit 405165a

Browse files
committed
release: prepare 0.5.12
1 parent beefb44 commit 405165a

18 files changed

Lines changed: 1376 additions & 17 deletions

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.5.12] — 2026-08-11
11+
12+
This public release includes the internal 0.5.11 FathomDB milestone below,
13+
plus the PII-egress and native-memory resilience work completed in 0.5.12.
14+
15+
### Security
16+
17+
- **PII mutation maps cannot reach an Airlock sink.** Reverse mappings are now
18+
process-local, bounded opaque handles rather than request metadata. Logs,
19+
callbacks, FathomDB records, and error surfaces receive only scrubbed data.
20+
A client response is hydrated from a copy only when its authenticated request
21+
is authorized for that handle.
22+
- **PII egress authorization is available in observe mode.** Airlock records
23+
value-free allow/suppress decisions for rehydrated content, including
24+
allowlist and configured blocklist matches. Operators can configure shadow or
25+
enforce mode after reviewing their own measurements; the release default is
26+
observe, so it does not change existing request outcomes.
27+
- **PII-analysis failure posture is configurable.** `AIRLOCK_PII_FAIL_MODE`
28+
selects explicit open or closed behavior when redaction is unavailable.
29+
30+
### Fixed
31+
32+
- **G-9 native-memory exhaustion.** The default six built-in PII recognizers
33+
(card, SSN, email, phone, US bank, and IBAN) now use Presidio's supported
34+
`NoOpNlpEngine`. They retain pattern/validation recognition and redaction but
35+
no longer run spaCy/Thinc NER unnecessarily on every request. Configurations
36+
that request semantic entities such as `PERSON` keep the full NLP path.
37+
- **Nested health-route startup recovery.** A failed nested health route no
38+
longer leaves the service unable to restart.
39+
- **TUI log loading.** The log viewer now skips syntactically valid JSON values
40+
that are not Airlock event objects instead of crashing its background worker.
41+
- **cgroup memory visibility and guardrails.** Airlock exports cgroup
42+
current/peak/pressure/event telemetry and its service unit supplies explicit
43+
memory protection settings.
44+
45+
### Added
46+
47+
- **Opt-in OOM high-water recorder.** `AIRLOCK_OOM_DIAGNOSTICS=1` produces a
48+
bounded, mode-0600 JSONL artifact containing aggregate allocator, cgroup,
49+
PSI, thread/FD, and client-pool counters — never request/response content,
50+
headers, model names, exception strings, or client metadata. See
51+
`dev/debugging/instrumentation/oom-high-water.md` for the isolated-replay
52+
procedure.
53+
- **Design records for resource permits and circuit-breaker boundaries.** They
54+
specify how a future expensive policy stage is isolated, admitted, and
55+
observed without confusing local capacity with upstream health.
56+
1057
### Internal 0.5.11 milestone (not published, 2026-08-07)
1158

1259
The FathomDB 0.8 milestone: the engine migration and its legacy-file guard,

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ Airlock sits between your developers and LLM providers, giving you visibility an
3131
|---|---|
3232
| **Unified access** | Single OpenAI-compatible endpoint for all providers |
3333
| **Logging** | Every request/response logged as structured JSONL |
34-
| **PII stripping** | Microsoft Presidio scrubs credit cards, SSNs, emails, etc. before they leave the network |
34+
| **PII stripping** | Microsoft Presidio detects and redacts configured entity types (default: credit cards, SSNs, emails, phone numbers); each redaction is recorded in the mutation ledger |
3535
| **Keyword blocking** | Custom blocklist prevents restricted project names or terms from leaking |
36-
| **Budget control** | Per-user/per-team spend limits via LiteLLM virtual keys |
36+
| **Budget control** | Per-provider daily spend caps — near-limit warning, proactive reroute away from a provider approaching its cap, hard block at the limit. Per-tenant keys with per-key budgets are planned, not yet shipped |
3737
| **Multi-tool support** | Works with Cursor, Claude Code, GitHub Copilot, and any OpenAI-compatible client |
3838
| **Self-hosted models** | Route to local vLLM, Ollama, or any OpenAI-compatible endpoint alongside cloud providers |
3939
| **Batch processing** | OpenAI-compatible Batch API (`/v1/files` + `/v1/batches`) for ~50% cheaper async jobs — OpenAI and Vertex AI Gemini (regional) work through the proxy today |
@@ -208,7 +208,7 @@ The main configuration file defines models, callbacks, and guardrails. See the i
208208

209209
Key sections:
210210
- **`model_list`** — which LLM providers/models to expose
211-
- **`litellm_settings`** — callbacks, timeouts, budgets
211+
- **`litellm_settings`** — callbacks, timeouts
212212
- **`router_settings`** — routing strategy, fallbacks, provider budgets
213213
- **`guardrails`** — PII and keyword guards
214214
- **`mcp_servers`** — MCP tool servers (Armada, ADO, etc.) accessible via the proxy

0 commit comments

Comments
 (0)