Skip to content

Getting Started

Raul Cardenas Montoya edited this page Sep 17, 2026 · 3 revisions

Getting Started

Wiki hero

Install

The crate is not on crates.io (0.2.0 is a git tag, no registry publish). Depend on git:

[dependencies]
engram-parser = { git = "https://github.com/rmems/engram-parser", branch = "main" }

Optional features (both off by default):

[dependencies]
# Safetensors header/manifest/discovery (zero extra crates)
engram-parser = { git = "https://github.com/rmems/engram-parser", branch = "main", features = ["safetensors"] }
# mmap GGUF reader (pulls in memmap2, the crate's only optional dependency)
engram-parser = { git = "https://github.com/rmems/engram-parser", branch = "main", features = ["mmap"] }

Default builds stay zero-dependency; memmap2 activates only under --features mmap.

Load and extract

use engram_parser::{extract_expert, list_experts, load_gguf};

fn main() -> Result<(), engram_parser::ParserError> {
    let layout = load_gguf("./model.gguf")?;
    println!("architecture = {}", layout.metadata.architecture());

    for (block, expert) in list_experts(&layout) {
        let weights = extract_expert(&layout, block, expert)?;
        if let Some(gate) = &weights.gate {
            println!(
                "blk.{block}.expert{expert}.gate: dims={:?} dtype={:?} bytes={}",
                gate.dims, gate.dtype, gate.bytes.len()
            );
        }
    }
    Ok(())
}

Packed dequant (GGUF)

use engram_parser::{dequantize_packed, dequantize_q8_0};

// Raw packed bytes for a Q8_0 tensor + its dims → f32 values
let values: Vec<f32> = dequantize_q8_0(&packed_bytes, &dims)?;
// or dispatch on dtype:
let values: Vec<f32> = dequantize_packed(dtype, &packed_bytes, &dims)?;

Supported: Q8_0, Q5_K, Q6_K, IQ3_M block layout, plus the existing dequantize_f16.

Safetensors inspection (feature)

use engram_parser::safetensors::inspect_safetensors_checkpoint;

let manifest = inspect_safetensors_checkpoint("model.safetensors")?;
println!("tensors = {}", manifest.checkpoint.tensor_count);

Requires --features safetensors. Header/manifest/discovery only — no payload mmap, no Hugging Face config.json policy.

In-memory parse (tests)

use engram_parser::parse_bytes;

let layout = parse_bytes(bytes, "mem://fixture".into())?;

Development

cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo build --all-features
cargo test --all-features

# Coverage (optional)
cargo llvm-cov --all-targets --all-features --locked --lcov --output-path lcov.info

MSRV: Rust 1.97.1. Edition: 2024.

Docker

docker build -t engram-parser .
docker run --rm engram-parser
# GHCR (main):
docker pull ghcr.io/rmems/engram-parser:main

Next


Last updated: September 16, 2026 Updated by: KAI Package tip reference: 3dea2c3 (main)

Clone this wiki locally