Get started
Installation
Install the command, build it from source, or add the library to a Rust project.
bagkit is a single executable with SQLite compiled in, so it needs no database server or system libraries.
On macOS and Linux:
curl -fsSL https://dstotijn.github.io/bagkit/install.sh | shThe script downloads the latest release for your platform, verifies its SHA-256 checksum and installs it to ~/.local/bin. Set BAGKIT_VERSION to pin a release, such as v0.1.0, and BAGKIT_INSTALL_DIR to install elsewhere:
curl -fsSL https://dstotijn.github.io/bagkit/install.sh | BAGKIT_VERSION=v0.1.0 BAGKIT_INSTALL_DIR=/opt/bin shRelease binaries cover macOS and Linux on arm64 and x86_64, and Windows on x86_64; the Linux binaries are statically linked. On Windows, download bagkit-x86_64-pc-windows-msvc.zip from the releases page and put bagkit.exe on your PATH.
With Rust 1.88 or later:
cargo install --locked bagkitThe repository pins Rust, Python and Node with mise:
git clone https://github.com/dstotijn/bagkitcd bagkitmise trust && mise installmise exec -- cargo build --release./target/release/bagkit --helpmise run check runs formatting, lints and tests.
Add bagkit to a Rust project. Without default features it reads extracts and writes CSV, with no SQLite, Parquet or HTTP dependencies:
[dependencies]bagkit = { version = "0.1", default-features = false }Crate features
Section titled “Crate features”| Feature | Adds | Default |
|---|---|---|
sqlite |
SQLite output, lookups and the spatial index | yes |
parquet |
Parquet and GeoParquet output | yes |
server |
The HTTP lookup server | yes |
cli |
The bagkit command |
yes |
Requirements
Section titled “Requirements”- Memory: a full national conversion peaks at about 1 GiB.
- Disk: room for the 3.6 GB extract, the output (up to 6 GiB for SQLite), and a second copy of the output while it replaces an existing one. SQLite sorts spill to temporary files, and so do ZIPs nested more than one level deep that are larger than 64 MiB; the national extract has none.
- CPU: every core is used by default;
--threadslimits that.
© 2026 David Stotijn · MIT License.