Build typed, proto-driven data-platform services in Rust — from .proto to a running, scaffolded project.
Trestle turns annotated protobuf into production-ready Rust REST APIs, typed
clients, Python (PyO3) and Node.js (NAPI) bindings, and a graph-based resource
store — all derived from proto annotations. Its trestle new command scaffolds
full project trees pre-wired for codegen, local lakehouse emulation, and
Databricks Apps deployment.
The pipeline, the crate map, and the design decisions behind it are documented in
docs/architecture.md.
| Crate | Description |
|---|---|
olai-trestle |
Unified CLI (trestle binary): trestle new for scaffolding + trestle generate / enrich-openapi for codegen |
olai-codegen |
Proto-driven code generation for REST handlers, clients, resource registries, and language bindings |
olai-store |
Generic, TAO-inspired object and association store with field-role enforcement |
olai-http |
Cloud credential abstraction + HTTP client (AWS, Azure, GCP, Databricks) |
olai-http-wasm |
Browser/WASM HTTP transport for generated clients |
Install the CLI, then scaffold a project:
brew install open-lakehouse/tap/trestle # macOS / Linux, prebuilt binary
# or: cargo binstall olai-trestle # prebuilt binary via cargo-binstall
# or: cargo install olai-trestle # build from source
# A full Databricks-Apps-ready Rust service + React frontend, with a local
# Postgres/MLflow/Envoy stack that emulates Databricks URLs.
trestle new my-app --template databricks-app-rust --profile dbx-emulatorAll three install a binary called trestle (the crate is published as
olai-trestle; the command is trestle).
trestle list-templates shows the embedded templates;
trestle new --help documents every flag. See
crates/trestle/README.md for the full scaffolding
guide and crates/olai-codegen/README.md for the
proto annotations and codegen config.
To use the libraries directly without scaffolding:
[dependencies]
olai-store = "0.0"
olai-http = "0.0"
[build-dependencies]
olai-codegen = "0.0"- Rust 1.88+ (Edition 2024)
- buf — to compile
.protointo a descriptor (codegen only) - Docker + Docker Compose (optional) — for the local platform stack that scaffolded labs/apps bring up
Standard Cargo workspace:
cargo build # build all crates
cargo test --lib --tests # unit + integration tests (skips doctests)For the full development workflow, linting, and how releases work, see
CONTRIBUTING.md.
Apache-2.0. See LICENSE.