OpenViSTAI · Agents · Blockchain · Crypto
Menu
Developer Tools

Crucible

Crucible is a Rust command-line fuzzer for Solana programs that mutates instruction sequences and typed parameters, simulates transactions locally through LiteSVM, and uses coverage feedback to explore program behavior. Developers define actions and invariants to test property-based behavior and stateful conditions. It builds on LibAFL and tracks sBPF edge coverage and program-state coverage.

Independent OpenViST project profile, based on linked sources.

Crucible — OpenViST project profile in Developer Tools.
OpenViST project illustration. See the linked sources for product details.
Understand the project

Practical overview

When it fits

Use Crucible when you can define the actions and invariants for a Solana program and want coverage-guided exploration of instruction sequences or state transitions.

Who it is for

  • Solana program developers writing fuzz harnesses and invariants.
  • Teams seeking to explore instruction-sequence and state-dependent behavior beyond fixed unit or integration tests.

Documented uses

  • Generate and mutate sequences of Solana program actions and their typed parameters.
  • Simulate transactions locally while using coverage feedback to guide exploration.
  • Check program properties and state invariants across generated action sequences.
  • Triage crashes by minimizing and replaying findings, and produce LCOV reports when programs have debug symbols.
Before you choose

Requirements & limits

The project is available as a public source repository and documents installation from source with Cargo. It is licensed under MIT.

  • Crucible is a developer CLI and fuzzing framework, not a hosted testing service.
  • Typed bindings can be generated from standard Anchor, Codama or Shank IDL; the README also documents raw calls when no IDL is available.
  • Stateless mode starts each iteration from a post-setup snapshot; stateful mode retains a coverage-indexed pool of live states and uses more memory as that pool grows.
  • Crash minimization and replay are included; LCOV reporting requires debug symbols, and viewing reports uses genhtml.
  • Runtime depends on the target program, tracing mode, state-pool growth and worker count.

Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.

Source-based practical guide

Install Crucible and start a fuzz harness

Install the CLI from source, initialize a harness directory, and run a named fuzz test.

Before you start

  • Rust and Cargo, for the documented Cargo installation.
  • A Solana program and test harness to fuzz; the project describes defining actions and invariants.

Steps

  1. Clone the Crucible repository and change into its directory.

  2. Install the CLI with the command below.

    Documented command
    cargo install --path crates/crucible-fuzz-cli
  3. Initialize a harness with crucible init ; the default location is fuzz//.

  4. Run a named test with crucible run --release.

Expected outcome

The documented workflow installs the CLI, creates a harness directory, and starts the selected release-mode fuzz test.

Guide limitations

  • The README does not specify all harness-writing steps in this quick start; consult its getting-started and harness documentation.
  • Performance depends on the target program, tracing mode, state-pool growth and worker count.
Evidence and transparency

Sources & review

Source record details
Source availability
Active
Sources checked
17 October 2026
Original website title
asymmetric-research/crucible · Official homepage title · retained in its source language