AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
각 커밋에 Ed25519 서명, 파일·폴더·커밋을 BLAKE3 해시로 명명, 서명 기록 제공
Version control that signs every commit. Every commit carries an Ed25519 signature; every file, folder, and commit is named by its BLAKE3 hash; attestations record signed statements about commits. Wri
개발 도구Rust · TypeScriptGitHub @officialunofficial온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
A content-addressed version control toolkit written in Rust.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A content-addressed version control toolkit written in Rust.
mkit is a generic content-addressed VCS — Git-like commits, refs,
and transports — with a native, predicate-agnostic attestation
subsystem (in-toto v1 Statements in DSSE envelopes) that lets any
downstream service attach witness signatures to commits. Golden
vectors under rust/tests/golden/ pin the v1
on-disk and wire formats.
Alpha (pre-1.0). The v1 wire and on-disk formats are stable
through the 0.x line; APIs, CLI flags, and unpinned internals may
change in any 0.x release. See CHANGELOG.md for the
breaking-change record.README 전문 보기 ↗Version control you can prove. mkit is a content-addressed version control toolkit written in Rust.
mkit gives you what you expect from Git: commits, refs, branches, and remotes. It also treats signatures and attestations as part of the object model. Every commit carries an Ed25519 signature, and any service can attach witness signatures to it as in-toto v1 Statements in DSSE envelopes.
[!NOTE] Alpha (pre-1.0). The v1 on-disk and wire formats are stable through the 0.x line, pinned by golden vectors. APIs, CLI flags, and unpinned internals may change in any 0.x release. See
CHANGELOG.md.
curl mkit.sh | sh
The script downloads the signed release binary for your platform, verifies its cosign signature, and installs mkit into ~/.local/bin.
Linux release archives require glibc 2.39 or newer; see Linux requirements and workarounds.
Other options:
cargo install mkit-cli # crates.io (Rust 1.99+)
bun add @officialunofficial/mkit-wasm # WASM, or: npm i @officialunofficial/mkit-wasm
[!WARNING] Do not run
cargo install mkit. That crate name belongs to an unrelated project. The CLI is published asmkit-cli.
mkit supports Linux and macOS. On Windows, run it under WSL. docs/INSTALL.md covers pinned versions, release archives, verification (cosign, SHA256SUMS), and hardware signers.
mkit init # create .mkit/ in the current directory
mkit keygen # generate an Ed25519 signing key
echo hello > hi.txt
mkit add hi.txt
mkit commit -m "first commit"
mkit remote add origin mkit+file:///srv/mkit/my-repo
mkit push origin # first push records origin as the upstream
mkit push # later pushes go to the upstream
That's your first signed commit. Push rejects non-fast-forward updates unless you pass --force-with-lease or --force.
Attest to the commit, then verify the attestation:
mkit attest --predicate-type https://example.com/sign-off/v1
mkit verify-attest --trust-roots .mkit/attest-trust-roots.toml
verify-attest trusts only keys you register with mkit trust add. SPEC-ATTESTATIONS §6.5 walks through trust roots. The full command reference is in docs/CLI.md. Coming from Git? Read docs/GUIDE-GIT-WORKFLOWS.md.
SPEC-OBJECTS.mkit attest stores in-toto v1 Statements in DSSE envelopes, with the commit hash as the subject. Standard tools such as cosign and in-toto-go can verify them, and one envelope can carry several signatures. See SPEC-ATTESTATIONS.SPEC-KEYSTORE.mkit+file://, mkit+https://, mkit+s3://, mkit+ssh://, or mkit+enc:// (deprecated: no maintained server). mkit never falls back to another transport. See SPEC-TRANSPORT.docs/VERIFY.md.--format=json, and exit codes follow sysexits(3).mkit pulls clearly ahead of Git on large files and their edits, and runs roughly even on everyday operations. Pack creation for 100 files of 1 MiB each:
The performance page has end-to-end add/commit/push comparisons with Git and the methodology. More microbenchmarks live in benchmarks/charts/. Reproduce them with:
cargo bench -p mkit-benches --bench hashing --bench sign_verify \
--bench object_commit --bench pack_create -- --quick
cargo run -p mkit-benches --bin render-charts
| Doc | For |
|---|---|
docs/INSTALL.md | Install channels, verification, hardware signers |
docs/CLI.md | Subcommands, config keys, env vars, exit codes |
docs/GUIDE-GIT-WORKFLOWS.md | Migrating from Git and tracking a Git upstream |
docs/VERIFY.md | Verifying a commit hash without repository access |
docs/specs/ | Wire-format and subsystem specifications |
docs/ARCHITECTURE.md | Crate layout and design notes |
docs/SSH-SECURITY.md · docs/THREAT-MODEL.md | Trust model and security assumptions |
| Self-hosting the repo server | Running your own instance |
docs/RELEASE.md | Cutting a release |
Want the library instead of the CLI? Run cargo add mkit-core (docs.rs).
cd rust
cargo build --release # → target/release/mkit
cargo test --workspace
cargo fmt --check
cargo clippy --all-targets -- -D warnings
The MSRV is Rust 1.99.1, pinned in rust/rust-toolchain.toml.
Issues and PRs are welcome. CONTRIBUTING.md covers build, test, and style expectations. Inbound contributions use the project license, with no DCO or CLA. Follow docs/STYLE-GUIDE.md for docs and commit messages.
To report a security issue, follow SECURITY.md.
mkit is dual-licensed under MIT or Apache-2.0, at your option. Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion is dual-licensed the same way, with no additional terms or conditions.
mkit is published by Official Unofficial, Inc., which owns the mkit name and marks.