# tract 1.0 public API (draft) ## TLDR A regular Rust project should include `tract-rs` only. ## Scope These crates are meant to represent a public API for tract for integration in "simple" use case. We commit on Semver stability on these crates interface. The other crates are considered internal and their interface can change any time. The public API scope is limited to model-level manipulation, no access to individual model graph nodes and operators is allowed. ## Crates * interface definition: `tract-api` in `tract/api` * rust implementation over tract internal crates: `tract-rs` in `tract/api/rs` * tract as a C-friendly dynamic library: `tract-ffi` in `tract/api/ffi` * rust client over `tract-ffi` (use tract as a shared library): `tract-proxy` in `tract/api/proxy`. It implements `tract-api`, so is source-swapable with `tract-rs`. * python client: in `tract/api/py`