Run samples, scaffold projects, and explore the Atmosphere framework from your terminal.
curl -fsSL https://raw.githubusercontent.com/Atmosphere/atmosphere/main/cli/install.sh | shOr with Homebrew:
brew install Atmosphere/tap/atmosphereatmosphere install # Browse all samples, pick one
atmosphere install --tag ai # Filter to AI samples
atmosphere install --category toolsThe interactive picker shows samples grouped by category with descriptions. Pick a number, then choose to:
- Run it now — downloads the pre-built JAR and starts it
- Install source code — clones the sample source into your current directory
If fzf is installed, you get a fuzzy-search picker instead of the numbered menu.
atmosphere list # All samples
atmosphere list --tag ai # AI samples only
atmosphere list --category toolsatmosphere run spring-boot-chat
atmosphere run spring-boot-ai-chat --env LLM_API_KEY=your-key
atmosphere run spring-boot-dentist-agent --port 9090The CLI downloads pre-built JARs from GitHub Releases and caches them in ~/.atmosphere/cache/.
atmosphere new my-chat-app
atmosphere new my-ai-app --template ai-chat
atmosphere new my-fleet --template multi-agent
atmosphere new my-classroom --template classroom
# Swap the AI runtime by injecting the matching adapter dependency
atmosphere new my-ai-app --template ai-chat --runtime langchain4j
atmosphere new my-ai-app --template ai-chat --runtime spring-ai
atmosphere new my-ai-app --template ai-chat --runtime adk
atmosphere new my-kotlin-ai --template ai-chat --runtime embabel
# Force-swap: strip every pre-pinned adapter before injecting the chosen one
atmosphere new my-ai-app --template ai-tools --runtime spring-ai --forceAvailable templates: chat, ai-chat, ai-tools, mcp-server, rag, agent, koog, embabel, multi-agent, classroom. Each template sparse-clones the matching sample from cli/samples.json into a directory you name.
Available runtimes (--runtime): builtin (default — no extra deps), spring-ai, langchain4j, adk, koog, semantic-kernel, agentscope, embabel, spring-ai-alibaba. The CLI appends the matching adapter dependencies (and any required repository, such as Embabel's release repository) to the scaffolded pom.xml — Atmosphere's AgentRuntime SPI then picks the highest-priority runtime present, so transparent templates like ai-chat swap runtime adapters without code changes. embabel and spring-ai-alibaba currently target the Spring Boot 3.5 profile.
--force (only valid with --runtime) wipes every adapter dep declared in cli/runtime-overlays.json from the scaffolded pom.xml before injecting the chosen overlay. This makes the swap deterministic on samples that already pin a non-default adapter (e.g. ai-tools ships with atmosphere-langchain4j) — without --force, both adapters would land on the classpath and the SPI resolver would pick one based on ServiceLoader iteration order. Note: samples whose Java code imports a specific provider's API directly (e.g. OpenAiStreamingChatModel) will still need manual edits after force-swap; transparent templates (ai-chat, multi-agent) work end-to-end with no code changes.
Use this path when the goal is a production-shaped JVM agent rather than a minimal chat demo:
atmosphere new support-agent --template ai-tools --runtime builtin
cd support-agent
export LLM_API_KEY=...
mvn spring-boot:runThe Spring Boot starter already brings in atmosphere-admin, so the generated
app has the dashboard, /api/admin/runtimes, audit log, A2A flow viewer, and
governance decision endpoints on the classpath. Then harden the control plane:
- Turn on mutating admin operations only behind auth:
atmosphere.admin.http-write-enabled=trueplus aControlAuthorizer. - Move proprietary documents into the
ragtemplate when retrieval is needed; it chunks documents withRagChunkerbefore embedding them. - Pick the runtime by capability, not by brand. For portable tools and HITL,
use a runtime that declares
TOOL_CALLINGandTOOL_APPROVALinmodules/ai/README.md.
Or with npx (zero install):
npx create-atmosphere-app my-chat-app
npx create-atmosphere-app my-ai-app --template ai-chatatmosphere info spring-boot-ai-chatTurn any skill file into a running Atmosphere agent:
# From Anthropic's official skills
atmosphere import https://github.com/anthropics/skills/blob/main/skills/frontend-design/SKILL.md
# From Antigravity community (1,200+ skills)
atmosphere import https://github.com/sickn33/antigravity-awesome-skills/blob/main/skills/customer-support/SKILL.md
# From a local file
atmosphere import ./my-skill.md
# Custom project name
atmosphere import --name my-agent https://github.com/anthropics/skills/blob/main/skills/pdf/SKILL.md
# Headless agent (A2A/MCP only, no WebSocket UI)
atmosphere import --headless https://example.com/SKILL.md --trustThe import command:
- Downloads the skill file (GitHub blob URLs auto-normalized to raw)
- Parses YAML frontmatter for
name:anddescription: - Extracts
## Toolssections → generates@AiToolmethod stubs - Scaffolds a complete Spring Boot project
- Places the skill at
META-INF/skills/{name}/SKILL.mdfor auto-discovery
Browse and run curated skills from atmosphere-skills:
atmosphere skills list # List all skills
atmosphere skills search medical # Search by keyword
atmosphere skills run dentist-agent # Scaffold and runRemote imports are restricted to trusted GitHub organizations by default:
| Trusted Source | Repository |
|---|---|
Atmosphere/* |
atmosphere-skills |
anthropics/skills |
Official Anthropic skills |
sickn33/antigravity-awesome-skills |
1,200+ community skills |
K-Dense-AI/* |
Scientific/research skills |
agentskills/* |
Agent Skills spec |
To import from an untrusted source, use --trust:
atmosphere import --trust https://example.com/custom/SKILL.mdThe import command supports plugins for custom project scaffolding targets. Plugins are shell scripts at ~/.atmosphere/plugins/import-<target>.sh:
atmosphere import --target kotlin https://example.com/SKILL.md # uses import-kotlin.sh
atmosphere plugins # list installed pluginsEvery template sparse-clones the matching sample from cli/samples.json into the directory you name, then rewrites the cloned pom.xml so its parent (org.atmosphere:atmosphere-project) resolves from Maven Central instead of the reactor root — the resulting project compiles standalone with mvn compile / mvn spring-boot:run.
| Template | Source sample | Description |
|---|---|---|
chat (default) |
spring-boot-chat |
Real-time WebSocket chat with rooms, observability, integration tests |
ai-chat |
spring-boot-ai-chat |
AI streaming chat (Spring AI / LangChain4j / Gemini / Ollama) with structured-output demo |
ai-tools ⭐ |
spring-boot-ai-tools |
Enterprise starter: @AiTool function calling, HITL approval, cost metering, audit listener |
mcp-server |
spring-boot-mcp-server |
MCP server exposing tools, resources, and prompts to AI agents |
rag ⭐ |
spring-boot-rag-chat |
RAG agent with chunked vector-store ingestion and explicit document-search tools |
agent |
spring-boot-dentist-agent |
@Agent skill-file driven (the Dr. Molar demo); implied when --skill-file is passed |
coding-agent ⭐ |
spring-boot-coding-agent |
Sandbox SPI + Git clone + AgentResumeHandle reattach; reads files and proposes patches |
guarded-agent ⭐ |
spring-boot-guarded-email-agent |
Plan-and-Verify (Meijer) — refuses unsafe LLM-emitted plans before any tool fires |
ms-governance ⭐ |
spring-boot-ms-governance-chat |
Governance demo: policy admission, decision viewer, kill switch, write-gated admin endpoints |
assistant |
spring-boot-personal-assistant |
Long-lived memory-bearing assistant: AgentState + AgentWorkspace + AgentIdentity + ProtocolBridge |
multi-agent |
spring-boot-multi-agent-startup-team |
Fleet of 5 independent @Agent classes collaborating over A2A |
classroom |
spring-boot-ai-classroom |
Shared streaming AI responses across web + Expo React Native clients |
⭐ marks the five flagship enterprise templates — the canonical agent shapes most teams reach for first. Each one is a real sample with a working backend, a working frontend, and end-to-end tests; pick the one whose use case is closest to yours and substitute model/data accordingly. See samples/README.md#flagship-enterprise-templates for the full breakdown.
- Java 21+ —
brew install openjdk@21or SDKMAN - Maven 3.9+ — automatically on PATH via Homebrew/SDKMAN, or use the
mvnwwrapper shipped with samples - Git — for the sparse-checkout used by
atmosphere newandatmosphere install - JBang — only needed for
atmosphere compose(skill-file driven multi-agent scaffolding); not required foratmosphere new
cli/
├── atmosphere # POSIX shell CLI script
├── samples.json # Sample registry with metadata
├── install.sh # curl | sh installer
├── npx/ # create-atmosphere-app npm package
│ ├── package.json
│ └── index.js
└── homebrew/
└── atmosphere.rb # Homebrew formula (for Atmosphere/homebrew-tap)
atmosphere run downloads sample fat JARs from GitHub Releases on first use and caches them in ~/.atmosphere/cache/v{version}/. atmosphere new and atmosphere install use git sparse-checkout to fetch just the requested sample directory from Atmosphere/atmosphere@main. The release workflow (.github/workflows/release-4x.yml) stamps pinned versions across cli/atmosphere, cli/samples.json, cli/npx/package.json, and cli/homebrew/atmosphere.rb via scripts/update-doc-versions.sh before publishing a GitHub Release.