A CLI to interact with NIP-34 and other stuff related to code in Nostr
n34 is a command-line interface (CLI) tool for sending and receiving Git
issues, patches, and comments over the Nostr protocol. It supports creating,
replying to, and managing issues and patches, making Git collaboration
decentralized and censorship-resistant.
The primary goal of n34 is to implement NIP-34 (git stuff), but its
flexible design allows for additional use cases beyond Git workflows. For more
details, see the following section.
Check the documentation at n34.dev
- Repository announcements
- Repository state announcements
- Patches (Send, fetch and list)
- Issues (Send, view and list)
- Replies
- Issues and patches status
- Pull requests (nostr-protocol/nips#1966)
- Gossip Model (NIP-65)
- Proof of Work (NIP-13)
-
nostr:URI scheme, in the issue/reply content (NIP-21) - Signing using bunker (NIP-46)
- Signing using NIP-07 proxy (nostr-browser-signer-proxy)
- Code Snippets (NIP-C0)
- In device relays and repos bookmark (
setscommand)
Nostr is fundamentally different from traditional platforms because it’s not an application or service, it’s a decentralized protocol. This means any tool or app can integrate with it, enabling open, permissionless collaboration without relying on centralized gatekeepers. Unlike proprietary systems, Nostr doesn’t require emails, passwords, or accounts. You interact directly through relays, whether you self-host your own or use public ones, ensuring no single point of failure or control.
What makes Nostr uniquely resilient is its design, the protocol itself is just
a set of rules, not a company or product that can disappear. Your Git issues,
patches, and comments persist as long as relays choose to store them, immune to
the whims of corporate shutdowns or policy changes. Nostr is infrastructure in
its purest form, an idea that outlives any temporary implementation. n34 taps
into a future-proof foundation for decentralized collaboration.
You can install n34 either by cloning the repository and building it with Cargo,
or by using cargo install or Nix.
- Clone the repository:
git clone git://git.4rs.nl/awiteb/n34.git
cd n34- Build the release version:
cargo build --releaseThe binary will be available at target/release/n34.
cargo install n34The binary will be installed to your Cargo binary directory (typically ~/.cargo/bin/n34).
Make sure ~/.cargo/bin is in your PATH environment variable to run the binary from anywhere.
- Clone the repository.
- Run the
nix buildcommand.
The binary will be available at result/bin/n34.
Adding it to your home-manager (+v0.4)
- Add it as an input to your
flake.nix:
inputs = {
# Specify the version you want to install, or remove `?ref` for the unreleased
# version. You can also use any mirror; it doesn't have to be `git.4rs.nl`.
n34.url = "git+https://git.4rs.nl/awiteb/n34.git?ref=refs/tags/vx.y.x";
};- Add it to your packages (ensure your home-manager
extraSpecialArgsincludes theinputs):
packages = [ inputs.n34.packages."${pkgs.system}".default ];Contributions to n34 are welcome! You can help by opening issues (such as bug
reports or feature requests) or submitting patches. All contributions must be
submitted through Nostr. For more details on the process, please refer to the
CONTRIBUTING.md file. Your support is greatly appreciated!
You can find the changelog at CHANGELOG.md and the list of contributors at AUTHORS file.
n34 is licensed under the GPL-3.0 License. This means that you are free to use, modify, and distribute the software under the terms of this license. Please refer to the LICENSE file for more details.