Metadata-Version: 2.4
Name: digiarena
Version: 0.1.0
Summary: Python SDK for DigiArena (digiarena.org): browse hosted robot-simulation scenes, deploy cloud gyms, submit to benchmarks.
Project-URL: Homepage, https://digiarena.org
Project-URL: Repository, https://github.com/Grounded-Intelligence-Initiative/digiarena-client-python
Project-URL: Documentation, https://digiarena.org/docs/api
Author-email: Xiatao Sun <sunxiatao@gmail.com>
License: Apache-2.0
License-File: LICENSE
Keywords: benchmark,gaussian-splatting,gymnasium,real2sim,robotics,simulation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Requires-Dist: world-engine-client>=0.2
Description-Content-Type: text/markdown

# digiarena (PyPI: `digiarena`)

Python SDK for [DigiArena](https://digiarena.org) — browse hosted
robot-simulation scenes, deploy them as cloud gyms, and submit to benchmarks.

```bash
pip install digiarena
```

```python
import digiarena as da

da.login()                                   # paste an API key from digiarena.org → Settings
scenes = da.scenes.list(query="kitchen")
gym = da.deploy(scene="kitchen_001", task="pick_mug_to_sink")
env = gym.connect()                          # → world_engine_client.RemoteEnv
obs, info = env.reset(seed=0)
obs, r, term, trunc, info = env.step(action)
gym.close()
```

CLI with the same surface:

```
digiarena login
digiarena scenes list --query kitchen
digiarena deploy --scene kitchen_001
digiarena leaderboard tabletop-v1
digiarena usage
```

## Layering

`digiarena` depends on and reuses
[`world-engine-client`](https://github.com/Grounded-Intelligence-Initiative/world-engine-client-python)
(`connect(token, url) → RemoteEnv`). This package covers everything from your
account to that token — scene gallery, cloud deploy, benchmark submission,
leaderboards, usage — and never reimplements the wire protocol.

- Zero heavy dependencies: importing `digiarena` pulls stdlib + numpy only
  (via `world-engine-client`). No torch / gymnasium / opencv.
- Every call hits the public REST API (`/api/v1/*`) with
  `Authorization: Bearer da_live_...` — the SDK is a thin wrapper you could
  replace with curl.
- Typed errors with actionable "Possible fixes" (the World Engine style).
- Endpoints still in later platform milestones (deploy orchestration,
  benchmark submission) raise `NotImplementedYetError` with the server's own
  guidance — the SDK surface is stable ahead of them.

Scene content never transits your machine: there is no upload()/download().
Content is authored in the platform's browser editor; public scenes are used
via `scene.fork()` + `da.deploy()`.

## Credentials

`DIGIARENA_API_KEY` env var (CI/batch) → `~/.config/digiarena/credentials`
(written by `da.login()` / `digiarena login`, mode 0600).
`DIGIARENA_API_URL` overrides the endpoint for staging deployments.
