Skip to content

Install & Run

Get a running Atmosphere app in seconds — no Maven, no project setup, no boilerplate.

Pick whichever package manager you already have:

Terminal window
curl -fsSL https://raw.githubusercontent.com/Atmosphere/atmosphere/main/cli/install.sh | sh

The installer checks for Java 21+, downloads the atmosphere script to /usr/local/bin, and creates ~/.atmosphere/ for caching.

Terminal window
brew install Atmosphere/tap/atmosphere
Terminal window
sdk install atmosphere

SDKMAN manages JDKs, Gradle, Maven, and now Atmosphere side-by-side. Switch versions with sdk use atmosphere <version> and list releases with sdk list atmosphere. If you haven’t installed SDKMAN yet, see sdkman.io.

No Java CLI needed — scaffold a project straight from npm:

Terminal window
npx create-atmosphere-app my-chat-app
npx create-atmosphere-app my-ai-app --template ai-chat

npx gives you atmosphere new functionality without a local install, but running samples still needs the full CLI (curl, brew, or sdk above).

Terminal window
atmosphere run spring-boot-chat

That’s it. The CLI downloads a pre-built JAR from GitHub Releases, caches it in ~/.atmosphere/cache/, and starts a WebSocket chat app on http://localhost:8080. Open it in your browser — you have a working real-time chat.

Terminal window
atmosphere run spring-boot-ai-chat --env LLM_API_KEY=your-key

This starts an AI streaming chat that connects to Gemini, GPT, Claude, or Ollama — configured via environment variables. Without an API key, it runs in demo mode with simulated streaming.

Terminal window
atmosphere install

The interactive picker shows every sample grouped by category. Pick one, then choose to run it or install its source code into your current directory:

Atmosphere Samples
CHAT
1) spring-boot-chat Real-time WebSocket chat with Spring Boot
2) quarkus-chat Real-time WebSocket chat with Quarkus
3) embedded-jetty-websocket-chat Embedded Jetty WebSocket chat (no framework)
AI
4) spring-boot-ai-chat AI streaming with conversation memory and structured events
5) spring-boot-ai-classroom Multiple clients share streaming AI responses
6) spring-boot-ai-tools Framework-agnostic @AiTool tool calling
7) spring-boot-rag-chat RAG agent over Spring AI VectorStore
...
Pick a sample:

If fzf is installed, you get fuzzy-search instead of numbered menus.

Terminal window
atmosphere install --tag ai # AI samples only
atmosphere install --category tools # Tool-calling samples
atmosphere list # List all samples without the picker
atmosphere info spring-boot-ai-chat # Show details about a specific sample

When you’re ready to write your own code:

Terminal window
atmosphere new my-app
atmosphere new my-ai-app --template ai-chat
atmosphere new my-rag-app --template rag

This scaffolds a complete Spring Boot + Atmosphere project with pom.xml, source code, and a frontend. Run it with ./mvnw spring-boot:run.

atmosphere new sparse-clones the matching sample from cli/samples.json and rewrites the cloned pom.xml so its parent resolves from Maven Central — the result compiles standalone with plain mvn compile.

TemplateSource sampleWhat you get
chatspring-boot-chatWebSocket chat with Broadcaster and @ManagedService
ai-chatspring-boot-ai-chat@AiEndpoint with streaming, conversation memory, configurable LLM backend
ai-toolsspring-boot-ai-tools@AiTool tool calling, approval gates
mcp-serverspring-boot-mcp-serverMCP tools, resources, and prompts
ragspring-boot-rag-chatRAG chat with Spring AI vector store + embeddings
agentspring-boot-dentist-agentSingle agent with @Agent / @Command + skill file
multi-agentspring-boot-multi-agent-startup-team5-agent @Coordinator fleet with A2A specialists
classroomspring-boot-ai-classroomMulti-room shared AI (Spring Boot + Expo React Native client)
ms-governancespring-boot-ms-governance-chatMicrosoft Agent Governance Toolkit demo (@AgentScope policy chain)
coding-agentspring-boot-coding-agentSandboxed coding agent — clones a repo, reads files, proposes a patch
guarded-agentspring-boot-guarded-email-agentPlan-and-Verify (atmosphere-verifier) inbox-exfiltration demo
assistantspring-boot-personal-assistantLong-lived @Coordinator assistant with memory + delegation

