eclise
Shared research infrastructure: one eclise wheel under the PEP 420 namespace
eclise.*. Import path equals folder path equals taxonomy — one source tree
src/eclise/. Heavy stacks live in pixi environments, not in wheel metadata.
Extras (the published wheel)
| Extra | Import | Purpose |
|---|---|---|
utils |
eclise.utils |
Research utilities (tensor/module batching, linalg, ARE/ODE, labeled arrays, plotting) |
ode |
eclise.utils.ode |
torchdiffeq for batch_odeint |
imagenet |
eclise.datasets.imagenet |
Adapters for consuming external datasets (ImageNet-1k val sampling, label tables) |
clips |
eclise.contracts.clips |
First-party clip-shard data contract (mp4-in-HDF5 + per-frame state labels) |
vla |
eclise.contracts.vla |
Sim-/model-agnostic VLA obs/action schema + websocket env/policy serving |
all |
utils + imagenet + clips + vla | |
dev |
all + pytest |
eclise.models.{octo,smolvla,pi0}, eclise.sims.{libero,phyworld},
eclise.datasets.openvid, and eclise.launch ship as inert source in the
same wheel. Running a server or generator needs the matching pixi
environment (or python -m eclise.launch).
models/vision/ is deliberately absent: a vision-model contract will be
created only once it has at least two real consumers.
Pixi environments (from a checkout)
| Environment | Python | Kind | Purpose |
|---|---|---|---|
dev |
3.12 | library | eclise[dev] + contract/launcher tests |
libero |
3.10 | socket (env-server, port 9000) | LIBERO + robosuite/MuJoCo harness |
octo |
3.10 | socket (policy, port 8000) | Octo JAX 0.4.20 policy server |
smolvla |
3.12 | socket (policy, port 8000) | SmolVLA (LeRobot) policy server |
pi0 |
3.11 | socket (policy, port 8000) | Tooling for upstream openpi (uv / git-lfs / gsutil) |
phyworld |
3.10 | batch | Box2D families → eclise.contracts.clips shards |
phyworld-phyre |
3.9 | batch | PHYRE combinatorial family (phyre==0.2.2) |
openvid |
3.10 | batch | OpenVid-1M mp4 → 256px fixed-FPS shards |
Installing
Client-side (numpy-1.x-safe eclise.contracts.vla only — no torch/jax):
pip install "eclise[vla]"
python -m eclise.launch start octo --setup
--setup clones this repo at eclise-v<wheel version> (unless
ECLISE_ROOT already points at a checkout), installs pixi if needed, and
runs pixi install -e <env>. start returns a host/port; the caller wires
WebsocketPolicyClient / WebsocketEnvClient.
From a checkout:
pixi install -e dev
pixi run -e dev test
pixi run -e libero setup
pixi run -e libero serve --port 9000
Developing
pixi run -e dev test
pixi run -e libero serve
pixi run -e phyworld generate --family collision --grid in_dist_l0 --experiment smoke --limit 32
python -m eclise.sims.phyworld generate --family collision --grid in_dist_l0 --experiment smoke --limit 32
Editable extras without pixi: pip install -e ".[dev]". Releases are tagged
eclise-v0.2.0.
Runtime data (ECLISE_DATA_ROOT / $SCRATCH)
Runtime trees (data/, outputs/, logs/) are not part of the source
taxonomy. eclise.paths.data_root() / outputs_root() resolve, in order:
ECLISE_DATA_ROOT/ECLISE_OUTPUTS_ROOTif set$SCRATCH/eclise/{data,outputs}ifSCRATCHis set<repo>/{data,outputs}
Packages then pick a leaf (data_root() / "phyworld",
outputs_root() / "libero"). On quota-capped hosts, set SCRATCH (or the
explicit ECLISE_*_ROOT vars) so large artifacts never land on the home
quota. There are no scratch-symlink setup tasks.
Design rules
- One distribution, environments at the pixi boundary. Incompatible stacks (JAX vs torch, numpy 1.x vs 2.x) do not share an environment. Wheel extras stay light; pixi features own the heavy pins.
- Import path == folder path == taxonomy. Moving a package is a breaking import change; there is one tree and no alias extras.
eclise.contracts.clipsandeclise.contracts.vlaare contracts. Writers and readers may live in different repos/envs; document schema changes inCHANGELOG.md.eclise[vla]must remain numpy 1.x-compatible.
Package archetypes
Every package is one of three kinds. Archetype is recorded in the launcher
kind and the pixi feature shape, not in folders.
Library extra — published wheel, installed into a consumer's env, no
server. utils, imagenet, clips, vla.
Interactive socket service — pixi env isolates an incompatible stack
behind an eclise.contracts.vla websocket. octo, smolvla, pi0, libero.
- Env:
pixi install -e <name>(andpixi run -e <name> setupwhen the feature defines asetuptask). - Server logic lives in the package; the CLI is
python -m eclise.<pkg> serve(pi0 wraps upstream openpi instead). - Launch:
python -m eclise.launch start <name>→pixi run -e <env> serve.
Batch producer — pixi env; decoupled via the on-disk
eclise.contracts.clips shard contract (no socket). phyworld, openvid.
- Env:
pixi install -e <name>(no scratch-symlinksetuptask). - Job entrypoint:
python -m eclise.<pkg> <verb>(+.sbatchviapixi run -e <env>).
| Package | Archetype |
|---|---|
utils, imagenet, clips, vla |
library extra |
octo, smolvla, libero |
interactive socket service (python -m eclise.<pkg> serve) |
pi0 |
interactive socket service (setup_pi0.sh + serve_pi0.sh wrap openpi) |
phyworld |
batch producer (phyworld-phyre is the PHYRE secondary env) |
openvid |
batch producer |
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 eclise-0.2.0.tar.gz.
File metadata
- Download URL: eclise-0.2.0.tar.gz
- Upload date:
- Size: 332.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39d3c54220431efba2c390686afdf3a9c3a1dc11b12365cb16a4e1eea3be0c5e
|
|
| MD5 |
cd40c6d83a59e10e97565b1770db471d
|
|
| BLAKE2b-256 |
729021b3acab2145accdda15fc91c941c1c782db54fb2fd96224eeb33c5175b6
|
File details
Details for the file eclise-0.2.0-py3-none-any.whl.
File metadata
- Download URL: eclise-0.2.0-py3-none-any.whl
- Upload date:
- Size: 267.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2601f4e8cf73eebddc5190aa40be7ae78052f5553cdd2e0a76eb8fbb073adf0
|
|
| MD5 |
01d0175a3c89752daf8ff69befa66363
|
|
| BLAKE2b-256 |
20d6cb53facfe9bd9a441d9936f5680dfa0118773be4c6cfdeb149b6792e645d
|