Skip to content

TheRealShek/persephone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Persephone (purr)

What if Git was reborn in Go, loved concurrency, and faster than classic Git?

Build Status Release Go Version Go Report Card License: MIT


Demo

Persephone CLI Demo


About the Project

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.

Benchmarks ⚡

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.


Installation

Option 1: Install Script (Linux)

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 | sh

Option 2: Manual (Linux & macOS)

If 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 --version

Currently Implemented

The 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.

Coming Next

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.


Future Directions

(No guarantees — this is a lab!)

Near-term

  • Modern Metadata: Explore optional structured metadata beyond the current Git-style commit payload.
  • Extensibility: A robust plugin interface via Go interfaces.
  • Visualizations: Extend purr log with a scrollable graph TUI.

Long-term

  • Alternative Storage: Storing blobs/trees/commits in Badger/Pebble instead of a flat .purr/objects structure.
  • 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.

⚠️ Status & Disclaimer

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.

About

What if Git was reborn in Go, loved concurrency, and faster than classic Git?

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages