Tusk Drift Schemas
This repo holds schemas defined as protobuf files used by Tusk Drift. We use Buf to generate code for each language we support (currently TypeScript, Golang, and Python), and prost-build to generate Rust types.
Prerequisites
Before generating schemas, install the following:
-
Install the Buf CLI.
-
Python
betterproto(for Python code generation):pip install "betterproto[compiler]>=2.0.0b7" # Or using the requirements file: pip install -r requirements.txt
-
Rust toolchain (for Rust schema crate code generation / checks):
rustup toolchain install 1.93.1
This repo also pins Rust in
rust-toolchain.toml.
Generating Schemas
After modifying .proto files, regenerate the code:
npm run generate
Generated package directories:
| Language | Directory |
|---|---|
| TypeScript | generated/ts |
| Go | generated/go |
| Python | generated/python |
| Rust | rust/src/generated |
[!NOTE] Rust generated files live under
rust/src/generatedso the published crate is self-contained (crates.io packages only include files within the crate directory).
[!NOTE] You may see "duplicate generated file name" warnings from betterproto. These are harmless and can be ignored — they occur because multiple proto packages share the same Python namespace (
tusk.drift).
Then build the TypeScript package:
npm run build
[!NOTE]
npm run buildrunsnpm run sync:exportsbefore bundling. You do not need to manually editpackage.jsonexports when adding or removing files within the existing TypeScript export roots (generated/ts/*, andsrc/*). Only updatescripts/sync-exports.mjsENTRY_GROUPSwhen introducing a brand-new export root directory.
Generate/check Rust schema types:
cargo check -p tusk-drift-schemas
Usage
Installing schemas in TypeScript projects
npm install @use-tusk/drift-schemas
Developing locally:
- In this repo, run
npm linkto create a symlink to the local package. - In your project, run
npm link @use-tusk/drift-schemasto use the local package. - After updating the schemas, run
npm run buildto rebuild the package. - Run
npm unlink @use-tusk/drift-schemasto remove the local package.
Installing schemas in Golang projects
go get github.com/Use-Tusk/tusk-drift-schemas
When developing locally, add this to go.mod in your project:
replace github.com/Use-Tusk/tusk-drift-schemas => ../tusk-drift-schemas
Run go mod tidy to update the dependencies.
Remember to remove this before pushing.
Installing schemas in Python projects
pip install tusk-drift-schemas
Then you can import as
# Core schemas
from tusk.drift.core.v1 import *
# Backend schemas
from tusk.drift.backend.v1 import *
Installing schemas in Rust projects
[dependencies]
tusk-drift-schemas = "0.1.30"
Then import generated protobuf types:
use tusk_drift_schemas::tusk::drift::backend::v1::ExportSpansRequest;
use tusk_drift_schemas::tusk::drift::core::v1::Span;
Releasing
Versioning policy: this repo currently uses lockstep versions across NPM (package.json), PyPI (pyproject.toml),
and crates.io packages (rust/Cargo.toml).
Use the release script to create a new release:
# Patch release (0.1.22 → 0.1.23)
./scripts/release.sh
# Minor release (0.1.22 → 0.2.0)
./scripts/release.sh minor
The script will:
- Run preflight checks (on main, up to date, no uncommitted changes)
- Run
generateandbuildto verify everything works - Update version in
package.json,pyproject.toml, andrust/Cargo.toml - Commit, tag, and push to GitHub
- Create a GitHub Release (which triggers the NPM & PyPI publish workflows)
[!TIP] If a broken release occurs, or you just want to test some stuff, you can supply an optional version override to the GH actions manually, like
0.1.23.dev1.
Manually publishing from crate directory
cd rust
cargo publish
Metadata
Release files for tusk-drift-schemas 0.1.36
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tusk_drift_schemas-0.1.36.tar.gz | 18.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tusk_drift_schemas-0.1.36-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.4 kB
Release files / tusk_drift_schemas-0.1.36.tar.gz
| Download URL | tusk_drift_schemas-0.1.36.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7cbcc74bef7310f202fe8e49481ef4a1b3548ff75449f2bb0e07f8e25aa1fc3f
|
|
BLAKE2b-256 checksum How to use checksums |
561f2d23bea37b4fb6a3f21c1f93da4ddd045a382113cfe0c8e80922846f67cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 23, 2026.
Transparency logRelease files / tusk_drift_schemas-0.1.36-py3-none-any.whl
| Download URL | tusk_drift_schemas-0.1.36-py3-none-any.whl |
|---|---|
| Size | 17.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
022f3b95b519d73c8d8dc0f74257d401d70f127e7123e037fd6843342e731fb9
|
|
BLAKE2b-256 checksum How to use checksums |
e689895cc0e0f2aa779d1c58924add601ce3fd255793f09ad4ca65a69319c9eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 23, 2026.
Transparency log