Appearance
elsai Agents — Release Notes
v0.3.0
Release Date: Jul 2026
Upgrades Agent-to-Agent (A2A) support to A2A Protocol v1.0 via a2a-sdk>=1.0.0 (tested with 1.1.0). Adds the shared sandbox execution model for isolated workspace runs. See Agent-to-Agent (A2A) and Sandbox.
A2A Protocol v1.0
a2a-sdk1.x — server and client now targeta2a-sdk>=1.0.0,<2.0.0(previously 0.3.x)- High-level API unchanged —
A2AServer,A2AAgent,as_tool(), and Graph integration work as before for typical usage - Compliant streaming by default —
enable_a2a_compliant_streaming=Truesends artifact updates per the v1 spec client_config— passa2a.client.ClientConfigtoA2AAgentfor authenticated endpoints (replaces deprecateda2a_client_factory)- Stream normalizer —
iter_normalized_responsesandA2AStreamNormalizerexported fromelsai.multiagent.a2afor custom v1 clients - Session isolation — per-
context_idagent pooling with configurablemax_active_contextsandstrict_tool_policy - v0.3 backward compatibility — set
enable_v0_3_compat=TrueonA2AServerfor legacy wire-format clients
Shared sandbox execution (elsai-agents)
Sandbox— application-owned workspace withstart/stop,flush,attach/detach, andread_write/read_onlyattach modesAgentConfig(sandbox=...)— multiple agents share one filesystem in-process while keeping separate conversationsSandboxPlugin— registers workspace tools:execute,read_file,write_file,list_dir(auto-added on attach whensandbox=is set)SandboxManager— get-or-create sessions keyed byworkspace_id, with idle TTL backstop viacleanup_expired()- Host tool blocking — in
SandboxMode.SANDBOX, host prebuilt tools (shell,python_repl,file_read,file_write,environment) are blocked; use sandbox plugin tools instead - Plugin helpers —
run_command,read_workspace_file,write_workspace_file,list_workspace_dirfor custom@toolfunctions - Structured audit events — lifecycle and mutation logging on
elsai.sandbox.audit
Sandbox backends ship in elsai-agents-tools 0.2.0: LocalSandboxBackend (dev), AgentCoreSandboxTemplate (production), DaytonaSandboxTemplate (remote). See Sandbox backends.
Breaking changes (raw HTTP / third-party clients only)
If you call an Elsai A2A server with raw HTTP or a third-party v0.3 client, you must either migrate to the v1 wire format (SendMessage, A2A-Version: 1.0 header) or enable enable_v0_3_compat=True on the server. Elsai SDK users (A2AAgent / A2AServer) are not affected.
Installation
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents==0.3.0
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.3.0With A2A support:
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents[a2a]==0.3.0"Sandbox backends (optional extras):
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[agent-core-code-interpreter]==0.3.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[sandbox-daytona]==0.3.0"Documentation
- Sandbox — Overview — workspace model, TTL, backends
- Sandbox — Shared workspace — multi-agent attach and detach
- Sandbox API —
Sandbox,SandboxManager,SandboxPlugin - Agent-to-Agent (A2A) — A2A Protocol v1.0 migration
v0.2.1
Release Date: June 2026
Bugfix release for A2A session isolation — stateful tools and conversation history no longer leak across concurrent context_id values on the same A2AServer.
A2A session isolation (elsai-agents)
A2ASessionStore— OneAgent+SessionManagerper A2Acontext_id.- Agent factory mode — Pass a callable
(A2AContextContext) -> Agentfor per-context custom configuration. - Default storage —
FileSessionManagerunder$ELSAI_A2A_SESSION_DIR/<context_id>/. max_active_contexts— LRU eviction of in-memory context agents (default100); in-flight contexts are protected.strict_tool_policy— Fail startup when warnlisted tools are notPER_CONTEXT-safe.A2AToolSessionScope—SHARED,CONTEXT_KEYED, andPER_CONTEXTtiers for custom tools.A2ASessionStoreMetrics—cache_hits,cache_misses, andevictionsfor observability.
Stateful prebuilt tools (elsai-agents-tools)
Prebuilt tools now declare PER_CONTEXT scope and implement clone_for_a2a_context() so mutable state does not leak across A2A context_id values:
| Tool | Per-context state |
|---|---|
python_repl | REPL namespace + pickle under …/<context_id>/repl/ |
shell | Default work_dir under …/<context_id>/shell/ |
use_computer | Screenshots under …/<context_id>/use_computer/screenshots/ |
code_interpreter | Sandboxed sessions namespaced by context_id (AgentCoreCodeInterpreter) |
browser | Browser profile under …/<context_id>/browser/user_data/ (LocalChromiumBrowser, AgentCoreBrowser) |
mcp_client | In-process MCP connection pool per context |
graph | Graph IDs prefixed with context_id |
workflow | Workflow files under …/<context_id>/workflows/ |
mem0_memory | FAISS store under …/<context_id>/mem0/faiss/ |
python_repl additionally replaces the former process-wide global REPL singleton with PythonReplTool. Registry name stays python_repl.
Installation
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents==0.2.1
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents[a2a]==0.2.1"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.1.0Documentation
- Agent-to-Agent (A2A) — session isolation, S3 production, tool policy, operator table
- A2A API —
A2AServer,A2ASessionStore, handler options - Sessions — A2A sessions — file and S3 backing per
context_id - Prebuilt tools — Environment variables — tool configuration env vars
Environment variables
| Variable | Description |
|---|---|
ELSAI_A2A_SESSION_DIR | Root for A2A session files and on-disk tool state |
PYTHON_REPL_PERSISTENCE_DIR | Standalone python_repl persistence root |
A2A_SESSIONS_BUCKET | S3 bucket for production A2A sessions (deployment convention) |
A2A_SESSIONS_PREFIX | S3 key prefix for A2A contexts |
A2A_PUBLIC_URL | Public URL for the agent card |
Full reference: A2A — Environment variables.
v0.2.0
Release Date: Jun 2026
Compatible with elsai-model v2.0.0 from elsai Core.
elsai-agents now works with the unified *Model provider API. Pass any supported model directly to the agent:
python
agent = Agent(model=OpenAIModel(...))Supported providers include OpenAI, Azure OpenAI, Amazon Bedrock, Anthropic, Gemini, LiteLLM, Ollama, Mistral, Writer, Meta Llama API, llama.cpp, OpenAI Responses, and SageMaker. See Model Providers.
Migration from connector API
If you used OpenAIConnector, BedrockConnector, or GeminiService, see the migration table in Core release notes.
Agent-as-tool concurrency modes
Agent.as_tool(mode=...)— control parallel invocation when the same sub-agent tool is called twice in one turn:reject(default) — fail fast withAgent '…' is already processing a requestqueue— wait until the shared agent is freespawn— isolated worker per call (parallel-safe)
AgentAsToolModeexported fromelsai.agent- Built-in plugins and conversation managers support spawn cloning via
supports_spawn()/clone_for_spawn() tools=[researcher]auto-wraps withmode="reject"; non-default modes require an explicit.as_tool(mode=...)
See Agent as Tool.
Installation
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents==0.2.0Optional extras:
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents[a2a]==0.2.0"
pip install --extra-index-url https://core-packages.elsai.ai/root/elsai-model/ elsai-model==2.0.0v0.1.0
Release Date: 2026
Initial release of the elsai Agent Framework, built on the Strands Agents SDK.
Installation
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents==0.1.0Optional extras:
bash
# With A2A support
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents[a2a]==0.1.0"Core agent runtime
Agentclass — Single entry point for creating and running agents with any supported LLM- Agent loop — Automatic tool-call/response cycle with configurable max iterations
- Streaming — Token-by-token and event-stream output
- Structured output — Typed responses via Pydantic models
Tools
@tooldecorator — Convert any Python function into an agent tool- MCP Tools — Connect agents to any MCP server
- Directory tools — Auto-load tools from
./tools/
Multi-agent
- Graph — DAG-based agent pipelines with conditional routing
- Swarm — Dynamic agent handoffs with shared context
- Workflow — Sequential and parallel agent pipelines
- Agent as Tool — Nest agents inside other agents
- Agent-to-Agent (A2A) — Remote agent calls over HTTP via
A2AServerandA2AAgent
Memory and sessions
SessionManager— Persist and restore agent conversation state across runs- File and S3 storage backends for session persistence
Lifecycle and control
- Hooks —
BeforeAgentCallEvent,AfterAgentCallEvent,BeforeToolCallEvent,AfterToolCallEvent - Interrupts — Pause and resume agent execution mid-loop
- Retry strategies —
ModelRetryStrategywith exponential backoff
Plugins
AgentSkills— Load reusable skill sets fromSKILL.mdfilesAgentsMdPlugin— HierarchicalAGENTS.mddiscovery and system-prompt injection (cached at init; default keeps 3 nearest ancestor files)LLMSteeringHandler— Pre/post-call LLM guardrails (Proceed / Guide / Interrupt)ContextOffloader— Automatic offloading of large context to external storage
Agent configuration
- Pass
plugins,hooks,session_manager,agent_id, and other metadata throughAgentConfig— directAgent(...)keyword arguments for these fields are deprecated
elsai-agents-tools v0.3.0
Release Date: Jul 2026
write_todos— session task tracking onagent.state["todos"]for complex multi-step agent work; distinct from the disk-basedjournaltool. See Agents and Workflows API.
Installation
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.3.0Requires elsai-agents>=0.3.0.
elsai-agents-tools v0.2.0
Release Date: Jul 2026
Companion release for elsai-agents 0.3.0:
- Sandbox backends —
AgentCoreSandboxTemplate([agent-core-code-interpreter]),DaytonaSandboxTemplate([sandbox-daytona]), plusLocalSandboxBackendinelsai-agentsfor local dev. See Sandbox backends. - A2A client tools —
A2AClientToolProvider,a2a_discover_agent,a2a_send_messageupgraded to A2A Protocol v1.0 viaa2a-sdk>=1.0.0. Public tool API unchanged.
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.2.0
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[a2a-client]==0.2.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[agent-core-code-interpreter]==0.2.0"
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ "elsai-agents-tools[sandbox-daytona]==0.2.0"Requires elsai-agents>=0.3.0 for sandbox execution and elsai-agents[a2a]>=0.3.0 when using A2A client tools.
elsai-agents-tools v0.1.0
Release Date: 2026
Initial release of the elsai Prebuilt Tools package — a Python companion to elsai-agents that ships ready-made agent tools for file I/O, shell access, web search, AWS integrations, multi-agent orchestration, and more. Import namespace: elsai_tools.
Installation
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.1.0Requires Python 3.10+ and elsai-agents>=0.2.1.
Optional extras:
bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ \
"elsai-agents-tools[mem0-memory,local-chromium-browser,diagram]==0.1.0"What's included
Tool categories (base package)
- RAG and memory —
retrieve,memory,agent_core_memory,mem0_memory,elasticsearch_memory,mongodb_memory - File operations —
editor,file_read,file_write - Shell and system —
environment,shell,cron,use_computer - Code interpretation —
python_repl,code_interpreter - Web and network —
http_request,slack,browser,tavily_*,exa_*,mcp_client,rss, and more - Multimodal —
generate_image,image_reader,speak,diagram,chat_video,search_video - AWS services —
use_aws - Utilities —
calculator,current_time,load_tool,sleep,stop - Agents and workflows —
graph,swarm,workflow,batch,a2a_*
Class-based tool providers
LocalChromiumBrowser/AgentCoreBrowser— Browser automationAgentCoreCodeInterpreter— Sandboxed code execution on Bedrock AgentCoreAgentCoreMemoryToolProvider— Bedrock AgentCore MemoryA2AClientToolProvider— Agent-to-Agent client tools
Registration model
- Function tools —
from elsai_tools.<module> import <tool>thenAgent(tools=[...]) - Class-based tools — instantiate provider, register
.code_interpreter,.browser, or*provider.tools - Direct invocation —
agent.tool.<name>(...)bypasses the LLM
Optional pip extras
Extras gate optional dependencies: mem0-memory, elasticsearch-memory, mongodb-memory, local-chromium-browser, agent-core-browser, agent-core-code-interpreter, rss, use-computer, diagram, twelvelabs, a2a-client.
A2A session isolation (requires elsai-agents 0.2.1+)
Stateful prebuilt tools declare PER_CONTEXT scope for multi-tenant A2A servers: python_repl, shell, use_computer, code_interpreter, browser, mcp_client, graph, workflow, mem0_memory. See Stateful tools on A2A.
Tool consent
Sensitive tools prompt for user confirmation before running. Set BYPASS_TOOL_CONSENT=true to skip prompts in CI or automated environments.
Documentation
- Prebuilt Tools guide
- Prebuilt Tools API
- AI Editor Setup — Cursor, Copilot, and Claude Code configs for
elsai_toolsimports