{"id":"a9d23c98-828c-40d2-8938-833db734fb46","slug":"src-control","kind":"skill","name":"src-control","summary":"A next-gen version control system: in-memory worktrees for parallel agents, native committed secrets, per-file encryption, and signed + intent-deep provenance. Interops with Git.","owner":"git-agentic","repoUrl":"https://github.com/git-agentic/src-control","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":3,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-07-09T06:59:40.000Z","addedAt":"2026-10-21T23:27:11.904Z","logoUrl":"https://avatars.githubusercontent.com/u/286049010?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","files-documents","memory-knowledge"],"tags":["agents","cli","encryption","provenance","rust","secrets-management","vcs","version-control"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-25T20:49:20.439Z","sample":false,"url":"https://conduits.dev/tools/src-control","language":"Rust","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# src-control\n\nA next-generation version control system built around a snapshot-and-tag model\n(Jujutsu-inspired), with per-file permissions, native committed secrets, and\nin-memory clones as the long-term thesis. Across 36 shipped phases plus the\nP37 partial-clone series (37a-37d), this repository now proves that thesis end\nto end:\n\n1. **In-memory virtual worktrees** (the agent wedge) — fork N parallel worktrees\n   of a repo entirely in RAM, run and check out against each, and tear them down\n   leaving zero residual files on disk. **Implemented (Phase 1).**\n2. **Native committed secrets** — env vars / keys committed into repo state,\n   encrypted at rest and in transit, decrypted only in an authorized execution\n   context. **Implemented (Phase 2).**\n3. **Per-file and per-branch permissions** — individual paths encrypted to a\n   chosen set of recipients (randomized sealing since Phase 33, with dual-read\n   of older convergent ciphertext), merged/replayed/revoked/rewrapped without\n   ever writing plaintext to the object store; and whole **private branches**\n   (Phase 34) whose commits, trees, file paths, and messages are all sealed —\n   opaque to non-recipients until an atomic `sc branch publish`. **Implemented\n   (Phase 7, hardened through Phases 15-17 and 33; per-branch in Phase 34.)**\n4. **A full persistent collaborative VCS** on top of those three pillars:\n   durable `.sc/` repos, branches, three-way merge, history editing\n   (cherry-pick/rebase/amend/undo), durable multi-invocation agent sessions,\n   signed commits with session-transcript provenance, sparse and partial\n   checkouts (including merge and agent sessions on a partial clone), local/\n   ssh/HTTP+TLS/bucket/Git network transports, and a read-only native desktop\n   browser. **Implemented (Phases 3-37.)**\n\nThe system builds on / interoperates with Git rather than replacing it: it\nimports an existing Git repo's `HEAD` in-process (via `gix`), exports history\nback to Git commits, and reaches hosted Git (e.g. GitHub) through a spawned\nsystem-git mirror bridge.\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md) for the full design,\n[docs/adr/](docs/adr/) for the architecture decision records (0001-0057) behind\nevery phase, and [CLAUDE.md](CLAUDE.md) for project conventions and the\nper-phase capability map. [CONTRIBUTING.md](CONTRIBUTING.md) covers the\ndevelopment workflow.\n\n> ⚠️ **Pre-1.0, not independently audited — don't trust production secrets to it\n> yet.** src-control implements real cryptography (committed-secret envelope\n> encryption, encrypted protected paths, Ed25519 signed provenance, in-binary\n> TLS), but these are MVP implementations that have **not had an independent\n> security audit**. There are deliberate boundaries you should understand first —\n> e.g. pre-Phase-33 convergent ciphertext in history stays equality-confirmable\n> forever, `sc+https://` trust defaults to TOFU pinning (the first connection to\n> a host is unverified unless you pre-pin it or opt into CA validation), and\n> rotation cuts off future reads but cannot erase ciphertext already in\n> history. They are consolidated in\n> [docs/THREAT-MODEL.md](docs/THREAT-MODEL.md). Report vulnerabilities privately\n> per [SECURITY.md](SECURITY.md).\n\n## Workspace layout\n\n```\ncrates/\n  core/   content-addressed object store (blob/tree/snapshot/secret/signature/\n          transcript), memory budget + eviction\n  vfs/    in-memory virtual worktree engine (fork / edit / checkout / commit / teardown)\n  gitio/  Git interop boundary — import/export Git history and the network-git\n          mirror bridge, via gix (the ONLY crate that links gix)\n  crypto/ envelope encryption for committed secrets and protected paths, plus\n          Ed25519 signing (the ONLY crate that links RustCrypto)\n  tlsio/  TLS for the sc+https:// transport (the ONLY crate that links\n          rustls/rcgen; a leaf — no workspace deps)\n  objio/  object-store buckets for sc+wal:// and sc+s3:// remotes (the ONLY crate\n          that links the S3 SDK; a leaf — no workspace deps)\n  repo/   durable .sc repo — refs, branches, working tree, merge, history\n          editing, remotes, protection, GC, sparse/partial clone, transcripts,\n          transport (ssh, sc+http(s), bucket WAL)\n  cli/    `sc` binary\napps/\n  desktop/ read-only Tauri v2 + React/TypeScript repository browser (see\n          apps/desktop/README.md); calls `repo` directly, never the `sc` binary\ndemo/\n  28 end-to-end proof scripts covering most capabilities (bucket remotes are\n  covered by tests only), e.g.:\n  run_demo.sh              independent before/after filesystem diff, zero residue\n  run_repo_demo.sh         persistent repo end-to-end demo\n  run_ssh_remote_demo.sh   ssh-native transport round trip\n  run_provenance_demo.sh   signed history + rewrite-attack proof\n  run_transcript_demo.sh   sealed agent-session transcript proof\n```\n\nDependency direction is strict: the adapters `cli` and `desktop` sit on top of\n`repo`; `repo → {vfs, crypto} → core`, plus the leaf edges `repo → tlsio` and\n`repo → objio` (`tlsio` and `objio` depend on no other workspace crate). `gitio`\ndepends only on `core`, and `repo` never links it: `cli` links both and passes\nimported snapshots down. Only `gitio` links `gix`, only `crypto` links\nRustCrypto, only `tlsio` links rustls, and only `objio` links the S3 SDK,\nkeeping the rest of the system Git-, crypto-, TLS- and object-store-agnostic.\n\n## Quick start\n\n```sh\n# Build and test the whole workspace (on Linux the desktop crate needs the Tauri\n# system packages; see CONTRIBUTING.md)\ncargo test --workspace\n\n# Run the parallel-agent demo (4 agents, default 8 MiB blob budget)\ncargo run --bin sc -- demo --agents 4\n\n# Exercise the bounded budget: 6 agents under a 4 MiB budget with spill enabled,\n# which forces LRU eviction and rehydration from the (auto-cleaned) spill dir\ncargo run --bin sc -- demo --agents 6 --budget-mb 4 --spill\n\n# Import a real Git repo's HEAD and list its files\ncargo run --bin sc -- import --repo /path/to/some/git/repo\n\n# Initialize a persistent repo and commit the working tree\ncargo run --bin sc -- init\ncargo run --bin sc -- commit -m \"initial import\"\n\n# Sign a commit and verify the resulting history\ncargo run --bin sc -- commit -m \"signed change\" --sign\ncargo run --bin sc -- verify --require\n\n# Serve a repo over the sc-native HTTP transport and clone it elsewhere\ncargo run --bin sc -- serve --http 127.0.0.1:8730 .\ncargo run --bin sc -- clone sc+http://127.0.0.1:8730/repo /path/to/dst\n\n# Export the current branch history to Git\ncargo run --bin sc -- export --to /path/to/git/repo\n\n# Independent zero-residue proof (snapshots the filesystem before/after)\nbash demo/run_demo.sh\n```\n\nRun `sc --help` (and `sc <command> --help`) for the full command surface:\nmerge, history editing, secrets lifecycle, sparse/partial clone, ssh/HTTP(S)/\nbucket remotes, session transcripts, and more. The annotated reference lives in\nthe `sc-cli-reference` skill (`.claude/skills/sc-cli-reference/SKILL.md`).\nBucket remotes take `sc remote add <name> sc+wal://<dir>` or\n`sc+s3://<bucket>/<prefix>` (ADR-0046); `sc remote compact <name>` prunes them\n(ADR-0057), and `sc serve --http 127.0.0.1:8730 --store <url> <serve-home>`\nserves a bucket from a disposable instance (`--stdio` also works;\n`sc serve --help`).\n\n## How Phase 1 works\n\nA worktree is a copy-on-write overlay over an immutable base snapshot. Forking\nallocates only a small overlay — base blob bytes are shared through the store\nbehind `Arc` and never copied — so forking N agents off one snapshot is O(N) in\noverlay size, not repo size. Reads fall through the overlay to the base tree;\nwrites land in the overlay. Content lives only in RAM and touches disk **only**\non an explicit `checkout` to a caller-chosen directory. There is no FUSE mount\nand no kernel extension, which is what makes \"zero residual artifacts\" provable\nrather than aspirational.\n\nThe store enforces a bounded blob-byte budget with LRU eviction. Without spill,\nan over-budget insert fails loudly (`BudgetExceeded`). With spill, the coldest\nreconstructible blobs are written to a content-addressed temp directory and\nrehydrated on demand; that directory is removed when the store is dropped, so\nthe zero-residue guarantee holds even with spill enabled.\n\n## Status\n\nThe long-term thesis is proven end to end, not just prototyped: in-RAM virtual\nworktrees (Phase 1), native committed secrets (Phase 2), and per-file\npermissions via encrypted paths (Phase 7, randomized sealing since Phase 33)\nall ship alongside a full persistent, branchable, content-addressed VCS —\nmerge and history editing, durable multi-invocation agent sessions with\nauto-merge, a commit-time secret scanner, secret/permission lifecycle\n(rotation, escrow, revocation tombstones, bulk rewrap, `sc rewrap --rotate`\nfor protected paths), signed commits with sealed session-transcript\nprovenance (droppable through signed tombstones), sparse and partial checkouts (lazy want-by-id fetch, merge,\ncherry-pick, rebase and agent sessions on a partial clone), and local,\nssh-native, sc-native HTTP/TLS (bearer tokens with expiry and rotation,\nlistener resource limits, TOFU pinning managed by `sc tls`, or CA validation\nvia `SC_HTTPS_CA_FILE`/`SC_HTTPS_CA=system`), bucket (`sc+wal://`, `sc+s3://`),\nand Git (including hosted GitHub) network transports, plus private branches\nsealed to a recipient set until publish and a read-only Tauri desktop\nbrowser. All 36 phases and P37a-37d are implemented and tested; `demo/` holds\n28 independent end-to-end proofs covering most major capabilities. Remaining\nfollow-ons (richer signer trust models, per-path token ACLs, transcript\nrewrap/grant/revoke and similar items) are tracked in [ROADMAP.md](ROADMAP.md)'s Deferred section and as open\nGitHub issues rather than being open MVP scope.\n"}