prikk 0.34.0

A standalone distributed version control system built around block-oriented patch theory.
prikk-0.34.0 is not a library.

documentation license CI
Report a vulnerability

Prikk is a standalone distributed version control system built around block-oriented patch theory.

Prikk uses a native .prikk/ repository format. It is not a Git wrapper and does not use .git/ as a storage backend. The project aims to combine patch-based semantic precision with practical performance by sealing history into immutable blocks and keeping expensive patch reasoning bounded to active work.

Prikk is an early implementation. It suits architecture review, experimentation, and contribution. Do not use Prikk as the sole store for important project history yet — the repository format and command surface are still evolving, and future releases may require migration. See the release, versioning, and compatibility reference for the pre-1.0 boundary.

Project Goals

Prikk is designed to be:

  • easy to use for ordinary local development workflows;
  • safe and secure by default, with role-bound signatures and fail-closed validation;
  • resilient against corruption, interrupted operations, and lost mutable pointers;
  • flexible enough for local, peer, and future hosted workflows;
  • fast for long-lived repositories by separating active patch reasoning from sealed block history;
  • explainable when patch reasoning cannot prove a safe result.

Core Ideas

  • Patch: an atomic logical change with ordered operations and an AUTHOR signature.
  • Block: an immutable sealed collection of patches; blocks are the scalability boundary.
  • Ref state: signed reference state; ref files are pointers, not the root of trust.
  • Ref update: append-only publication evidence for a ref transition.
  • WAL: active signed patch envelopes before sealing.
  • Repository layout: .prikk/ stores native Prikk objects, refs, active WAL state, and local trust data; see the repository layout reference.
  • Concurrency and locking: local lock files guard active-session and ref publication writes; see the concurrency and locking reference.
  • Path safety: repository paths use a conservative validated subset; see the path and worktree safety reference.
  • Attestation: future audit/policy evidence targeting blocks without defining block identity.

Good Fit

Prikk may be a good match if you are:

  • evaluating next-generation VCS architecture;
  • interested in patch theory, commutation, conflict evidence, or signed history;
  • building tools that need verifiable local history and conservative recovery behavior;
  • contributing to a Rust implementation of a correctness-sensitive CLI and storage system;
  • reviewing security, durability, and publication-trust boundaries.

Install

curl -fsSL https://github.com/prikk-vcs/prikk/releases/latest/download/install.sh | sh

Downloads the prebuilt archive for your platform, verifies its checksum, and installs to ~/.local/bin. Also available as cargo binstall prikk, cargo install prikk, or a direct download from the release page.

Repository mutation runs on Linux, macOS, and Windows; read-only commands build and run on every platform Rust targets. A checksum proves integrity of transport, not authority of origin — no release passes the signer-authority audit yet.

The install guide covers pinning a version, verifying checksums by hand, building from source, uninstalling, and the per-platform detail; the platform support reference has the exact command-by-command matrix.

Quick Start

The commands below, with explanation and the two refusals you will actually hit along the way, are the Tutorial — this block is a copy-pasteable summary of it, not a second, independent walkthrough; its authority for what each step means and why is the tutorial page. It reuses the tutorial's own fixed example seed so it is exactly reproducible; for your own key instead of this shared example, see First Runprikk setup reaches the same working repository without typing or copying any of the values below.

mkdir -p ./sample-repo && cd ./sample-repo
prikk init .

export PRIKK_AUTHOR_KEY_ID="dev-author"
export PRIKK_AUTHOR_SEED="00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
export PRIKK_MAINTAINER_KEY_ID="dev-maintainer"
export PRIKK_MAINTAINER_SEED="111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000"

prikk trust maintainer add \
  --key-id "$PRIKK_MAINTAINER_KEY_ID" \
  --public-key "a00899dfd3357aee69729405913f9324dfc033cec04a2215239eda64ae6d9d91"

echo "hello prikk" > readme.txt
prikk commit -m "genesis"
prikk seal --allow-no-audit

prikk log
prikk verify
prikk doctor

The sample seed and key values above are public examples and must never be used for real signing — see Security and Signing Setup for the current setup boundary.

Ran into a refusal, or wondering why a step works the way it does? The Troubleshooting and FAQ pages cover exactly this walkthrough — including why ref names are fully qualified (heads/topic, not topic), why commit and seal each need their own key, and how commits queue across multiple commit calls before one seal.

Useful Commands

Every command accepts --help for its own usage:

prikk <command> --help

The full inventory, with exit-code semantics, is the command surface reference.

Current State

What works today, and the limits worth knowing before relying on it, are in the current state reference.

Crates

prikk is the command-line tool. The others are the libraries it is built from, published so the CLI can be built from crates.io — their APIs may change without notice before 1.0.

Crate Purpose Version Docs Dependencies
prikk the command-line tool crates.io documentation Dependency Status
prikk-store repository storage engine — layout, object storage, WAL durability, verification, patch replay crates.io docs.rs Dependency Status
prikk-object object identity, canonical encoding, and payload types crates.io docs.rs Dependency Status
prikk-replay replay and lifecycle semantics crates.io docs.rs Dependency Status
prikk-crypto Ed25519 signing and verification crates.io docs.rs Dependency Status
prikk-hash SHA-256 primitives crates.io docs.rs Dependency Status
prikk-error shared error taxonomy crates.io docs.rs Dependency Status
prikk-ffi Windows filesystem-identity FFI bindings crates.io docs.rs Dependency Status

Development Gates

Every change this project accepts passes the full gate set in rfcs/EXECUTION-ORDER.md §6 rule 9, which that document owns. The three commands worth running constantly, the rest of the set, and how work is reviewed here are in CONTRIBUTING.md.

More Detail

The roadmap, RFCs, and mdBook docs are the best entry points for design details: