Bessemer (bsmr) builds native TypeScript and Rust projects with a shared,
content-addressed cache. It reads package.json, pnpm-lock.yaml,
Cargo.toml, and Cargo.lock. Conventional projects do not need build files
or Starlark.
Note
Bessemer is a preview. Releases in the 0.0.x series may change their API.
TypeScript with pnpm is the primary integration. Rust with Cargo is
experimental.
On macOS or Linux:
curl --proto '=https' --tlsv1.2 --fail --location \
https://github.com/dedalus-labs/bsmr/releases/latest/download/bsmr-installer.sh \
--output bsmr-installer.sh
sh bsmr-installer.shWindows users can download and run bsmr-installer.ps1 from the
latest GitHub release.
Every release also includes platform archives, SHA-256 checksums, and build
provenance attestations.
The beginner interface has three commands:
bsmr init # Create .bsmr in the current project.
bsmr build <path> # Build one native package and its dependencies.
bsmr clean # Delete generated files and local build state.Use package paths in normal work:
bsmr build apps/api
bsmr build packages/rust/dfabsmr -h shows this small surface. bsmr --help shows the complete command
line, including target labels, graph queries, custom rules, and operational
tools.
A buildable package needs package.json, tsconfig.json, and
tsdown.config.ts. The workspace root needs pnpm-workspace.yaml and a frozen
pnpm-lock.yaml.
bsmr init
bsmr build apps/apiBessemer installs the exact pinned pnpm workspace once. It then schedules and caches package builds independently.
A workspace needs Cargo.toml, Cargo.lock, and an exact Rust toolchain. Use
an exact stable version such as 1.94.1 or a dated nightly such as
nightly-2026-04-11.
bsmr init
bsmr build packages/rust/dfaBessemer caches the complete Cargo output and can restore deleted outputs without running Cargo again. The Cargo adapter is local-only until Rust toolchains and registry inputs are fully content addressed.
Read the quick start or the full documentation.
Build the documentation locally:
python -m pip install -r docs/requirements.txt
python -m mkdocs serve -f mkdocs.ymlcargo build --locked --bin bsmr
python3 test.py --ci --git --bsmr=target/debug/bsmr
pnpm install --frozen-lockfile --ignore-scripts
pnpm run ci checkBessemer began as a upstream fork and now has its own product interface, native
ecosystem adapters, cache policy, release process, and roadmap. See
NOTICE and UPSTREAM_CHANGELOG.md for
upstream provenance.
Except where an inherited notice states otherwise, Bessemer is licensed under the Apache License 2.0.