Skip to main content
This guide is for contributors working on the Jolter repository.

Prerequisites

  • Rust 1.85 or newer
  • Cargo
  • Git
  • platform build tools for the selected target
Build the workspace:
cargo build --workspace --all-targets --locked
Development binary:
Windows: target/debug/jolter.exe
Unix:   target/debug/jolter

Quality gates

Format:
cargo fmt --all -- --check
Lint:
cargo clippy --workspace --all-targets --locked -- -D warnings
Test:
cargo test --workspace --all-targets --locked
Coverage:
cargo llvm-cov --workspace --all-targets --locked --fail-under-lines 80
Audit:
cargo audit

Isolated manual testing

Do not test against your real home unless you intend to.
export JOLTER_HOME="$(mktemp -d)"
cargo run -p jolter-cli --bin jolter -- use node@24
PowerShell:
$env:JOLTER_HOME = Join-Path $env:TEMP "jolter-dev"
cargo run -p jolter-cli --bin jolter -- use node@24

Change expectations

Behavioral changes should update:
  1. implementation and focused tests;
  2. CLI help text when the command surface changes;
  3. user docs in docs.jolter.dev;
  4. roadmap or changelog entries when release status changes.
Preserve legacy input compatibility unless an intentional migration is designed and documented.

Security-sensitive areas

Changes to URL validation, redirects, checksums, archive extraction, symlink handling, permissions, locking, temporary paths, plugin verification, or atomic publication require adversarial tests. Read the security model before changing installer, plugin, or storage behavior.

Documentation development

From docs.jolter.dev:
bun install
bun run dev
Keep docs examples aligned with:
cargo run -p jolter-cli --bin jolter -- --help