Skip to main content

crozier

An ultra-fast, memory-efficient OpenAPI-to-SDK code generator written in Rust + minijinja. crozier reproduces Fern's generated SDKs byte-for-byte (with generator-identifying comments aside), driven by nothing but an OpenAPI document and a couple of naming flags — no per-project config, no generators written in the target language.

Python is the only target today; more will follow.

Status: early. crozier generates the Python type layer (pydantic models, enums, unions/aliases) plus version.py/py.typed, and byte-matches Fern's output for those files. See docs/matching.md for exactly what is matched and the roadmap.

Install

From PyPI (fastest — a prebuilt binary, no Rust toolchain): crozier ships as platform wheels that wrap the compiled binary and expose it as a console script, so any Python installer puts it on your PATH in seconds:

pip install crozier      # or: pipx install crozier
uvx crozier --help       # run once without installing

Platforms without a prebuilt wheel fall back to the source distribution, which builds from Rust (a toolchain is needed there).

From crates.io:

cargo install crozier --locked

From the install script (prebuilt binary from GitHub Releases, verified):

curl -fsSL https://raw.githubusercontent.com/nickderobertis/crozier/main/scripts/install.sh | sh

It detects your platform, downloads the matching archive, and verifies it against a trust root independent of where it was downloaded — a Sigstore build-provenance attestation when a verifier (cosign, pip install sigstore, or gh) is present, else the canonical SHA-256 checksum. Pin a version or install location with sh -s -- --version v0.1.0 --to ~/.local/bin.

From source (latest main):

cargo install --git https://github.com/nickderobertis/crozier --locked

From a release archive (manual): each release publishes per-platform archives named crozier-<tag>-<target>.tar.gz with a matching .sha256 and a .sigstore.json provenance bundle, for targets x86_64/aarch64 Linux, x86_64/aarch64 macOS, and x86_64 Windows. Download the archive for your platform from the Releases page, verify the checksum (or the attestation), and put the crozier binary on your PATH.

Usage

crozier generate \
  --spec path/to/openapi.yml \
  --output ./generated \
  --package-name my_api \
  --project-name my-api
  • --spec — the OpenAPI 3.x document (.yml, .yaml, or .json).
  • --output — directory to write the SDK into.
  • --package-name — the Python import package (the directory under src/). Defaults to a snake_case of the API title.
  • --project-name — the distribution name recorded in version.py. Defaults to the package name.

crozier exits 0 on success (with a one-line summary on stderr) and 1 on any error, printing the exact problem and a suggested fix.

Development

The command surface is a small set of just recipes:

just bootstrap   # set up from a clean clone (toolchain + dev tools)
just check       # full gate: fmt, clippy -D warnings, tests + e2e + coverage, deny, machete, doc
just test        # fast tests with coverage enforced (95%)
just test-e2e    # drive the compiled binary and byte-compare against fixtures
just format      # rustfmt in place
just upgrade     # cargo update, then re-run the gate

See AGENTS.md for the durable contributor guide and docs/matching.md for the byte-matching strategy.

License and attribution

crozier is licensed under Apache-2.0. It is an independent, clean-room implementation — it reproduces Fern's generated output format (the project's explicit goal) and does not copy Fern's generator source.

The test fixtures under tests/fixtures/ are Fern's own output and OpenAPI test specs, used under Apache-2.0 with attribution and a statement of changes; see NOTICE and licenses/fern-APACHE-2.0.txt.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crozier-0.0.10.tar.gz (109.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

crozier-0.0.10-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

crozier-0.0.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

crozier-0.0.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

crozier-0.0.10-py3-none-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

crozier-0.0.10-py3-none-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file crozier-0.0.10.tar.gz.

File metadata

  • Download URL: crozier-0.0.10.tar.gz
  • Upload date:
  • Size: 109.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for crozier-0.0.10.tar.gz
Algorithm Hash digest
SHA256 f1cd1322f152d0a8ca9f615c84cfa3b55d6dcd132eb79f77b1fea8a64ca8c06f
MD5 5a09dbccafe2681a76b29690d49880fe
BLAKE2b-256 020dd8cb9463f3fd2806ba217001078e574ece95c5722d48e1dee3ea3da97dfb

See more details on using hashes here.

File details

Details for the file crozier-0.0.10-py3-none-win_amd64.whl.

File metadata

  • Download URL: crozier-0.0.10-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for crozier-0.0.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 cdea21cb53a488deaed68a791f3ca1be6e37dc6f2898e0cdbe7f98d7e2f5a923
MD5 92855f5ecc3c18a29d307f04c433e031
BLAKE2b-256 45dff02e99890e7e6f592fc007510315b3012934662c1da6b1c31bfcec3b9b4d

See more details on using hashes here.

File details

Details for the file crozier-0.0.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for crozier-0.0.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e1027497e6d9b680acd81c2caa5320713e1d76c1e1e7bf387005a046133e24f0
MD5 f30273209e84a73a4ba00e3c53977747
BLAKE2b-256 f774cab4fb83979d29b83931ede4cf7667b056a0252f5bd81b14a0ab090f4153

See more details on using hashes here.

File details

Details for the file crozier-0.0.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for crozier-0.0.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ef36a05258403fdf5765a46dc6255c8874c365cc80ed788f8a4eed2691045056
MD5 88ec9bfc39f7000f1473355f20ee36d0
BLAKE2b-256 7eafea6a55a1de1e4c25ea4fb9264fce82f6bc3c1738931234fa213c65b6deb0

See more details on using hashes here.

File details

Details for the file crozier-0.0.10-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for crozier-0.0.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98f960461dc74e3afa20eba76ac9c76b45f0b77855ece0f986bcd64bb3a9ebc6
MD5 28056bb31d535129ba74fe6e74311a59
BLAKE2b-256 b1607c2a97fc8e73bf40350255323635778ebc90ba07b534a51b7678f56c5bd3

See more details on using hashes here.

File details

Details for the file crozier-0.0.10-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for crozier-0.0.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 06794e7cf86b46b019e40223151fc3ccdcb43349ced34c6b0836c341d625856e
MD5 bec94a994e2bf636f329615aea7e5e69
BLAKE2b-256 8308e7d1e53bf5100b763b1a751465eaf4de40633dce36a15f9ec0744edbd42b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.31

6 files

0.0.30

6 files

0.0.29

6 files

0.0.28

6 files

0.0.27

6 files

0.0.26

6 files

0.0.25

6 files

0.0.24

6 files

0.0.23

6 files

0.0.22

6 files

0.0.21

6 files

0.0.20

6 files

0.0.19

6 files

0.0.18

6 files

0.0.17

6 files

0.0.16

6 files

0.0.15

6 files

0.0.14

6 files

0.0.13

6 files

0.0.12

6 files

0.0.11

6 files

This release

0.0.10 This release

6 files

0.0.9

6 files

0.0.8

6 files

0.0.7

6 files

0.0.6

6 files

0.0.5

6 files

0.0.4

6 files

0.0.3

6 files

0.0.2

6 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page