Skip to main content

GitStr

Git over Nostr. Send and receive patches via the protocol.

Overview

GitStr enables distributed version control by sending and receiving Git patches over Nostr, implementing NIP-34. Censorship-resistant code collaboration.

Key Features

Distributed Patches

┌─────────────────────────────────────────────────────────────────┐
│ GitStr Workflow │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Traditional Git: │
│ Push ──► GitHub ──► Pull Request ──► Central server │
│ │
│ GitStr: │
│ Patch ──► Nostr event ──► Relays ──► Anyone can receive │
│ │
│ No central server • No gatekeeping • Censorship-resistant │
│ │
└─────────────────────────────────────────────────────────────────┘

Core Features

FeatureDescription
Send patchesPublish Git patches to Nostr
Receive patchesDownload from relays
NIP-34Standard patch format
DecentralizedNo central server
CLI toolGit integration

Usage

Initialize Repository

git str init -r wss://relay.example.com

Download Patches

git str download

Send Patches

git send <commit>

Patch Storage

Patches stored in:

.git/str/patches/

NIP-34 Format

Patches published as Nostr events following NIP-34:

  • Event kind for patches
  • Metadata tags for context
  • Relay hints for discovery

Use Cases

  1. Open source — Accept contributions via Nostr
  2. Censorship resistance — Code that can't be taken down
  3. Distributed teams — No single point of failure
  4. Backup — Patches replicated across relays

Comparison

FeatureGitStrGitHubEmail patches
ProtocolNostrProprietarySMTP
CensorshipResistantPlatformProvider
DiscoveryRelaysGitHub searchManual
IdentityNostr keysGitHub accountEmail

Installation

go install github.com/fiatjaf/gitstr/cmd/git-str@latest
  • NostrGit — GitHub-style interface
  • git-remote-nostr — Git remote helper
  • nostrgit — Alternative implementation

See Also