Pass --skill-file <path> to auto-select the agent template with your skill file wired in.

Atmosphere’s AgentRuntime SPI picks the highest-priority adapter on the classpath, so you can switch AI runtime adapters by changing one dependency. The CLI does that for you:

Terminal window
atmosphere new my-ai-app --template ai-chat --runtime spring-ai
atmosphere new my-ai-app --template ai-chat --runtime langchain4j
atmosphere new my-ai-app --template ai-chat --runtime adk
atmosphere new my-kotlin-ai --template ai-chat --runtime embabel

Available runtimes: builtin (default — no extra deps), spring-ai, langchain4j, adk, koog, embabel, semantic-kernel, agentscope, spring-ai-alibaba. The mapping lives in cli/runtime-overlays.json; each entry lists the dep set to inject (and any extra repository, e.g. Embabel’s release repo).

Some templates already pin a specific adapter for demo purposes (ai-tools ships with atmosphere-langchain4j). On those, plain --runtime spring-ai is additive — both adapters end up on the classpath and the resolver picks one based on ServiceLoader iteration order, which isn’t stable.

--force (only valid with --runtime) wipes every adapter dep declared in the overlay registry from the scaffolded pom.xml before injecting the chosen overlay, making the swap deterministic:

Terminal window
atmosphere new my-ai-app --template ai-tools --runtime spring-ai --force

Note: samples whose Java code imports a specific provider’s API directly (e.g. OpenAiStreamingChatModel in ai-tools) will still need manual edits after force-swap. Transparent templates like ai-chat and multi-agent work end-to-end with no code changes.

No Java CLI needed — scaffold from npm:

Terminal window
npx create-atmosphere-app my-chat-app
npx create-atmosphere-app my-ai-app --template ai-chat

create-atmosphere-app is a thin shim over the same atmosphere new CLI — it delegates to the installed binary, so the template list is always in sync.

SampleDescriptionPort
spring-boot-chatReal-time WebSocket chat with Spring Boot8080
quarkus-chatReal-time WebSocket chat with Quarkus8080
embedded-jetty-websocket-chatEmbedded Jetty, no framework8080
SampleDescriptionPort
spring-boot-ai-chatConversation memory, structured events, capability validation8080
spring-boot-ai-classroomMultiple clients share streaming AI responses8080
spring-boot-ai-toolsFramework-agnostic @AiTool tool calling8080
spring-boot-rag-chatRAG agent over Spring AI VectorStore8080
quarkus-ai-chatSame @AiEndpoint shape as spring-boot-ai-chat on Quarkus + LangChain4j bridge18810
SampleDescriptionPort
spring-boot-dentist-agentSingle-agent workflow with @Agent / @Command8080
spring-boot-multi-agent-startup-teamMulti-agent coordinator with @Coordinator and @Fleet8080
spring-boot-orchestration-demoOrchestration primitives (handoffs, routing, judges)8080
spring-boot-a2a-agentAgent-to-agent (A2A) protocol8080
spring-boot-checkpoint-agentAgent with checkpoint/recovery8080
SampleDescriptionPort
spring-boot-mcp-serverMCP tools, resources, and prompts for AI agents8080
spring-boot-otel-chatOpenTelemetry tracing with Jaeger8080
spring-boot-durable-sessionsSession persistence with SQLite8080
spring-boot-channels-chatChannels API for pub/sub routing8080
spring-boot-agui-chatAgUI real-time agent UI8080
grpc-chatMixed WebSocket + gRPC transport8080

Run atmosphere list for the full, current sample catalog.

All AI samples accept the same environment variables:

VariableDescriptionDefault
LLM_API_KEYAPI key for your LLM provider(none — runs in demo mode)
LLM_MODELModel namegemini-2.5-flash
LLM_BASE_URLOverride API endpoint(auto-detected from model name)
LLM_MODEremote or local (Ollama)remote

Pass them via --env:

Terminal window
atmosphere run spring-boot-ai-chat \
--env LLM_API_KEY=your-key \
--env LLM_MODEL=gpt-4o
RequirementVersionHow to install
Java21+brew install openjdk@21 or SDKMAN
fzf(optional)brew install fzf — for fuzzy-search sample picker

Once you have a running sample, you’re ready to understand the code. Start with Chapter 1: Introduction for the architecture, or jump straight to Chapter 2: Getting Started to build your first app from scratch.