Skip to main content

pera banner

pera

The benchmarking platform for physical intelligence. This is its open SDK.

pera evaluates robot policies (VLAs) on canonical, versioned simulation protocols: same tasks, same seeds, same rules for every model. Your model stays on your GPU; the benchmark runs on pera's servers over a WebSocket Environment API. Every published score is anchored to the model authors' own harness run on the same machine, and links to per-episode videos, action traces, labeled failures, and a checksummed evidence bundle anyone can verify.

Models evaluated so far include OpenVLA-OFT, GR00T N1.6, π0.5, X-VLA, SmolVLA, Octo, MolmoAct2, and PulseVLA across the four LIBERO suites and SimplerEnv WidowX.

Install

pip install pera-sdk

Python ≥ 3.10. Runtime dependencies are only numpy and websockets — no framework, validation stack, HTTP client, or computer-vision package to fight your model's environment.

Sixty seconds to a score

import pera

MANIFEST = {
    "schema_version": "pera.policy.v1",
    "name": "my-policy",
    "observation": {
        "cameras": ({"role": "primary", "resolution": (256, 256), "required": True},),
        "language": True,
    },
    "control_frequency_hz": {"trained": 20.0, "accepts": (10.0, 30.0)},
    "action": {
        "kind": "chunk", "horizon": 8,
        "translation": {"format": "delta", "frame": "base"},
        "rotation": {"format": "euler_xyz"},
        "gripper": {"format": "continuous_neg1_1", "close": "high"},
    },
}

def act(obs, task):
    # obs["images"]["primary"]: HxWx3 uint8 (upright), obs["state"]: np.ndarray | None
    return my_model(obs, task.instruction)   # -> (horizon, 7) action chunk

out = pera.evaluate(act, "libero-spatial@1", url=PERA_URL, api_key=KEY,
                    policy_manifest=MANIFEST,
                    tasks=[0], episodes_per_task=2)   # smoke-test scale
print(out["episodes"], "->", out["run_id"])

Two episodes cost a minute and catch convention bugs before they cost an afternoon; when the videos look right, widen to the full protocol (tasks=list(range(10)), episodes_per_task=50 for the LIBERO suites).

No GPU is needed on your side until a real model enters the loop — the simulator runs server-side, so you can prove your whole integration from a laptop.

Stateful policy (internal history, action queues, per-episode reset)? Drive the loop yourself with pera.make() — see docs/03-stateful-and-chunked-policies.md.

The manifest is the contract

You declare what your policy consumes and emits — cameras, state format and rotation convention, action space, control rate. The platform resolves your manifest against the benchmark's:

  • direct — formats match, nothing touches your data;
  • adapted — explicit, recorded transforms (e.g. a resize), listed in the result bundle;
  • refused — incompatible, before any simulation runs or credits burn.

A mismatched pair can never silently produce garbage — that's the design goal. The convention bugs that inspired it (quaternion double-cover at θ=π, a wrist camera served in the wrong frame, upside-down training images) are documented in docs/02-manifests-and-contracts.md, along with a checklist for your own integration.

Evidence you can check

Every evaluation exports a bundle: seeds, per-step action transcripts, per-episode outcomes, failure videos, and per-file checksums under a root hash. The bundle format is an open spec. Verify any published bundle:

pera verify path/to/bundle

See docs/04-verifying-bundles.md. The spec itself is published in spec/ — bundle format, wire protocol, format registry, manifest schemas and every launch protocol.

Tutorials — runnable

tutorials/ has three notebooks plus the actual clients behind every published leaderboard row:

  • 01 · Quickstart — manifest → evaluation → results
  • 02 · Explore & verify bundles — fully offline: dissect a real vendored evidence bundle, tamper with it, watch verification fail, play the episode video
  • 03 · Stateful policy loops — the make() pattern for models with history/action queues
  • tutorials/*_client.py — the production integrations (OFT, GR00T, Octo, SmolVLA, π0.5, X-VLA, PulseVLA), each documenting the convention that mattered

New here? Start with ONBOARDING.md — the seven-step path from install to a score you can trust.

Reference docs

  1. Quickstart — first evaluation, reading results
  2. Manifests & contracts — declaring your policy honestly
  3. Stateful & chunked policies — make() loops, replanning
  4. Verifying bundles — the evidence format
  5. Walkthrough: SmolVLA on LIBERO-Spatial — a complete worked example, from pip install to a score you can compare against our published row
  6. Walkthrough: π0-FAST on LIBERO-Spatial — a full 500-episode run, same-machine reference anchor, and evidence-led investigation

Status & access

The hosted platform is in early access with waitlisted API keys. The SDK, bundle spec, and these docs are Apache-2.0. The evaluation engine itself is not open source — published scores are verified precisely because pera runs them; the open spec plus pera verify is how you audit us.


pera is a verapulse project.

Metadata

Release files for pera-sdk 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 pera-sdk 0.3.0
File Size Uploaded Provenance
pera_sdk-0.3.0.tar.gz 1.0 MB Without provenance Details

Built distribution (wheel)

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

Total release size: 1.1 MB

Release files / pera_sdk-0.3.0.tar.gz

Download URL pera_sdk-0.3.0.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
42f5fe9e0cdb791a9a83b8cec6c48c546862b1427da858597f17a440855f94d7
BLAKE2b-256 checksum
How to use checksums
fcc9bbf85a1bf824d13227b6f23226ae9822283f39080d71e78d3c11ef50ffb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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

Download URL pera_sdk-0.3.0-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b7ad5969aa5d7391d705f8e784fe5b80b3e921a8f8e29f0a56bc04d4b920e36
BLAKE2b-256 checksum
How to use checksums
d3448b17dee8633742c3cd9714b52b39671605480fadd89a481dfe3273effcda
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for pera-sdk 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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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