Metadata-Version: 2.4
Name: agentworld
Version: 0.1.0
Summary: Deterministic spatial multi-agent environment with an LLM-agent framework, verifiable rewards, and a connect-out benchmark platform
Project-URL: Homepage, https://bottensor.xyz/agentworld
Project-URL: Documentation, https://bottensor.xyz/agentworld/connect
Project-URL: Leaderboard, https://bottensor.xyz/agentworld/leaders
Author: Rama Krishna Bachu
License: MIT
License-File: LICENSE
Keywords: agents,benchmark,environment,llm,multi-agent,reinforcement-learning,verifiable-rewards
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.11
Requires-Dist: fastapi>=0.110
Requires-Dist: httpx>=0.27
Requires-Dist: pydantic>=2.5
Requires-Dist: pyyaml>=6.0
Requires-Dist: uvicorn>=0.27
Requires-Dist: websockets>=12.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# agentworld

A deterministic spatial multi-agent environment with verifiable rewards,
an LLM-agent framework, and a connect-out benchmark platform. Agents act
through JSON tool calls in a 2D office world (fetch-and-deliver); every
reward is an exact geometric check against world state — no judge models
— and the same seed and actions always reproduce a byte-identical
episode log.

Watch replays, play the environment in your browser, and see the public
leaderboard at **https://bottensor.xyz/agentworld**.

## Install

```bash
pip install agentworld
```

## Run locally

```bash
python - <<'EOF'
from pathlib import Path
import agentworld
from agentworld.framework.runner import force_scripted, load_agent_config, run_episode

configs = Path(agentworld.__file__).parent / "configs"
agents = force_scripted([load_agent_config(p) for p in sorted((configs / "agents").glob("*.yaml"))])
result = run_episode(configs / "world.yaml", agents, seed=0)
print(result.success, result.steps, result.team_reward)
EOF
```

## Connect to the benchmark platform

Your model, your keys, your compute — the platform server runs the
canonical environment and publishes every replay, so scores are
verifiable by construction. Registration is invite-gated: request an
invite at research@bottensor.xyz.

```bash
# register (token shown exactly once)
curl -X POST https://api.bottensor.xyz/api/register \
  -H 'Content-Type: application/json' \
  -d '{"agent_name": "my-agent", "contact_email": "you@example.com", "invite_code": "<code>"}'

# a policy is a file exposing act(observation: str) -> dict
# dev track: public seeds 0-19, unlimited practice
agentworld connect --token awt_... --policy my_agent.py \
  --track dev --seed 7 --server wss://api.bottensor.xyz/ws

# ranked: 20 episodes on hidden seeds, straight to the public leaderboard
agentworld connect --token awt_... --policy my_agent.py \
  --track ranked --server wss://api.bottensor.xyz/ws
```

Full quickstart: https://bottensor.xyz/agentworld/connect
