Open-source physical observability for workcell evidence, replay, and regression testing.
Project description
Metriplane
Open-source workcell black box for replayable physical evidence.
Official Links
- Official site: https://www.metriplane.com/
- Python package: https://pypi.org/project/metriplane/
- 3-minute v0.2.0 demo: https://www.youtube.com/watch?v=7U5nbBbGGbw
- v0.2.0 release: https://github.com/Miko997/metriplane/releases/tag/v0.2.0
- Zenodo DOI: https://doi.org/10.5281/zenodo.20736619
- External reproduction issue: https://github.com/Miko997/metriplane/issues/6
- Short feedback form: https://docs.google.com/forms/d/e/1FAIpQLSfnMZ4b3fSVVtwA89hZt3A09gf85eLfhW00FDD76TGRLNpirQ/viewform
Summary
Metriplane's frozen v0.2.0 research artifact is an open-source physical-observability system for bounded workcells. It converts replayed or calibrated workcell state into physical event logs, Cell Truth Reports, portable evidence bundles, local bundle verification, and generated regression checks. The v0.2.1 packaging release makes the core Python package and command-line interfaces installable from PyPI without changing the frozen v0.2.0 paper evidence.
Install from PyPI
Metriplane requires Python 3.12 or newer.
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install "metriplane==0.2.1"
metriplane doctor
metriplane atlas protocol export --out metriplane-protocol
The PyPI distribution contains the core Python packages and command-line entry points. Repository assets are intentionally not embedded in the wheel:
- checked-in demo datasets and domain-pack configurations
- the local web dashboard
- maintainer helper scripts
- frozen paper evidence and reproduction records
Use the exact source checkout in the reproduction section below when a command
refers to datasets/, configs/, web/, tools/, or evidence/.
When run from the wheel, doctor warnings about those source-checkout paths are
expected and do not mean the package installation failed.
Why this exists
Robotics teams often need more than raw logs after an incident. Metriplane explores a structured evidence layer where replayed workcell state becomes an inspectable incident bundle, a verification target, and a generated regression check.
Evidence Workflow
replayed workcell state
→ physical event
→ incident
→ Cell Truth Report
→ evidence bundle
→ bundle verification
→ generated regression check
Current v0.2.0 Evidence Result
The author-run evidence package included in the archived release records:
- 580 tests passed
- deterministic replay pass=true
- 6 physical events
- 1 incident
- 35.0 second missing-tool delay
- bundle verify: pass=true
- generated regression check: PASS
Quick Reproduction Path
The core SoftwareX reproduction is camera-free, uses the exact v0.2.0 tag,
and writes rerun outputs to temporary directories rather than the archived
evidence package.
git clone --branch v0.2.0 --depth 1 https://github.com/Miko997/metriplane.git
cd metriplane
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
python -m metriplane.cli doctor
RUNS=/tmp/metriplane-softwarex-runs \
./tools/mp.sh deterministic-replay datasets/demo/session_001.jsonl
metriplane atlas validate-pack configs/domain_packs/assembly_cell
metriplane atlas run \
--session-jsonl datasets/demo/atlas/assembly_cell_missing_tool.jsonl \
--pack configs/domain_packs/assembly_cell \
--out /tmp/metriplane-softwarex-atlas \
--overwrite
metriplane atlas bundle verify \
/tmp/metriplane-softwarex-atlas/evidence_bundles/INC-0001.zip
metriplane atlas test \
/tmp/metriplane-softwarex-atlas/regression_tests/INC-0001.yaml \
--json
The full maintainer gate is separate from the core artifact path and adds test and browser dependencies:
python -m pip install -e .
python -m pip install pytest playwright
python -m playwright install chromium --with-deps
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python -m pytest -q
What Metriplane Is
- observe-only
- local-first
- replay-first, camera-compatible
- bounded workcell scoped
- research-software oriented
- focused on evidence, not robot control
What Metriplane Does Not Claim
- no robot or machine control
- no safety certification
- no quality-release approval
- no people recognition
- no marker-free tracking claim
- no full 3D reconstruction claim
- no production-factory deployment validation
- no factory-wide deployment readiness
Relationship to ROS Bags and Logs
Robotics teams often debug incidents using recorded sensor data, ROS bags, logs, traces, and simulation replays. Those artifacts are valuable raw evidence. Metriplane is not a replacement for ROS bags or logs. It explores the next structured layer: incident context, evidence bundle, verification result, and generated regression check.
External Feedback
External technical feedback and public discussion links are collected on the official site:
https://www.metriplane.com/feedback/
Citation / DOI
If you use or evaluate Metriplane v0.2.0, cite the archived release:
https://doi.org/10.5281/zenodo.20736619
Reproducibility and Archived Release
The SoftwareX manuscript evaluates the archived Metriplane v0.2.0 release. Reproduction commands, expected outputs, and evidence provenance are documented in docs/softwarex_reproducibility.md.
Repository Orientation
The public Python package and command-line entry points remain named metriplane.
| Area | Path | Purpose |
|---|---|---|
| Package | metriplane/ |
Python package and CLI implementation |
| Domain packs | configs/domain_packs/ |
Workcell-specific Atlas configuration |
| Demo datasets | datasets/demo/ |
Checked-in replay inputs for reproduction |
| Evidence | evidence/ |
Release evidence, manifests, and experiment artifacts |
| Tools | tools/ |
Supported local helper scripts |
| Docs | docs/ |
Technical documentation and runbooks |
| Web UI | web/ |
Local operator and review interfaces |
Canonical SoftwareX Commands
Use the Quick Reproduction Path above for the camera-free core artifact. The same commands, expected outputs, evidence provenance, and the separate maintainer-gate sequence are maintained in docs/softwarex_reproducibility.md and the review kit.
Documentation
- Atlas evidence workflow: docs/atlas/README.md
- Physical observability scope: docs/physical_observability.md
- Development setup: docs/development.md
- Prerequisites: docs/PREREQUISITES.md
- SoftwareX reproducibility: docs/softwarex_reproducibility.md
- Evidence matrix: docs/eval/evidence_matrix.md
- Integration notes: docs/INTEGRATIONS.md
- PyPI release runbook: docs/releasing.md
- Previous detailed README archive: docs/archive/README_pre_website_refresh.md
License
MIT License. See LICENSE.
Project details
Release history Release notifications | RSS feed
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 metriplane-0.2.1.tar.gz.
File metadata
- Download URL: metriplane-0.2.1.tar.gz
- Upload date:
- Size: 249.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70a7038debe2226e95dcb25ee649195b8f1e223c180d0c2ef6fbfb7286d69ed4
|
|
| MD5 |
ba1c4f6e006896eb99ca0530b11c6b5e
|
|
| BLAKE2b-256 |
760772e295f2d98dfeceee17ab526db6ec66bb1093569a737f39a0422a20e5bb
|
Provenance
The following attestation bundles were made for metriplane-0.2.1.tar.gz:
Publisher:
publish-pypi.yml on Miko997/metriplane
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
metriplane-0.2.1.tar.gz -
Subject digest:
70a7038debe2226e95dcb25ee649195b8f1e223c180d0c2ef6fbfb7286d69ed4 - Sigstore transparency entry: 2335482733
- Sigstore integration time:
-
Permalink:
Miko997/metriplane@e2c629289bb700776553300761fb3fb8b546eeba -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Miko997
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e2c629289bb700776553300761fb3fb8b546eeba -
Trigger Event:
push
-
Statement type:
File details
Details for the file metriplane-0.2.1-py3-none-any.whl.
File metadata
- Download URL: metriplane-0.2.1-py3-none-any.whl
- Upload date:
- Size: 266.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f52af60360a149efbd28b1a36ec0908e245ebbf6625be56a8ab2b8aee036b13a
|
|
| MD5 |
9562e0edfe711363bb05e767a61d0589
|
|
| BLAKE2b-256 |
1f39d65b44ede8123dac17c69b00916ba7dcca89d4eb2af7948dd7c08a07b64a
|
Provenance
The following attestation bundles were made for metriplane-0.2.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on Miko997/metriplane
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
metriplane-0.2.1-py3-none-any.whl -
Subject digest:
f52af60360a149efbd28b1a36ec0908e245ebbf6625be56a8ab2b8aee036b13a - Sigstore transparency entry: 2335482761
- Sigstore integration time:
-
Permalink:
Miko997/metriplane@e2c629289bb700776553300761fb3fb8b546eeba -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Miko997
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e2c629289bb700776553300761fb3fb8b546eeba -
Trigger Event:
push
-
Statement type: