Sovereign version control — a Cyrius-native git replacement.
sit is version control written from scratch in Cyrius. No libgit2, no C, no FFI. Every layer — compression, hashing, storage, signing, protocol — is first-party and benchmarked against its C incumbent.
The name is from smriti (स्मृति — "that which is remembered"). Three letters like git, same typing rhythm. sit vs stand, park vs push — the wordplay holds.
- Version: see
VERSION(single source of truth) anddocs/development/state.mdfor the live state snapshot (current version, dep pins, source layout, recent releases). - Language: Cyrius (toolchain pinned in
cyrius.cymlunder[package].cyrius). - Commands:
init,add,rm,branch,checkout,tag,merge,reset,commit,config,fsck,key,verify-commit,remote,fetch,pull,push,clone,log,status,diff,show,cat-file,owl-file— see docs/guides/getting-started.md.
Objects are SHA-256-hashed (via sigil) and zlib-compressed (via sankoch), stored in a patra table with a COL_BYTES content column. Trees are recursive and byte-compatible with git's SHA-256 object format. Commits can be ed25519-signed via sigil. Still exploratory, post-boot — not on the AGNOS critical path.
sit is a single statically-linked binary with no dynamic dependencies. git's primary binary plus its git-core/* dispatch tree pull in libpcre2, libz-ng, and libc. The footprint comparison and live git-vs-sit numbers (where sit wins, where it loses, what bounds each lagging row, and how the picture has evolved across releases) live in docs/development/benchmarks-git-v-sit.md. Honest reporting — slow rows are kept in plain sight.
Per-release snapshots with before/after tables and "what didn't move and why" decompositions sit under docs/benchmarks/.
Each layer is first-party, no C below the Cyrius compiler:
| Layer | Crate | Replaces |
|---|---|---|
| Compression | sankoch | zlib |
| Hashing / signing | sigil | OpenSSL / libsha / ed25519 |
| Object store | patra | loose objects + pack files |
| Wire protocol | sit (first-party, in-tree) | smart-HTTP / ssh |
See ADR 0001 for the first-party thesis.
# build
cyrius build src/main.cyr build/sit
# run tests (sigil SHA-256 / git-framing / zlib roundtrip / patra BYTES / ed25519)
cyrius test tests/sit.tcyr
# use it
mkdir /tmp/demo && cd /tmp/demo
/path/to/sit/build/sit init
echo "hello, sit!" > greeting.txt
/path/to/sit/build/sit add greeting.txt
/path/to/sit/build/sit commit -m "first commit"
# sign commits (ed25519 via sigil)
/path/to/sit/build/sit key generate
/path/to/sit/build/sit commit -S -m "signed commit"
/path/to/sit/build/sit verify-commitFull walkthrough: docs/guides/getting-started.md.
cyrius build tests/sit.bcyr build/sit-bench && ./build/sit-bench
cyrius build tests/sit.fcyr build/sit-fuzz && ./build/sit-fuzzdocs/guides/getting-started.md— build + usedocs/development/roadmap.md— what shipped, what's nextdocs/adr/— decisions, starting with 0001 — no FFIdocs/architecture/— non-obvious constraints that outlive the codedocs/examples/— runnable examples
GPL-3.0-only