Atmosphere Stream AI to browsers. Keep your stack.

Spring AI and LangChain4j handle inference. Atmosphere handles the other half: streaming tokens to React, Vue, or Svelte over WebSocket with SSE fallback, rooms, presence, and Kafka/Redis clustering. Add one dependency to your Spring Boot or Quarkus app — no rewiring, no custom WebSocket code.

18 years of WebSocket experience
JDK 21 Virtual threads
Apache 2.0 License

From LLM to browser in minutes

Your AI framework generates tokens. Atmosphere delivers them: server-side streaming with @AiEndpoint, MCP tools with @McpServer, and client-side hooks with useStreaming(). No custom WebSocket code.

ChatWithMcpParticipant.java Server
@ManagedService(path = "/atmosphere/chat")
public class ChatEndpoint {
    @Message
    public String onMessage(String message) {
        return message; // human users chat in real time
    }
}

@McpServer(name = "chat-participant", path = "/atmosphere/mcp")
public class ChatMcpParticipant {
    @Inject private AtmosphereConfig config;

    @McpTool(name = "say_in_chat", description = "Send a message as MCP Agent")
    public String sayInChat(
            @McpParam(name = "text") String text) {
        var chat = config.getBroadcasterFactory().lookup("/atmosphere/chat", true);
        chat.broadcast("{\"author\":\"MCP Agent\",\"message\":\"" + text + "\"}");
        return "sent";
    }

    @McpResource(uri = "atmosphere://chat/presence", name = "Chat Presence")
    public String presence() {
        var chat = config.getBroadcasterFactory().lookup("/atmosphere/chat", false);
        var online = chat == null ? "0" : String.valueOf(chat.getAtmosphereResources().size());
        return "onlineUsers=" + online;
    }
}

Works with your stack, not instead of it

One dependency. Zero rewiring. Add a starter to your existing Spring Boot or Quarkus app and Atmosphere handles WebSocket transport, reconnection, and rooms — so your AI framework can focus on inference.

Spring Boot New in 4.0

4.0.2+

Auto-configured servlet, Spring DI bridge, and Actuator health indicator.

Quarkus New in 4.0

3.21+

Build-time annotation scanning, Arc CDI, and WebSocket support.

Servlet Container

6.0+

Tomcat, Jetty, Undertow, GlassFish, Payara — any Servlet 6.0+ (Jakarta EE) container.

AI Streaming AI

Atmosphere AI

Use @AiEndpoint + @Prompt with StreamingSession and the built-in OpenAiCompatibleClient for Gemini, OpenAI, Ollama, and OpenAI-compatible APIs.

MCP Server Agents

Agent-ready

Expose tools, resources, and prompts with @McpServer/@McpTool. Connect Claude Desktop, VS Code Copilot, or Cursor via Streamable HTTP or WebSocket.

Multi-Node Scaling Clustering

Kafka & Redis

Scale across nodes with built-in Kafka and Redis broadcasters. No commercial add-ons — just add a dependency.

What you stop building yourself

Transport fallback, reconnection, rooms, presence, clustering — the plumbing every AI chat app needs but nobody wants to maintain.

Virtual Threads

Every connection runs on a JDK 21 virtual thread. Massive scalability with no thread-pool tuning.

Click to explore →

WebSocket + Fallbacks

First-class WebSocket with automatic degradation to SSE and long-polling. Heartbeats and reconnection built in.

Click to explore →

Rooms & Presence

Built-in room management with presence tracking, message history, and authorization. No external dependencies.

Click to explore →

Simple Annotations

Define endpoints with @ManagedService or @RoomService. Handle lifecycle with @Ready, @Message, @Disconnect. Kotlin DSL available.

Click to explore →

AI/LLM Streaming

Stream tokens from any LLM to browsers. Built-in OpenAI-compatible client, Spring AI and LangChain4j adapters.

Click to explore →

MCP Server

Expose tools, resources, and prompts to AI agents. Connect Claude Desktop, VS Code Copilot, or Cursor via Streamable HTTP.

Click to explore →

Support Subscriptions

Get support from the core team with fast response times. Meet your production schedule and compliance requirements.

Bronze

  • Coverage Business Hours
  • Response (S1) 7 Business Days
  • Response (S2) 10 Business Days
  • Incidents 2 / year
  • Phone Support
  • Email Support
  • Emergency Patches
Get a Quote

Silver

  • Coverage Business Hours
  • Response (S1) 1 Business Day
  • Response (S2) 2 Business Days
  • Incidents 10 / year
  • Phone Support
  • Email Support
  • Emergency Patches
Get a Quote

Gold

  • Coverage Business Hours
  • Response (S1) 4 hours
  • Response (S2) 1 Business Day
  • Incidents 15 / year
  • Phone Support
  • Email Support
  • Emergency Patches
Get a Quote

Platinum

  • Coverage 24x7
  • Response (S1) 1 hour
  • Response (S2) 4 hours
  • Incidents Unlimited
  • Phone Support
  • Email Support
  • Emergency Patches
Get a Quote