Skip to content

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-sdk 1.x — server and client now target a2a-sdk>=1.0.0,<2.0.0 (previously 0.3.x)
  • High-level API unchangedA2AServer, A2AAgent, as_tool(), and Graph integration work as before for typical usage
  • Compliant streaming by defaultenable_a2a_compliant_streaming=True sends artifact updates per the v1 spec
  • client_config — pass a2a.client.ClientConfig to A2AAgent for authenticated endpoints (replaces deprecated a2a_client_factory)
  • Stream normalizeriter_normalized_responses and A2AStreamNormalizer exported from elsai.multiagent.a2a for custom v1 clients
  • Session isolation — per-context_id agent pooling with configurable max_active_contexts and strict_tool_policy
  • v0.3 backward compatibility — set enable_v0_3_compat=True on A2AServer for legacy wire-format clients

Shared sandbox execution (elsai-agents)

  • Sandbox — application-owned workspace with start/stop, flush, attach/detach, and read_write / read_only attach modes
  • AgentConfig(sandbox=...) — multiple agents share one filesystem in-process while keeping separate conversations
  • SandboxPlugin — registers workspace tools: execute, read_file, write_file, list_dir (auto-added on attach when sandbox= is set)
  • SandboxManager — get-or-create sessions keyed by workspace_id, with idle TTL backstop via cleanup_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 helpersrun_command, read_workspace_file, write_workspace_file, list_workspace_dir for custom @tool functions
  • 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.

See Migrating from A2A v0.3.

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.0

With 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


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 — One Agent + SessionManager per A2A context_id.
  • Agent factory mode — Pass a callable (A2AContextContext) -> Agent for per-context custom configuration.
  • Default storageFileSessionManager under $ELSAI_A2A_SESSION_DIR/<context_id>/.
  • max_active_contexts — LRU eviction of in-memory context agents (default 100); in-flight contexts are protected.
  • strict_tool_policy — Fail startup when warnlisted tools are not PER_CONTEXT-safe.
  • A2AToolSessionScopeSHARED, CONTEXT_KEYED, and PER_CONTEXT tiers for custom tools.
  • A2ASessionStoreMetricscache_hits, cache_misses, and evictions for 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:

ToolPer-context state
python_replREPL namespace + pickle under …/<context_id>/repl/
shellDefault work_dir under …/<context_id>/shell/
use_computerScreenshots under …/<context_id>/use_computer/screenshots/
code_interpreterSandboxed sessions namespaced by context_id (AgentCoreCodeInterpreter)
browserBrowser profile under …/<context_id>/browser/user_data/ (LocalChromiumBrowser, AgentCoreBrowser)
mcp_clientIn-process MCP connection pool per context
graphGraph IDs prefixed with context_id
workflowWorkflow files under …/<context_id>/workflows/
mem0_memoryFAISS 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.0

Documentation

Environment variables

VariableDescription
ELSAI_A2A_SESSION_DIRRoot for A2A session files and on-disk tool state
PYTHON_REPL_PERSISTENCE_DIRStandalone python_repl persistence root
A2A_SESSIONS_BUCKETS3 bucket for production A2A sessions (deployment convention)
A2A_SESSIONS_PREFIXS3 key prefix for A2A contexts
A2A_PUBLIC_URLPublic 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 with Agent '…' is already processing a request
    • queue — wait until the shared agent is free
    • spawn — isolated worker per call (parallel-safe)
  • AgentAsToolMode exported from elsai.agent
  • Built-in plugins and conversation managers support spawn cloning via supports_spawn() / clone_for_spawn()
  • tools=[researcher] auto-wraps with mode="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.0

Optional 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.0

v0.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.0

Optional 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

  • Agent class — 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

  • @tool decorator — 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 A2AServer and A2AAgent

Memory and sessions

  • SessionManager — Persist and restore agent conversation state across runs
  • File and S3 storage backends for session persistence

Lifecycle and control

  • HooksBeforeAgentCallEvent, AfterAgentCallEvent, BeforeToolCallEvent, AfterToolCallEvent
  • Interrupts — Pause and resume agent execution mid-loop
  • Retry strategiesModelRetryStrategy with exponential backoff

Plugins

  • AgentSkills — Load reusable skill sets from SKILL.md files
  • AgentsMdPlugin — Hierarchical AGENTS.md discovery 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 through AgentConfig — direct Agent(...) keyword arguments for these fields are deprecated

elsai-agents-tools v0.3.0

Release Date: Jul 2026

  • write_todos — session task tracking on agent.state["todos"] for complex multi-step agent work; distinct from the disk-based journal tool. See Agents and Workflows API.

Installation

bash
pip install --extra-index-url https://elsai-agents.elsai.ai/root/ elsai-agents-tools==0.3.0

Requires elsai-agents>=0.3.0.


elsai-agents-tools v0.2.0

Release Date: Jul 2026

Companion release for elsai-agents 0.3.0:

  • Sandbox backendsAgentCoreSandboxTemplate ([agent-core-code-interpreter]), DaytonaSandboxTemplate ([sandbox-daytona]), plus LocalSandboxBackend in elsai-agents for local dev. See Sandbox backends.
  • A2A client toolsA2AClientToolProvider, a2a_discover_agent, a2a_send_message upgraded to A2A Protocol v1.0 via a2a-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.0

Requires 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 memoryretrieve, memory, agent_core_memory, mem0_memory, elasticsearch_memory, mongodb_memory
  • File operationseditor, file_read, file_write
  • Shell and systemenvironment, shell, cron, use_computer
  • Code interpretationpython_repl, code_interpreter
  • Web and networkhttp_request, slack, browser, tavily_*, exa_*, mcp_client, rss, and more
  • Multimodalgenerate_image, image_reader, speak, diagram, chat_video, search_video
  • AWS servicesuse_aws
  • Utilitiescalculator, current_time, load_tool, sleep, stop
  • Agents and workflowsgraph, swarm, workflow, batch, a2a_*

Class-based tool providers

  • LocalChromiumBrowser / AgentCoreBrowser — Browser automation
  • AgentCoreCodeInterpreter — Sandboxed code execution on Bedrock AgentCore
  • AgentCoreMemoryToolProvider — Bedrock AgentCore Memory
  • A2AClientToolProvider — Agent-to-Agent client tools

Registration model

  • Function tools — from elsai_tools.<module> import <tool> then Agent(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.

Sensitive tools prompt for user confirmation before running. Set BYPASS_TOOL_CONSENT=true to skip prompts in CI or automated environments.

Documentation

Copyright © 2026 elsai foundry.