Skip to main content

strands-env

Awesome Strands Agents

CI PyPI License Ask DeepWiki

A framework for building agent environments for RL training and evaluation with Strands Agents.

Features

An agent environment takes a task and runs the agent to completion over multiple turns, producing a rollout result — the trajectory, reward, and termination reason for that task. With strands-env, you can:

  • Define Environments — Subclass Environment, add @tool functions, plug in RewardFunction; typed Task subclasses carry per-sample fields
  • RL Training — Token-level trajectories (TITO) for on-policy training with strands-sglang
  • Benchmarking — CLI and Evaluator with checkpointing, resume, and custom metrics

Install

pip install strands-env

For development:

git clone https://github.com/horizon-rl/strands-env.git && cd strands-env
pip install -e ".[dev]"

Quick Start

Define an Environment

Subclass Environment and add tools as @tool-decorated functions:

import subprocess
import sys

from strands import tool
from strands_env.core import Environment

@tool
def run_python(code: str) -> str:
    """Run a Python snippet and return its output."""
    proc = subprocess.run([sys.executable, "-c", code], capture_output=True, text=True, timeout=10)
    return proc.stdout + proc.stderr

class CodingEnv(Environment):
    def get_tools(self):
        return [run_python]

Run It

from strands_env.core import Task

env = CodingEnv(model_factory=factory, reward_fn=reward_fn)
result = await env.rollout(Task(
    message="Write Python to compute the 10th Fibonacci number, then run it.",
    ground_truth="55",
))

result.rollout              # Rollout(token_ids=..., loss_mask=..., ...); token-level rollout if using SGLang backend
result.final_response       # "The 10th Fibonacci number is 55"
result.reward_result        # {"reward": 1.0, "info": ...}
result.termination_reason   # TerminationReason.TASK_COMPLETE

See the examples/ directory for complete, runnable demos.

Run Evaluations

python -m strands_env.eval \
    --benchmark terminal-bench-2 \
    --env examples.eval.terminal_bench.terminal_bench_env \
    --backend sglang \
    --base-url http://localhost:30000 \
    --n-samples-per-prompt 4 \
    --max-concurrency 8

Raise --n-samples-per-prompt for more stable pass@k, and --max-concurrency if you're using a hosted sandbox service.

Tip: For a non-agentic benchmark (no tool use), don't override get_tools() — the base class returns [] by default.

Built-in Environments

Ready-to-use environments under src/strands_env/environments/. Each ships with its own README, system prompt, and requirements.txt.

Environment Description
calculator Calculator tool with symbolic-equivalence reward for math reasoning.
agentcore_code Python / shell execution via AWS Bedrock AgentCore Code Interpreter.
web_search Google search + Jina page scraping with optional LLM summarization, enlightened by OpenSeeker.
harbor Run Harbor-format tasks in sandboxes. Supports training like SETA and evaluation like Terminal-Bench and SWE-bench.
tau2_bench tau2-bench customer-service dialogues (airline/retail/telecom) driven by an LLM user-simulator.
mcp_atlas MCP-Atlas benchmark runner across 36 MCP servers with 500 tasks.
agent_world_model AgentWorldModel tasks with 1000 synthetic FastAPI + SQLite environments exposed as MCP tools.

Documentation

Development

# Lint
ruff check src/ && ruff format --check src/

# Unit tests
pytest tests/unit/ -v

# Integration tests (requires running SGLang server)
pytest tests/integration/ -v --sglang-base-url=http://localhost:30000

Or if using Claude Code, just use /run-unit-tests and /run-integration-tests slash commands.

License

Apache License 2.0 — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strands_env-0.6.7.tar.gz (179.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

strands_env-0.6.7-py3-none-any.whl (163.9 kB view details)

Uploaded Python 3

File details

Details for the file strands_env-0.6.7.tar.gz.

File metadata

  • Download URL: strands_env-0.6.7.tar.gz
  • Upload date:
  • Size: 179.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for strands_env-0.6.7.tar.gz
Algorithm Hash digest
SHA256 a8374e6108abd743d2b9aadd32a6ccee1f00955871bed3a456a2176e86db5d77
MD5 1500f3179dbb86bbf843a3bc0c3c90db
BLAKE2b-256 e6593cc924c8fedf25bc8658d90a295c4f99ace96535278f0b5082e869d8481d

See more details on using hashes here.

Provenance

The following attestation bundles were made for strands_env-0.6.7.tar.gz:

Publisher: publish.yml on strands-rl/strands-env

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file strands_env-0.6.7-py3-none-any.whl.

File metadata

  • Download URL: strands_env-0.6.7-py3-none-any.whl
  • Upload date:
  • Size: 163.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for strands_env-0.6.7-py3-none-any.whl
Algorithm Hash digest
SHA256 abb5c186628824edb7cb92f740adfb20dcdb8c9f0af46d4aa23258f3a3bacf31
MD5 ca450b7d08dd754ba5b2df5b5715923d
BLAKE2b-256 de19cadcdef348b0a62c526eb88138457997661b915bac973b5b6317d3ed4af8

See more details on using hashes here.

Provenance

The following attestation bundles were made for strands_env-0.6.7-py3-none-any.whl:

Publisher: publish.yml on strands-rl/strands-env

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.7.0

2 files

This release

0.6.7 This release

2 files

0.6.6

2 files

0.6.5

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page