Skip to content

The ngit v3 launch

ngit v3 is one part of a coordinated release across the Nostr Git stack. The same announcement introduces releases from four projects that now share one model of repository authority, infrastructure, CI, and publication:

ReleaseIts role
ngit v3The command-line client and Git remote helper
ngit-grasp v3Resilient public and private repository infrastructure
ngit-ci 0.1.0Self-hosted CI with signed requests, progress, and results
The next GitWorkshop releaseThe web and app interface across the same workflows

Together they move ngit beyond a Git transport. A project's identity and authority remain with its confirmed maintainers while repository relays, Git storage, CI, and interfaces can be operated by different services.

If you already use ngit, your repositories and Git history remain usable. The most important contributor-facing change is that an invited maintainer must now accept before their maintainer actions become authoritative.

One intentional maintainer-authority change

Being named by a maintainer is now an invitation, not authority. The invitee must run ngit repo accept before publishing repository state or performing maintainer-only actions.

Why the maintainer model changed

Repository infrastructure that can look after itself

The largest infrastructure change is ngit-grasp's Proactive Sync and Sync+ support.

  • GRASP servers follow accepted repository announcements and synchronize live and historical repository events from the relays those repositories name.
  • Missing Git data is fetched when repository state or collaboration events arrive, rather than waiting for a maintainer to repair every server.
  • Multi-maintainer repositories synchronize pushed Git data across their maintainer views.
  • Sync+ follows the bounded NIP-65 mailboxes of relevant authors and recovers conversation history that did not reach a repository relay directly.

That makes repository relays more than another place to publish a copy. After repository discovery, ngit and GitWorkshop use the repository's declared relays as the authoritative collaboration view. Account relays, fallback relays, and indexes retain narrower discovery roles.

This is also a major enabler for future maintainer-based moderation. A policy applied by repository relays cannot work if clients immediately restore filtered events from unrelated relay sets. Proactive synchronization gives the repository relay set enough coverage to become the place where that policy can eventually be expressed and enforced. The synchronization foundation ships in this release; maintainer-directed moderation remains future work.

Authority belongs to confirmed maintainers

The four releases converge on a reciprocal maintainer graph. One maintainer can offer another person a role, but cannot grant authority on that person's behalf. The invitee signs their own acceptance first.

This gives clients and services the same answers about who may publish repository state, change membership, request CI, or perform maintainer-only actions. It also distinguishes lead maintainers, co-maintainers, moderators, invitations, removals, departures, and handovers without creating a forge owner account.

The lead is a coordination role, not a stronger cryptographic authority. Read Maintainer authority in v3 for the problem, the new rule, and the compatibility model. Use the Maintainers guide for the commands.

Private repositories become first-class

ngit-grasp v3 adds the GRASP-08 private-service profile. ngit and GitWorkshop can discover private services from an encrypted account list, authenticate to their relays and Git endpoints, and keep private repository events confined to the repository's authenticated relays.

Basic Buzz support is an extension of this private-repository work. ngit can clone Buzz repositories and work with their pull requests through Buzz's authenticated relay and Git transport. GitWorkshop can discover and browse Buzz repositories alongside private GRASP services. Some ordinary Git and comment workflows remain limited, so this is interoperability rather than a claim that both models are identical.

Self-hosting is the first deployment model, not the intended limit. The roadmap includes private GRASP service providers and permissions that compose with existing Nostr group protocols.

CI becomes part of the signed project model

ngit-ci 0.1.0 introduces a self-hosted coordinator that watches selected repositories, runs matching workflows through act or an execution adapter, and publishes signed progress, job, and workflow results.

The important change is not merely moving familiar workflow syntax onto a new runner. CI now carries the identities and provenance needed to evaluate it:

  • maintainers can explicitly request or stop a coordinator's service;
  • coordinators publish their capabilities and signed results;
  • repository secrets can be provisioned without turning them into public workflow configuration;
  • ngit can inspect runs and require a maintainer-directed trust floor before a merge; and
  • GitWorkshop shows coordinator readiness, service relationships, job output, artifacts, and the evidence behind its trust labels.

This keeps a green check from becoming an unexplained global truth. Consumers decide which coordinators and attestations they trust. See Use CI with ngit and Run ngit-ci.

Releases and publication use the same foundations

ngit v3 adds signed publication for three kinds of project output:

  • ngit release publishes versioned software and downloadable assets using NIP-82, including Zapstore-compatible Android metadata;
  • ngit nsite publishes static sites using NIP-5A; and
  • ngit container publishes verified OCI layouts and repository-bound container state.

They share a resilient Blossom upload pipeline. Publication can proceed when every blob has a confirmed copy, without making the slowest or least reliable storage provider a global dependency.

GitWorkshop completes the visible side of that flow with repository release and application pages, signed release provenance, and CI-produced nsite previews on pull requests. The documentation site itself uses the same nsite publication path.

GitWorkshop brings the model into the interface

The accompanying GitWorkshop release is not just a viewer for new ngit events. It implements the same reciprocal membership and repository lifecycle model, private-service discovery and authentication, CI service controls and trust context, and NIP-82 release and application surfaces.

That shared behaviour matters. A maintainer invitation, removal, coordinator request, private service, or release should mean the same thing from the CLI, the hosting service, the CI coordinator, and the web interface.

Also improved in this release

The coordinated launch contains many useful workflow improvements that are not the main story:

  • pull requests can target non-default branches and form explicit or inferred stacks;
  • contributors can check out another person's PR on demand without fetching every proposal branch;
  • repository selection, signer selection, secret storage, JSON output, and agent automation are safer and more deterministic; and
  • ngit adds opportunistic Tor support and delegation to installed Git remote helpers.

The project changelogs contain the exhaustive feature, compatibility, and fix lists. The generated 3.0.0-rc.7 command reference remains the source for exact CLI syntax until the stable reference is promoted.

Upgrade boundaries

Existing Git objects, Nostr repository coordinates, issues, proposals, and signed repository events do not need to be recreated. Reciprocal legacy maintainer relationships remain valid, and v3 emits a compatibility roster for older clients. Invitations created or changed with v3 require explicit acceptance.

Automation should read the new top-level command_status field in JSON output. ngit-ci 0.1.0 defaults ordinary push and pull-request work to request-required; maintainers can request the service, while operators may deliberately retain automatic execution.

ngit-grasp operators must prepare the v3 migration

ngit-grasp v3 performs a one-way Git storage migration before the service starts. Back up both Git and relay data, plan for downtime, and do not run v2 against migrated storage. A rollback requires restoring the pre-upgrade snapshot, not only replacing the binary.

This release is a foundation

The launch makes repository hosting and CI available as infrastructure teams can run for themselves. The longer-term direction is to make those roles replaceable services too: hosted private GRASP, permissions composed with Nostr groups, coordinators distributing work across machines and providers, and several CI runner styles rather than one fixed execution stack.

Read the roadmap, including the influence of Loom and Hive and the direction for a Nix-native CI option.

Next

Git collaboration, without the platform.