{"adoption": {"forks": 761, "observed_at": "2026-08-28T04:08:19.957525+00:00", "stars": 3796}, "canonical_url": "https://ross.abutalabs.com/products/atmosphere-atmosphere", "card": {"archived": false, "artifact_type": "framework", "description": "Portable AI agent runtime for the JVM. One @Agent class runs on Spring AI, LangChain4j, Anthropic, or 9 more behind one SPI. Token streaming, tool calls, human approvals, and governance over WebSocket, SSE, gRPC, or WebTransport/HTTP3. Speaks MCP, A2A, and AG-UI.", "domain": ["large-language-models", "backend", "developer-tools", "web-development"], "enriched": true, "function": ["agent-framework", "websocket", "rpc", "middleware", "llm-inference", "rag", "mcp", "chatbot", "authorization", "streaming"], "health_score": 100, "homepage": "https://async-io.live", "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Atmosphere/atmosphere"], "name": "Atmosphere/atmosphere", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-08-26T00:00:29+00:00", "repo": "Atmosphere/atmosphere", "stars": 3796, "tags": ["ai-agents", "agent-runtime", "mcp", "a2a", "ag-ui", "human-in-the-loop", "token-streaming", "sse", "grpc", "webtransport", "governance", "durable-sessions", "multi-agent", "spring-ai", "langchain4j", "real-time", "spring", "quarkus"], "topics": ["java", "websocket", "spring-boot", "event-driven", "quarkus", "mcp", "sse", "agentic-ai", "acp", "embabel", "koog", "langchain4j", "multiagent", "spring-ai", "a2a", "ai-agents", "anthropic", "crewai", "llm", "rag"], "urls": [], "use_cases": ["stream LLM tokens to browsers over WebSocket or SSE from a Java backend", "build production AI agents on the JVM with tool calls and human approval gates", "swap AI frameworks like Spring AI or LangChain4j without rewriting agent endpoints", "add governance, policy admission, and cost ceilings to AI agent execution", "run durable, resumable agent sessions that survive JVM restarts", "orchestrate multi-agent fleets with live observability", "connect Java agents to MCP, A2A, or AG-UI clients"], "what_it_is": "Atmosphere is a portable AI agent runtime for the JVM that lets a single @Agent class run across twelve AI runtimes (Spring AI, LangChain4j, Anthropic, and more) behind one SPI. It provides token streaming, tool calls, human approvals, and governance over WebSocket, SSE, long-polling, gRPC, or WebTransport/HTTP3, and speaks MCP, A2A, and AG-UI protocols.", "when_to_avoid": ["you are building agents in Python, JavaScript, or another non-JVM ecosystem", "you need a simple prototype where a direct SDK call to one LLM provider suffices", "you want a fully managed cloud agent platform rather than a self-hosted framework", "your stack has no JVM dependency and adding one is not justified"], "when_to_choose": ["you are building AI agents in Java/Kotlin on the JVM and need production-grade transports", "you need framework portability across multiple AI runtimes behind one API", "you require human-in-the-loop approvals, governance policies, or durable resumable runs", "you want real-time streaming (WebSocket/SSE/gRPC) plus MCP/A2A/AG-UI protocol support out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/atmosphere-atmosphere", "repo": "Atmosphere/atmosphere", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:19.957525+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:26:56.000327+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a624ce372c4cfe674f63e4abe91b3f2bf2f1698e00cffbbf774ee5a406d6b5a4", "fetched_at": "2026-08-28T04:08:19.957525+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Atmosphere/atmosphere"}, {"content_hash": "ddd3faf484b2a5716499d178dd5dba7c6b2278fb45488376a593b06a408418fb", "fetched_at": "2026-08-29T09:21:47.712237+00:00", "kind": "homepage", "missing": false, "url": "https://async-io.live"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5908, "days_push": 8, "days_rel": 10, "gap_med": 1.0, "n_releases_24m": 63}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}