@@ -55,31 +55,32 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
5555
5656 <div class =" post-body" >
5757 <p >
58- I've worked on Atmosphere for years — a real-time transport for the JVM
59- that pushes event streams from a server to connected clients over
60- WebSocket, Server-Sent Events , long-polling, gRPC, and now
61- WebTransport/HTTP3, on Spring Boot, Quarkus, or a plain servlet container,
62- with reconnect and connection write-timeouts on by default, and configurable
63- drop-oldest / newest / disconnect backpressure policies when you need them . Atmosphere 4 adds an AI agent layer on top
64- of that transport.
58+ I've worked on Atmosphere for years — a real-time transport for the JVM.
59+ It streams events from the server to connected clients, picking whatever
60+ transport the client can actually use — WebSocket, SSE , long-polling, gRPC,
61+ or WebTransport/HTTP3 — and handling the parts that break at scale:
62+ reconnects, write-timeouts, and backpressure when a client falls behind.
63+ It runs on Spring Boot, Quarkus, or a plain servlet container . Atmosphere 4
64+ adds an AI agent layer on top of that transport.
6565 </p >
6666 <p >
67- Java developers are right to be skeptical of yet another AI wrapper, so
67+ Developers are right to be skeptical of yet another AI wrapper, so
6868 let me be clear about what this is. The call to the model is the easy bit.
6969 The hard part is delivering a token stream — plus tool-call events,
70- structured-output frames, and multi-agent handoffs — to a lot of
71- concurrent clients at once , live, without dropping connections. That's the
70+ structured-output frames, and multi-agent handoffs — to many concurrent
71+ clients, live, without dropping connections. That's the
7272 problem Atmosphere already solved, so I plugged the LLM into the streaming
7373 layer that was already there instead of building a new framework around the LLM.
7474 </p >
7575
7676 <h2 >One annotation, twelve runtimes</h2 >
7777 <p >
78- The headline annotation is <code >@Agent</code > — a class is an agent, its persona
79- and instructions come from a skill file, and conversation memory plus protocol
80- exposure (A2A, MCP, AG-UI) are wired automatically. Rather than a hello-world,
81- here's one worth looking at — a billing-support agent that streams its reply and
82- gates a money-moving tool behind a human:
78+ The annotation that matters is <code >@Agent</code > — drop it on a class and that
79+ class is an agent. Its persona and instructions live in a skill file, it keeps
80+ track of the conversation for you, and it shows up over A2A, MCP, and AG-UI without
81+ a line of plumbing. So, not a hello-world — here's one worth looking at: a
82+ billing-support agent that streams its reply and gates a money-moving tool behind a
83+ human:
8384 </p >
8485 <pre class =" code" ><code set:html ={ agentSnippet } ></code ></pre >
8586 <p >
0 commit comments