embodied-ops
Reliable collection, evaluation, and artifact workflows for embodied AI.
embodied-ops contains the workflow primitives that sit above robot and policy
adapters: episode decisions, sample-timing checks, deterministic evaluation
plans, and transactional artifact publication. The package has no runtime
dependencies and does not define a competing robot API.
Install
python -m pip install embodied-ops
Scope
| Area | Public contract |
|---|---|
| Collection | Portable experiment IDs, episode decisions, reset policy, sample freshness and pair skew |
| Evaluation | Stable task/repetition plans and deterministic run slots |
| Artifacts | Atomic file and directory publication, create-only reports, JSON helpers, and SHA-256 digests |
Use the native interface of the framework that owns the hardware integration,
such as LeRobot Robot and Teleoperator. ROS nodes, drivers, control leases,
safety limits, datasets, policies, and process supervision remain in those
framework or robot-specific packages.
Atomic artifacts
from pathlib import Path
from embodied_ops import OutputDirectoryTransaction
with OutputDirectoryTransaction(Path("runs/eval-001")) as transaction:
assert transaction.path is not None
(transaction.path / "metrics.json").write_text("{}\n")
transaction.commit()
If the body fails or exits without commit(), the staging directory is removed
and any previous complete output remains authoritative. Once publication succeeds,
transaction.committed remains true even if removal of the displaced backup fails;
that recovery state raises PublishedOutputCleanupError with both paths. Unfinished
staging or backup siblings block reuse until they are inspected. For single files,
create_only_output_file() provides the same build-then-publish flow without
ever replacing an existing path.
Evaluation plans
from embodied_ops import EvaluationPlan
plan = EvaluationPlan(
identifier="fruit-placement",
task_ids=("apple_bowl", "mango_plate"),
attempts_per_task=3,
)
for slot in plan.slots():
print(slot.sequence, slot.total, slot.task_id)
Run metadata may persist slot.to_dict() and later reconstruct the same
task/repetition position without depending on directory order.
Development
uv sync --dev
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv build
Metadata
Release files for embodied-ops 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| embodied_ops-0.3.0.tar.gz | 14.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| embodied_ops-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.7 kB
Release files / embodied_ops-0.3.0.tar.gz
| Download URL | embodied_ops-0.3.0.tar.gz |
|---|---|
| Size | 14.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5127bd1a147df3d85813eb8b3f9b4ac1d9eaced593d0334c89b56f31d073f628
|
|
BLAKE2b-256 checksum How to use checksums |
8ed1524a585326ebf8e3fae567a12e4c0ffc10b010d04bddefe96b3c5428a53c
|
| 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":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / embodied_ops-0.3.0-py3-none-any.whl
| Download URL | embodied_ops-0.3.0-py3-none-any.whl |
|---|---|
| Size | 13.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cea680cdba2a3c53498d8bdc82b42daead88d7b5300eb64073bed9fde47dc174
|
|
BLAKE2b-256 checksum How to use checksums |
c1b844ec997c13dd2737a180c1c445d1697b5693f8e0e56061d9c7b5b1e644c3
|
| 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":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|