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
- Quickstart — first evaluation, reading results
- Manifests & contracts — declaring your policy honestly
- Stateful & chunked policies —
make()loops, replanning - Verifying bundles — the evidence format
- Walkthrough: SmolVLA on LIBERO-Spatial — a complete worked example, from
pip installto a score you can compare against our published row - 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pera_sdk-0.3.0.tar.gz.
File metadata
- Download URL: pera_sdk-0.3.0.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42f5fe9e0cdb791a9a83b8cec6c48c546862b1427da858597f17a440855f94d7
|
|
| MD5 |
290db1c65f708270d4029b5e3c93c2b6
|
|
| BLAKE2b-256 |
fcc9bbf85a1bf824d13227b6f23226ae9822283f39080d71e78d3c11ef50ffb0
|
File details
Details for the file pera_sdk-0.3.0-py3-none-any.whl.
File metadata
- Download URL: pera_sdk-0.3.0-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b7ad5969aa5d7391d705f8e784fe5b80b3e921a8f8e29f0a56bc04d4b920e36
|
|
| MD5 |
c497312cb758b30fa1cd51af8e39195e
|
|
| BLAKE2b-256 |
d3448b17dee8633742c3cd9714b52b39671605480fadd89a481dfe3273effcda
|