Creating realistic RL environments requires collaboration between researchers, engineers, and domain experts across many dimensions: artifacts, environments tools, dynamism of the environment, reproducibility, and more. There is no open source framework for building these environments effectively. Until now.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗AgentEnv Framework is a Python SDK and CLI for building, deploying and running agentic environments and the tasks that grade agents inside them. Environments are containerized servers that speak the open agentenv-framework-protocol; AgentEnv Framework builds them into versioned images, deploys them behind a gateway, points an agent at them, and scores what the agent did.
Documentation: www.agentenvframework.com/docs covers environments, artifacts, agents, tasks, the registry and plugins.
Both packages are on PyPI. You need Python 3.11.4 or newer and, to run environments locally, a running Docker daemon. With uv, install the agent-env command as a tool:
uv tool install agentenv-framework
agent-env run hello
agent-env run hello runs the built-in hello task, which needs no Docker, model or configuration. To try it without installing anything, run it with uvx:
uvx --from agentenv-framework agent-env run hello
Or install it with pip, into a virtualenv:
pip install agentenv-framework
To use the SDK in your own project, add it as a dependency with uv add agentenv-framework. The explorer, agent-env up, needs an .agentenv/config.toml in the current folder or above it; an empty one keeps every local default. Environments and agents run as containers on the local Docker daemon by default; the sandbox docs cover the other sandbox providers and the extra each needs.
A plain install runs on local stores and needs no cloud SDK. The cloud store backends are extras: aws for S3, Secrets Manager, DynamoDB and ECR (pip install 'agentenv-framework[aws]'), and gcp for Cloud Storage, Secret Manager, Firestore and Artifact Registry (pip install 'agentenv-framework[gcp]'). A config that names a backend without its extra fails, naming the extra to install.
The distribution is named agentenv-framework, the import package is agent_env and the command is agent-env. It depends on agentenv-framework-protocol, whose import package is agentenv_protocol, and installs it too.
To work on agent-env itself, install from a clone with uv:
git clone https://github.com/scaleapi/agentenv-framework && cd agentenv-framework
uv sync --extra dev
source .venv/bin/activate
agent-env run also takes a bundle published in a Hugging Face Hub dataset:
agent-env run hf://<org>/<repo> # the main branch
agent-env run hf://<org>/<repo>@v1.0/bundles/hello # a tag, branch or commit, and the bundle's folder
The revision (a branch, tag or commit, percent-encoded when it holds a /; the main branch by default) resolves to a
commit, and only that commit's bundle and the dataset card are downloaded, into
$XDG_CACHE_HOME/agentenv/hf/<org>/<repo>/<commit> (~/.cache by default), where a later run of the commit finds
them. Without a path, the run takes the only bundle under bundles/, or the one the card's agentenv: default names,
else the repo's root when it has a kind folder (envs/, tasks/, ...). It prints the repo, commit and bundle, then
runs as a folder does, with ids under @hf/<org>/<repo>/<name>, so a rerun of the same commit reuses what the last one
wrote, and records the commit with each run. A bundle's <name> is its folder under bundles/, or its path for a folder
elsewhere; the root's ids are @hf/<org>/<repo>, and its name is the repo's. The card says what each bundle needs:
agentenv:
default: hello # the bundle a run without a path takes, of several under bundles/
bundles:
hello: # the bundle's <name>, or the repo's name for the root
plugins: ["agentenv-example>=1.2"] # what a bundle without a bundle.toml requires
setup: agent-env example setup # shown when a missing plugin, agent, env or artifact stops a run
Each run checks the bundle's bundle.toml, else the card's plugins, the first one before the bundle is downloaded; the
setup command is never run. A gated or private dataset needs hf auth login or HF_TOKEN.
A package of your own can add env types, providers, task steps and stores to agent-env, and agent-env plugin lists, checks, adds and removes installed plugins. The plugin docs show how.
Every task in a bundle is an OpenEnv env, with the openenv extra installed (pip install 'agentenv-framework[openenv]'). agent_env.openenv.build_app(bundle) returns the OpenEnv server for a bundle, a folder or an installed bundle's name, or for a mapping of split names to bundles. Any OpenEnv client resets it to a task, which deploys the task's envs and opens its agent's turn, acts through the envs' tools and an added end_turn tool, and gets the task's verifier score as its reward.
Servers and the env clock work in UTC. To run an agent in a user's time zone, the task sets it on the agent's deploy_agent step as env_vars: {"TZ": "America/New_York"}, which reaches the agent's sandbox, and names the zone in the agent's prompt. While the env clock is armed, the gateway's get_time tool takes that IANA name as time_zone and adds the local_time in that zone, and a trigger executor's working hours can take a time_zone instead of a fixed utc_offset, so they keep their local hours across daylight-saving changes.
CONTRIBUTING.md is the contributor guide: open an issue before anything larger than a bug fix, one logical change per pull request with tests, pull request titles in the form type(scope): summary, an approving review from a code owner (CODEOWNERS) and green CI. AGENTS.md is the repository map and conventions file for contributors and coding agents.
| Document | Covers |
|---|---|
| www.agentenvframework.com/docs | the user guide: environments, artifacts, agents, tasks, the registry and plugins |
packages/agentenv-protocol/README.md | wire contract, environment server SDK, A2A agent framework |
CONTRIBUTING.md | development setup, test tiers, CI jobs, pull request rules |
AGENTS.md | repository map, configuration and extension-point summary, conventions for contributors and coding agents |
SECURITY.md | private vulnerability reporting and supported versions |
CODE_OF_CONDUCT.md | Contributor Covenant |
.agentenv/config.example.toml | the all-local configuration to copy |
.env.example | a commented reference of the AGENT_ENV_* variables; agent-env never loads this file, export what you need yourself. Its AGENT_ENV_ENVIRONMENT line is read only by an installed plugin, never by agent-env |
The agentenv-framework distribution and agentenv-framework-protocol are versioned separately (0.9.x and 0.1.x today), both in their pyproject.toml; agent-env releases carry a vX.Y.Z tag, and agentenv-framework-protocol is bumped in the same commit and has no separate tag today. There is no agent_env.__version__ attribute; agent-env --version prints the installed version. Protocol extensions carry their version in the URI (urn:agentenv:clock/v1, urn:agentenv:agent-config/v1, urn:agentenv:trajectory/v1). One version can take more than one request shape: under v1 the skill, trajectory, snapshot and changelog extensions accept object-transfer requests next to their older shapes, and the request field lists on an agent's card say which ones that agent takes. Renamed CLI commands are removed outright; no deprecated aliases exist at this version. A pull request that breaks the classes and entry points plugins build on fails CI unless its title marks the break with !; beyond that, a written compatibility and deprecation policy does not exist yet.
A release is a version bump in both pyproject.toml files plus a vX.Y.Z tag. Maintainers cut releases: the bump is automated when a labelled pull request merges, so contributors do not edit version or push tags (see the Releases section of CONTRIBUTING.md). Each release publishes both packages to PyPI and gets a GitHub release whose notes list the pull requests merged since the previous one; there is no CHANGELOG.md.
Ask questions in Discussions Q&A, and report bugs with the bug report form. Report vulnerabilities privately through the contact in SECURITY.md, not in public issues; only the latest release is supported, so reproduce against it first. Contributors follow CONTRIBUTING.md and the Code of Conduct; every pull request needs a code-owner review. agent-env and agentenv-framework-protocol are licensed under the Apache License 2.0; see LICENSE and NOTICE. Their third-party dependencies and those dependencies' licenses are listed in THIRD_PARTY_NOTICES.md.
To cite AgentEnv Framework, use the metadata in CITATION.cff. GitHub's Cite this repository button in the repository sidebar exports it as APA or BibTeX:
@software{agentenv_framework,
author = {Arakelyan, Edgar and Polakam, Tejas and Singhal, Pratyush},
title = {AgentEnv Framework},
year = {2026},
url = {https://github.com/scaleapi/agentenv-framework},
license = {Apache-2.0}
}