Rust CLI + S3

aggit

S3-backed, git-versioned object storage for agents. Track local files as compressed objects, branch safely, and sync reachable history to S3-compatible remotes.

$ aggit init .
$ aggit author -n "Jane Doe" -e "jane@example.com"
$ aggit add notes.txt
$ aggit commit -m "initial commit"
$ aggit origin create prod -e https://s3.example.com -s *** -k *** -r us-east-1
$ aggit push prod

Core Capabilities

Git-like Local Engine

`blob`, `tree`, and `commit` objects are stored under `.aggit/objects` with branch-aware refs and index.

Branching + Recovery

Switch branches with clean-state checks, restore working trees from committed snapshots, and inspect history objects.

S3 Sync

Push only reachable objects beyond remote head; clone remotes back into `.aggit` and materialize files locally.

How It Works

`aggit` keeps a minimal Git-like store inside `.aggit/`: file contents are hashed into compressed objects, index entries are tracked per branch, and commits link trees plus parent pointers. On push, it computes objects reachable from local head and uploads only what the remote bucket is missing, alongside branch head and index. Clone performs the inverse: downloads `.aggit` data from S3 and restores the working tree from the selected branch commit.

View the GitHub repository