Build distributed, production-grade, long-running agents.
5,451
stars
1,020
commits
Java
primary language
Sep 6, 2026
updated
AgentScope Java 2.0 is a production-ready framework for building distributed, enterprise-grade agents, providing essential abstractions that work with rising model capability and built-in support for long-running, safely-controlled agent execution.
agent_spawn / agent_send and real-time event forwarding.
v2.0.0 GA: First production-ready release! Dual-layer agent architecture, event stream, permission system, middleware, workspace sandbox, multi-agent orchestration, and distributed deployment all ready. Docs | Release Notesv2.0.0-RC5: Model provider modularization; unified DataBlock multimodal support; native structured output; Channel IM integration; Tencent Cloud COS state persistence. Release Notesv2.0.0-RC4: Async tool execution and scheduled wakeup dispatching; subagent cross-replica routing and session recovery. Release Notesv2.0.0-RC3: Unified call() / streamEvents() execution core; AgentResultEvent, CustomEvent, HintBlockEvent new event types. Release Notesv2.0.0-RC2: Fully stateless agent; one-line DistributedBackend; subagent event forwarding; Channel module (DingTalk, Feishu, WeCom); A2A / AG-UI protocol support. Release Notesv2.0.0-RC1: First 2.0 RC — harness engineering, enterprise distributed deployment, event stream / message model / middleware / HITL full redesign. Release Notesv1.1.0: Introduced agentscope-harness and HarnessAgent; Workspace (persona / memory / skills / subagents); pluggable filesystem (local / shared store / sandbox); session persistence with cross-process resume; layered memory and context compaction; declarative subagent orchestration. Release NotesWelcome to join our community on
| Discord | DingTalk | |
|---|---|---|
![]() | ![]() | ![]() |
AgentScope Java requires JDK 17 or higher.
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-harness</artifactId>
<version>2.0.1</version>
</dependency>
Model providers are shipped as separate extension modules in 2.0. Add the one you need — for example, DashScope:
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-model-dashscope</artifactId>
<version>2.0.1</version>
</dependency>
Other options: agentscope-extensions-model-openai, agentscope-extensions-model-anthropic, agentscope-extensions-model-gemini, agentscope-extensions-model-ollama. See the Model docs for details.
If you only need a bare ReActAgent without workspace / persistence / sandbox, depend on agentscope-core alone.
Start your first agent with AgentScope Java 2.0:
import io.agentscope.core.agent.RuntimeContext;
import io.agentscope.core.message.UserMessage;
import io.agentscope.harness.agent.HarnessAgent;
import java.nio.file.Paths;
public class FirstAgent {
public static void main(String[] args) {
HarnessAgent agent = HarnessAgent.builder()
.name("assistant")
.sysPrompt("You are a helpful AI assistant.")
// ModelRegistry resolves the string and reads the matching
// API-key env var (e.g. OPENAI_API_KEY or DEEPSEEK_API_KEY)
// automatically.
// Examples: "openai:gpt-4.1", "openai:o3",
// "deepseek:deepseek-v4-flash", "dashscope:qwen-plus",
// "anthropic:claude-sonnet-4-7", "ollama:llama3"
.model("dashscope:qwen-plus")
// Or pass a ChatModel object directly:
// .model(OpenAIChatModel.builder().model("gpt-4.1").build())
.workspace(Paths.get(".agentscope/workspace"))
.build();
RuntimeContext ctx = RuntimeContext.builder()
.sessionId("demo").userId("alice").build();
// Blocking call
agent.call(new UserMessage("Hello!"), ctx).block();
// Or stream events for real-time UI rendering
agent.streamEvents(new UserMessage("Summarize today in three bullets."), ctx)
.doOnNext(event -> {
switch (event.getType()) {
case TEXT_BLOCK_DELTA -> System.out.print(
((io.agentscope.core.event.TextBlockDeltaEvent) event).getDelta());
case TOOL_CALL_START -> System.out.println(
"\n[tool] " + ((io.agentscope.core.event.ToolCallStartEvent) event).getToolCallName());
default -> { }
}
})
.blockLast();
}
}
AgentScope Service — an Agent Control Plane built on AgentScope Harness that provides:

