@@ -182,8 +182,8 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
182182 — allow/deny lists, authorization, rate-limit, concurrency-limit,
183183 message-length, time-window, a kill switch — and a denied request is
184184 rejected and recorded to a decision audit log. It's opt-in: out of the box
185- the gateway is permissive and logs a startup warning telling you to install
186- an enforcing one for production, so you turn governance <em >on</em > rather
185+ the gateway is permissive and logs a warning on the first call telling you to
186+ install an enforcing one for production, so you turn governance <em >on</em > rather
187187 than discovering it was off.
188188 </p >
189189 <p >
@@ -207,8 +207,10 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
207207 </p >
208208 <p >
209209 You write those policies programmatically, or — if you'd rather keep them
210- declarative — in <strong >AWS Cedar</strong > or <strong >OPA Rego</strong >
211- (<code >ai-policy-cedar</code >, <code >ai-policy-rego</code >). And the decision
210+ declarative — in <strong >AWS Cedar</strong > or <strong >OPA Rego</strong > via
211+ adapters over the engines' own CLIs (<code >ai-policy-cedar</code >,
212+ <code >ai-policy-rego</code >; you install the <code >cedar</code > or
213+ <code >opa</code > binary). And the decision
212214 log isn't only in memory: point it at <strong >Kafka</strong > or
213215 <strong >Postgres</strong > (<code >ai-audit-kafka</code >,
214216 <code >ai-audit-postgres</code >) and every admit and deny is persisted for the
@@ -349,8 +351,9 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
349351
350352 <h2 >Bring an agent you already have: OpenClaw-compatible</h2 >
351353 <p >
352- An agent doesn't have to be Java to run here. Atmosphere treats an agent as an
353- artifact — a directory of Markdown — and reads the
354+ An agent's persona doesn't have to be written in Java. Atmosphere treats an
355+ agent as an artifact — a directory of Markdown — that a small Java
356+ <code >@Agent</code > host loads, reading the
354357 <strong >OpenClaw</strong > canonical workspace layout directly:
355358 <code >AGENTS.md</code >, <code >SOUL.md</code >, <code >USER.md</code >,
356359 <code >IDENTITY.md</code >, and the <code >skills/</code > tree. Point Atmosphere at an
@@ -397,19 +400,22 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
397400 One principle shaped the whole design: a runtime only advertises a capability
398401 it actually performs. Each adapter's capability set — drawn from a vocabulary of
399402 twenty-one — is pinned by a contract test, so an adapter's <code >capabilities()</code > can't
400- claim a feature the bytecode doesn't do. When I added native structured
403+ silently drift from what it declares, and the built-in runtime's native
404+ paths are checked behaviorally. When I added native structured
401405 output, the three runtimes whose wire protocol has no schema field simply
402- don't declare it — saying otherwise is a lie the build won't let me ship . If
406+ don't declare it. If
403407 you've been burned by frameworks that promise more than they deliver,
404408 that's the part I cared about most.
405409 </p >
406410
407411 <h2 >Try it</h2 >
408412 <p >
409413 Getting started is one dependency. Add
410- <code >atmosphere-spring-boot-starter</code > and a single
411- <code >@Agent</code >-annotated class is a running, streaming chat app —
412- the starter auto-configures the framework, the AI pipeline, and the Console.
414+ <code >atmosphere-ai-spring-boot-starter</code > and a single
415+ <code >@Agent</code >-annotated class is a running, streaming chat app — it
416+ pulls the transport, the AI pipeline, and the agent layer, and auto-configures
417+ the framework and the Console. (Transport only, no AI? Use the lean
418+ <code >atmosphere-spring-boot-starter</code >.)
413419 Prefer to scaffold? The CLI does it in one line —
414420 <code >atmosphere new my-app --template ai-chat</code >, then
415421 <code >./mvnw spring-boot:run</code >. The CLI exposes thirteen starters —
0 commit comments