srcdmp 0.1.0-alpha.1

Amazing code snapshot tool and library
Documentation

srcdmp

srcdmp (pronounced "source dump") is a source code snapshot tool. It packs an entire project directory into a single, compact .srcdmp binary file.

srcdmp wrap .                        # pack the current directory
srcdmp view snapshot.srcdmp          # browse interactively
srcdmp unpack snapshot.srcdmp ./out  # reconstruct the directory

Every snapshot filename carries its metadata:

2026-05-23-myproject-0.1.0.srcdmp

Status

srcdmp is under active development. The API and binary format are not yet stable.

cargo install srcdmp

The codecs

.srcdmp files use the SDMP codec family, designed specifically for source code text.

Codec ID Status Description
SDMP-C4 0x04 Implemented Huffman-tree compression using empirically-derived frequencies (default)
SDMP-7 0x07 Implemented Three-tier encoding with a 128-entry ASCII table + extended lookup
SDMP-8 0x08 Implemented Raw UTF-8 passthrough (no compression)
SDMP-C2 0x02 Planned Order-2 context model + arithmetic coding

SDMP-C4 is the default, balancing compression ratio and throughput.


CLI usage

Wrap a directory

srcdmp wrap . output.srcdmp
srcdmp wrap . --codec 7              # use SDMP-7 instead
srcdmp wrap . --ignore "*.png"       # skip files matching glob
srcdmp wrap . --gitignore            # respect .gitignore rules

Auto-named snapshot

srcdmp wrap . --from-cargo           # produces 2026-05-23-<name>-<version>.srcdmp

Unpack

srcdmp unpack snapshot.srcdmp              # reconstruct into current directory
srcdmp unpack snapshot.srcdmp --output ./out

Browse

srcdmp view snapshot.srcdmp           # interactive TUI browser
srcdmp unwrap snapshot.srcdmp out.log # decode to a readable log file

Inspect

srcdmp info snapshot.srcdmp           # print header metadata (codec, file count, size)
srcdmp check snapshot.srcdmp          # verify every file decodes successfully

Library API

srcdmp is both a CLI tool and a Rust library (behind the cli and fs feature flags, both enabled by default).

[dependencies]
srcdmp = { git = "https://codeberg.org/razkar/srcdmp" }
use srcdmp::{Dump, Codec};

// Create a snapshot of the current directory.
let dump = Dump::from_dir(".")
    .codec(Codec::Compact4)
    .gitignore()
    .ignore("target/**")
    .build()?;

// Write to a date-stamped file using metadata from Cargo.toml.
dump.from_cargo().write_to("dump/")?;

// Open an existing snapshot and reconstruct the directory tree.
let dump = Dump::open("2026-05-23-myproject-0.1.0.srcdmp")?;
dump.unpack_to("output/")?;

The library also exposes the individual codecs and raw format primitives via the raw module:

use srcdmp::raw::codec::sdmpc4;

let compressed = sdmpc4::encode("fn main() { loop {} }");
let decompressed = sdmpc4::decode(&compressed)?;

File annotations

Individual files can opt in or out using annotations in the first 512 bytes of content:

@srcdmp:ignore  - exclude this file from the snapshot
@srcdmp:force   - include even if the file appears binary

Binary detection checks for a null byte within the first 8000 bytes; files appearing binary are skipped automatically.


Self-hosting

Every release of srcdmp is archived as a .srcdmp snapshot in dump/.

cargo install srcdmp
srcdmp view dump/2026-05-23-srcdmp-0.1.0-dev.1.srcdmp

License

Licensed under either of

at your option.

Cheers, RazkarStudio.

Copyright © 2026 RazkarStudio. All rights reserved.