Skip to content

Library shapes

Worked end-to-end examples, one per common library shape. Each page walks through the putitoutthere.toml, the release.yml, the publish-job prerequisites, and the gotchas specific to that shape.

Pick the one that matches your repo. If none quite fit, the closest shape plus Configuration should cover it.

Single-package shapes

One manifest, one registry. Pick the one that matches your package manager.

Multi-package workspaces

Many packages from one repo. piot doesn't auto-discover them — declare each one explicitly — but it does orchestrate cascade, topological order, and per-package publishing.

Rust core, multiple registries

One Rust crate feeds multiple artifacts on multiple registries.

  • Rust + PyO3 wheels — crate on crates.io + PyO3 wheels on PyPI via maturin, no napi. Subset of the polyglot shape.
  • Python wheels with C/C++ extensionssetuptools or hatch + cibuildwheel for the pillow / lxml / numpy shape (C/C++/Cython, not Rust).
  • Rust + napi npm — crate on crates.io + napi-rs family on npm, no PyPI. The inverse.
  • Polyglot Rust library — the full shape: crate + PyO3 wheels + napi family, all three registries from one core.

Distribution-only shapes

Specific distribution patterns piot supports, independent of source language.

  • Bundled-CLI npm family — a compiled CLI (Rust, Go, whatever) published as an npm per-platform family so npm install -g my-tool gives users a binary on PATH. The esbuild / biome distribution shape.
  • Dual-family npm (CLI + napi) — when one conceptual library needs both a napi addon and a CLI binary. piot doesn't support merging the two under one top-level; this page documents the split-package workaround.

Not covered here (yet)

If your shape isn't listed, start with Concepts for what piot does and doesn't cover, then Configuration for the [[package]] grammar. Known gaps enumerates the shapes piot deliberately won't absorb (so you can rule them out early).

Want a shape added? Open an issue with your putitoutthere.toml and release.yml; it's the fastest path to a new page.

Released under the MIT License.