Skip to main content

digiarena (PyPI: digiarena)

Python SDK for DigiArena — browse hosted robot-simulation scenes, deploy them as cloud gyms, and submit to benchmarks.

pip install digiarena
# Camera images are rendered on your machine; add this for image observations:
pip install 'digiarena[render]' && python -m playwright install chromium
import digiarena as da

da.login()                                   # paste an API key from digiarena.org → Settings
# Continue the exact browser attempt without resetting:
with da.attach("hosted-session-id") as env:
    obs, info = env.observe()
    print(info["episode_id"], obs["rgb"].keys())

# Or launch an independent session from an accessible scene in one call
# (env.close() also tears the session down):
with da.make("alice/kitchen_001", task="pick_mug_to_sink") as env:
    obs, info = env.reset(seed=0)
    obs, reward, terminated, truncated, info = env.step(env.action_space.sample())

# Or keep the handle for the viewer URL, logs and lifetime extension:
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 (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.

  • Light dependencies: numpy, Pillow (camera images) and Gymnasium (spaces), all via world-engine-client. No torch or opencv. import digiarena loads only the stdlib and numpy; Pillow and Gymnasium load on first use.
  • 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 (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 directly via da.deploy() without forking. Private scenes require ownership or platform admin access. Pass images=False to deploy/attach for state-only operation.

Camera images are drawn on your computer, not on the platform: the hosted session simulates physics and sends the poses with each step, and a headless Chrome on your machine renders the same scene the browser shows. This needs the render extra and a Chrome with hardware WebGL (chrome://gpu); without the extra, asking for images fails before any request. Scene assets are downloaded once per session into a temporary cache that env.close() deletes.

Remote simulation

da.attach(session_id) uses resume semantics and pauses the current attempt. env.observe() and env.render() never advance physics. env.reset(seed=...) starts a new episode; env.step(action) advances one negotiated control interval. env.close() releases control; gym.close() tears down a launched session. A live Python controller survives browser closure. Lost/uncertain actions are never retried automatically: reconnect or explicitly reset to recover.

Images are RGB uint8 arrays in obs['rgb'], keyed by configured camera name. Use cameras=['wrist'] for a subset and env.as_gymnasium() for the optional Gymnasium adapter.

Runnable examples are in the repository's examples/ directory (not part of the installed package): attach.py, reachable_pose.py, and deploy_policy.py. measure_remote.py records throughput and soak measurements. vla_smolvla.py runs a real VLA (SmolVLA via LeRobot, pip install 'lerobot[smolvla]') on your machine against a remote session, and measure_link.py reports what your network link does to stepping: steps per second, latency and bandwidth used, for state only, one camera and all cameras.

To check the whole path end to end, start Simulate in the browser editor, copy the session id from the Inspector's Python API card, and send the end effector to a pose while watching the browser:

python examples/reachable_pose.py SESSION_ID                       # small offset from the start pose
python examples/reachable_pose.py SESSION_ID --pos 0.45 0.0 0.30   # absolute position, metres
python examples/reachable_pose.py SESSION_ID --pos 0.45 0 0.3 --rot 3.14 0 0 --state-only
digiarena attach SESSION_ID --state-only                           # inspect without stepping

Development

pip install -e '.[img,gym]' pytest && python -m pytest

The tests use a stub control plane and a fake simulator; no platform is needed.

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.

Metadata

Release files for digiarena 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for digiarena 0.3.0
File Size Uploaded Provenance
digiarena-0.3.0.tar.gz 33.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for digiarena 0.3.0
File Interpreter ABI Platform
digiarena-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 55.3 kB

Release files / digiarena-0.3.0.tar.gz

Download URL digiarena-0.3.0.tar.gz
Size 33.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7e94cad80f06055abb61d967734b323c1a97a6bdd3ea6dc1fd2e68c904724ef5
BLAKE2b-256 checksum
How to use checksums
1b9865be02e6d895a15e523ad3a542b32725660b31ca348612b6fb7f041d7f3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release files / digiarena-0.3.0-py3-none-any.whl

Download URL digiarena-0.3.0-py3-none-any.whl
Size 21.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9242bfd7e3ee7d867fa68494a8e15ca7b7aa895a19c3c180e2f4ac58ea8ee64f
BLAKE2b-256 checksum
How to use checksums
ac4fff4b6e5af890764037847a67d36d999e1566c2c449ff3e0f8eb5eb75fdb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Security for digiarena 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for digiarena-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page