What if Git was reborn in Go, loved concurrency, and faster than classic Git?
Persephone (CLI tool purr) is an experimental lab exploring a simple question: "What if we rebuilt Git with a 2025-first mindset?" It reimagines version control for modern hardware, massive repositories, and concurrent workloads.
Core Tenets:
- Concurrency First: Designed from the ground up to leverage Go's goroutines for blazing-fast operations (e.g., parallel file hashing).
- Modern Storage: Exploring modern storage backends beyond flat-file layouts.
- Beautiful UX: Semantic CLI output via lipgloss.
- Extensible Design: Built around content-addressed objects and Go packages that can evolve toward richer metadata and extensions.
We built Persephone with concurrency in mind. But just how much faster is it?
Check out the TheRealShek/persephone-bench repository for detailed performance benchmarks comparing purr directly against classic git.
You can easily install the latest release on Linux (amd64/arm64) using the provided installation script:
curl -fsSL https://raw.githubusercontent.com/TheRealShek/persephone/main/install.sh | shIf you are on macOS or prefer to install manually, download the pre-compiled binary directly from the Releases page.
1. Choose the correct download for your system:
- Mac with Intel chip:
persephone_darwin_amd64.tar.gz - Mac with Apple Silicon (M1/M2/M3):
persephone_darwin_arm64.tar.gz - Linux (64-bit PC):
persephone_linux_amd64.tar.gz - Linux (ARM/Raspberry Pi):
persephone_linux_arm64.tar.gz
2. Extract and install:
Once downloaded, extract the archive and move the purr binary to a folder in your $PATH (like /usr/local/bin/).
# 1. Download the archive (example for Linux AMD64)
curl -LO https://github.com/TheRealShek/persephone/releases/latest/download/persephone_linux_amd64.tar.gz
# 2. Extract it
tar -xzf persephone_linux_amd64.tar.gz
# 3. Move the binary into your PATH
sudo mv purr /usr/local/bin/
# 4. Verify installation
purr --versionThe foundation of the VCS is being laid down. Here is the current command support:
| Command | Description | Status / Features |
|---|---|---|
purr init |
Initializes a new repository | Works (confirmation required before reinitialization) |
purr config |
Get and set global options | Works (Global JSON config) |
purr add |
Stages files into the index | Works (Concurrent hashing, skip unchanged) |
purr remove |
Removes tracked files | Works (Removes from index and working directory) |
purr ls |
Shows staged files | Works (formatted table, short hashes) |
purr commit |
Records changes | Works (Git-style commit objects, SHA-1) |
purr log |
Shows commit history | Works (HEAD ancestry, newest-to-oldest) |
Note: Everything else (branch, merge, remote, diff, etc.) is currently not implemented.
| Command | Description |
|---|---|
purr status |
Show staged, unstaged, untracked |
purr branch |
Create and list branches |
purr checkout |
Switch branches |
purr diff |
Show unstaged changes |
purr stash |
Stash workspace changes |
purr merge |
Merge branches (AST-based) |
Note: The implementation order may change.
(No guarantees — this is a lab!)
- Modern Metadata: Explore optional structured metadata beyond the current Git-style commit payload.
- Extensibility: A robust plugin interface via Go interfaces.
- Visualizations: Extend
purr logwith a scrollable graph TUI.
- Alternative Storage: Storing blobs/trees/commits in Badger/Pebble instead of a flat
.purr/objectsstructure. - Semantic Merging: AST-based merge engine to understand actual code structure.
- Distributed Sync: Real peer-to-peer sync using IPFS/libp2p.
- Security: Optional encryption and Ed25519 commit signing out-of-the-box.
This is a prototype. It is built to learn, invent, and question assumptions. It is not production-ready.
Disclaimer: This is a personal experimental project, originally created in collaboration with Chandranil Bakshi and now continued here.
No PRs. No contributions. Don’t ask.
If you want a stable, battle-tested DVCS: use Git. If you want to explore what the next DVCS could look like: explore Persephone.