AgentScope Java 2.0 is a major step up from a "build an agent" toolkit toward a complete platform for running agents in production. The improvements fall into three focus areas:
A bare ReAct loop solves one reasoning turn. HarnessAgent layers engineering infrastructure on top of ReActAgent via Middleware and Toolkit channels — the reasoning core stays untouched, capabilities layer on:
MEMORY.md + on-disk fact log, with auto-compaction to bound the promptagent_spawn / agent_send at runtime, sync or background delegationProduction agents must serve many tenants, run untrusted code safely, and survive rolling restarts. AgentScope 2.0 is built for stateless horizontal scaling:
session / user / agent / org dimension isolation, RuntimeContext keys flow through workspace paths, KV namespaces, and sandbox state slotsAgentStateStore (in-memory / JSON file / MySQL / Redis / PostgreSQL) backs zero-downtime rolling deploysMessages, events, and the extension model are smaller, more orthogonal — HITL and event streaming are part of how the framework runs, not add-ons:
ContentBlock, role-strict validation at constructiononAgent / onReasoning / onActing / onModelCall / onSystemPrompt five stages replace v1's flat hooksFor the complete architecture overview, see the documentation.
We welcome contributions from the community! Please refer to our CONTRIBUTING.md for guidelines on how to contribute.
AgentScope is released under Apache License 2.0.
All thanks to our contributors:
(top 30 of 144)
Java
85.8%
TypeScript
6.6%
Go
6.2%
Python
1.1%
Build distributed, production-grade, long-running agents.
5,451
stars
1,020
commits
Java
primary language
Sep 6, 2026
updated
AgentScope Java 2.0 is a production-ready framework for building distributed, enterprise-grade agents, providing essential abstractions that work with rising model capability and built-in support for long-running, safely-controlled agent execution.
agent_spawn / agent_send and real-time event forwarding.
v2.0.0 GA: First production-ready release! Dual-layer agent architecture, event stream, permission system, middleware, workspace sandbox, multi-agent orchestration, and distributed deployment all ready. Docs | Release Notesv2.0.0-RC5: Model provider modularization; unified DataBlock multimodal support; native structured output; Channel IM integration; Tencent Cloud COS state persistence. Release Notesv2.0.0-RC4: Async tool execution and scheduled wakeup dispatching; subagent cross-replica routing and session recovery. Release Notesv2.0.0-RC3: Unified call() / streamEvents() execution core; AgentResultEvent, CustomEvent, HintBlockEvent new event types. Release Notesv2.0.0-RC2: Fully stateless agent; one-line DistributedBackend; subagent event forwarding; Channel module (DingTalk, Feishu, WeCom); A2A / AG-UI protocol support. Release Notesv2.0.0-RC1: First 2.0 RC — harness engineering, enterprise distributed deployment, event stream / message model / middleware / HITL full redesign. Release Notesv1.1.0: Introduced agentscope-harness and HarnessAgent; Workspace (persona / memory / skills / subagents); pluggable filesystem (local / shared store / sandbox); session persistence with cross-process resume; layered memory and context compaction; declarative subagent orchestration. Release NotesWelcome to join our community on
| Discord | DingTalk | |
|---|---|---|
![]() | ![]() | ![]() |
AgentScope Java requires JDK 17 or higher.
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-harness</artifactId>
<version>2.0.1</version>
</dependency>
Model providers are shipped as separate extension modules in 2.0. Add the one you need — for example, DashScope:
<dependency>
<groupId>io.agentscope</groupId>
<artifactId>agentscope-extensions-model-dashscope</artifactId>
<version>2.0.1</version>
</dependency>
Other options: agentscope-extensions-model-openai, agentscope-extensions-model-anthropic, agentscope-extensions-model-gemini, agentscope-extensions-model-ollama. See the Model docs for details.
If you only need a bare ReActAgent without workspace / persistence / sandbox, depend on agentscope-core alone.
Start your first agent with AgentScope Java 2.0:
import io.agentscope.core.agent.RuntimeContext;
import io.agentscope.core.message.UserMessage;
import io.agentscope.harness.agent.HarnessAgent;
import java.nio.file.Paths;
public class FirstAgent {
public static void main(String[] args) {
HarnessAgent agent = HarnessAgent.builder()
.name("assistant")
.sysPrompt("You are a helpful AI assistant.")
// ModelRegistry resolves the string and reads the matching
// API-key env var (e.g. OPENAI_API_KEY or DEEPSEEK_API_KEY)
// automatically.
// Examples: "openai:gpt-4.1", "openai:o3",
// "deepseek:deepseek-v4-flash", "dashscope:qwen-plus",
// "anthropic:claude-sonnet-4-7", "ollama:llama3"
.model("dashscope:qwen-plus")
// Or pass a ChatModel object directly:
// .model(OpenAIChatModel.builder().model("gpt-4.1").build())
.workspace(Paths.get(".agentscope/workspace"))
.build();
RuntimeContext ctx = RuntimeContext.builder()
.sessionId("demo").userId("alice").build();
// Blocking call
agent.call(new UserMessage("Hello!"), ctx).block();
// Or stream events for real-time UI rendering
agent.streamEvents(new UserMessage("Summarize today in three bullets."), ctx)
.doOnNext(event -> {
switch (event.getType()) {
case TEXT_BLOCK_DELTA -> System.out.print(
((io.agentscope.core.event.TextBlockDeltaEvent) event).getDelta());
case TOOL_CALL_START -> System.out.println(
"\n[tool] " + ((io.agentscope.core.event.ToolCallStartEvent) event).getToolCallName());
default -> { }
}
})
.blockLast();
}
}
AgentScope Service — an Agent Control Plane built on AgentScope Harness that provides:

AgentScope Java 2.0 is a major step up from a "build an agent" toolkit toward a complete platform for running agents in production. The improvements fall into three focus areas:
A bare ReAct loop solves one reasoning turn. HarnessAgent layers engineering infrastructure on top of ReActAgent via Middleware and Toolkit channels — the reasoning core stays untouched, capabilities layer on:
MEMORY.md + on-disk fact log, with auto-compaction to bound the promptagent_spawn / agent_send at runtime, sync or background delegationProduction agents must serve many tenants, run untrusted code safely, and survive rolling restarts. AgentScope 2.0 is built for stateless horizontal scaling:
session / user / agent / org dimension isolation, RuntimeContext keys flow through workspace paths, KV namespaces, and sandbox state slotsAgentStateStore (in-memory / JSON file / MySQL / Redis / PostgreSQL) backs zero-downtime rolling deploysMessages, events, and the extension model are smaller, more orthogonal — HITL and event streaming are part of how the framework runs, not add-ons:
ContentBlock, role-strict validation at constructiononAgent / onReasoning / onActing / onModelCall / onSystemPrompt five stages replace v1's flat hooksFor the complete architecture overview, see the documentation.
We welcome contributions from the community! Please refer to our CONTRIBUTING.md for guidelines on how to contribute.
AgentScope is released under Apache License 2.0.
All thanks to our contributors:
(top 30 of 144)
Java
85.8%
TypeScript
6.6%
Go
6.2%
Python
1.1%