Observed since 20 Oct, 17:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
abundant-sdk
Python SDK for the Abundant Environment API - simulation environments for RL agent training
FastAPI-based API service for managing simulation environments for RL agent training. Currently supports Salesforce scratch orgs with browser automation via Browserbase.
Production API: https://api.abundant.systems/
This API provides:
GET /v1/environments - List available simulation environmentsPOST /v1/instances - Create new environment instanceGET /v1/instances/{id} - Get instance details with CDP URLDELETE /v1/instances/{id} - Terminate instancePOST /v1/instances/{id}/reset - Reset instance to clean statePOST /v1/instances/{id}/verify - Run verification functionGET /v1/instances/{id}/state - Get current stateuv sync
This will install all dependencies including the Foundry SDK from Test PyPI.
Set up environment variables in .env:
API_SECRET_KEY=your_secret_key
FOUNDRY_API_KEY=your_foundry_api_key
BROWSERBASE_API_KEY=your_browserbase_api_key
BROWSERBASE_PROJECT_ID=your_browserbase_project_id
Run the server:
uv run simulation-env-api
Customize server settings in src/simulation_env_api/uvicorn_config.py if needed.
Access docs at http://localhost:8000/docs
curl -X GET "http://localhost:8000/v1/environments"
curl -X POST "http://localhost:8000/v1/instances" \
-H "x-api-key: your_secret_key" \
-H "Content-Type: application/json" \
-d '{"environment": "salesforce_sales"}'
curl -X GET "http://localhost:8000/v1/instances/{instance_id}" \
-H "x-api-key: your_secret_key"
curl -X POST "http://localhost:8000/v1/instances/{instance_id}/reset" \
-H "x-api-key: your_secret_key"
A Python SDK is included for easier integration:
import asyncio
from abundant_sdk import Client
async def main():
async with Client(api_key="your_secret_key") as client:
# Create and use an instance
instance = await client.create_instance("salesforce_sales")
print(f"CDP URL: {instance.cdp_url}")
# Verify task completion
result = await instance.verify("opportunity_created")
# Clean up
await instance.terminate()
asyncio.run(main())
See examples/ directory for more detailed examples.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.27.2 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0.0 | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | black>=24.10.0; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.13.0; extra == "dev" | runtime |
pre-commitEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pre-commit>=4.2.0; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.24.0; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=6.0.0; extra == "dev" | runtime |
pytest-mockEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-mock>=3.14.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.3.3; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.7.0; extra == "dev" | runtime |
bdist_wheel · 13.87 KB · Python py3
sdist · 11.9 KB · Python source
Shared repository data · GitHub
Observed since 20 Oct, 17:46 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:62fc00774732a280eea0c6441c029fc2afd5f607bd6b00fcdfbffcf4ac364b5b