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​