Early development (M0). The workspace compiles; CLI and Python SDK are stubs.
import emry
with emry.run("llama-sft", config={"lr": 2e-5}, metrics=["loss", "lr"], live="auto") as run:
for step in run.steps(10_000):
run.emit(loss=loss, lr=scheduler.get_last_lr()[0])emry engine --project llama-sft --socket /tmp/emry-$SLURM_JOB_ID.sock
emry tui --socket /tmp/emry-$SLURM_JOB_ID.sock
emry watch ./logs/llama-sft_20260621_120000- Rust 1.87+ (
rust-toolchain.tomlpins the toolchain) llvm-tools-previewfor coverage:rustup component add llvm-tools-previewcargo-llvm-cov:cargo install cargo-llvm-cov- Python 3.10+ for hooks and the future SDK
# Full local CI (fmt, clippy, test, ≥90% coverage)
./scripts/pre-commit-rust.sh
# Coverage only
./scripts/check-coverage.sh
# Python tests (when package grows)
pip install -e ".[dev]"
pytestpip install pre-commit
pre-commit installHooks run: trailing whitespace, YAML/TOML checks, then ./scripts/pre-commit-rust.sh (fmt + clippy + test + 90% line coverage gate).
| Check | Threshold |
|---|---|
cargo clippy |
-D warnings |
| Rust line coverage | ≥ 90% (workspace) |
| Python line coverage | ≥ 90% (pytest --cov-fail-under=90) |
Apache License 2.0 — see LICENSE.