Git on Nostr
Git on Nostr puts the coordination layer of a git repository on Nostr, as NIP-34 (git collaboration) defines it: each maintainer announces the repository, every push republishes its branch and tag tips, and issues, patches and pull requests travel as events. Different tools publish these events and keep the code in different places; this page measures what the events themselves say.
Cumulative repositories
last 12 monthsRepositories by first-seen day.
- before observation began: only what relays still served
New repositories per week
by kind of host todayEach repository in the week it was first seen, under every kind of host it is on today: one on a GRASP server and GitHub counts under both GRASP and Forges, so a week's bars can add up to more than its new repositories. No public host counts those with no public clone URL. The line is first-time maintainers: maintainers whose first kept announcement falls in the week, each counted once, ever.
- partial week: data to Oct 21, 2026
Pushes per week
A push is a published state whose branch or tag tips moved; identical republishes and HEAD-only changes do not count. A hashtree repository's push is read from the announcement its git tool republishes with each branch or tag it pushes publicly; republishes less than two minutes apart count once.
- partial week: data to Oct 21, 2026
Who pushed, per week
Distinct repositories with a push, and distinct maintainers pushing, each ISO week. 3,648 repositories have ever published a state; a hashtree repository pushes without one.
- partial week: data to Oct 21, 2026
What is counted
Observation began on May 2, 2026 for repository announcements, on Jun 14, 2026 for states and GRASP lists and on Jun 18, 2026 for comments. Before that the archive holds only what relays still served when observation began, so the weekly charts start no earlier than the week of Jun 29, 2026 (the week holding Jul 1, 2026), after all three, and the cumulative chart fades the days before observation of announcements began.
| Source | Used for | Observed since |
|---|---|---|
| kind-30617 (repo-announcements) | the repository roster, and hashtree's pushes | 2026-05-02 |
| kind-30618 (repo-states) | branch and tag tips, and so pushes | 2026-06-14 |
| kind-10317 (grasp-server-lists) | the GRASP servers a user wants | 2026-06-14 |
| kind-1111 (comments) | replies on issues, pull requests, patches and repositories (the git subset) | 2026-06-18 |
| kind-7 (reactions) | stars (reactions to a repository) | 2026-06-19 |
| kind-17 (external-content-reactions) | Iris Git stars and unstars (reactions to a repository by its address) | 2026-10-11 |
| kind-9735 (zap-receipts) | zaps to repositories | 2026-06-14 |
| kind-5 (event-deletion-requests) | withdrawals by the author (author and repository pairs, not events) | 2026-07-01 |
The exclusion ledger
First matching rule wins. The rows are not all in one unit - each says what it counts.
Also left out, in other units:
Impossible timestamps are dropped and never admitted to a series: 0 events dated after the run instant and 0 dated before 2023, when NIP-34 (git collaboration) did not exist yet.
What these numbers are not
- Not an exhaustive count of repositories on Nostr: only of the ones the relays we read served, after the ledger. A repository whose events never reached one of them is invisible.
- Not commits: a push is one state publication that moved at least one branch or tag, or one hashtree push read from its republished announcements, however many commits it carried.
- Not every hashtree push: hashtree publishes a push as its own root event, never as a kind-30618 (repo-states), so a hashtree repository's push is counted from the announcement its git tool republishes with a public push (291 of the pushes in 30 days). Private and link-visible pushes, pushes from Iris Git's web app and a repository's first push are not counted, nor is a push whose announcements did not reach us in time; an edit that republishes the announcement counts as one.
- Not verified projects: a kept repository is an announcement that survived the ledger.
- Not issue or pull-request counts: those events are not archived; discussion is counted by root kind network-wide and attributed to a repository only when the comment names one (see Collaboration).
- Not net of every unstar: a kind-7 (reactions) star is withdrawn by a deletion request, and those are not read for reactions; an Iris Git star is withdrawn by its key's later "-", which is.
- Not verified payments: a counted zap receipt is signed by a verified LNURL provider key, which makes it plausible, not proof that the invoice was paid; nothing checks the receipt against the provider or the invoice.
- Not case-folded: identifiers that differ only by letter case or outer whitespace are separate repositories, as NIP-01 (protocol basics) compares identifiers exactly.
- Not activity before Jun 14, 2026: a state from before observation began is not a push, and its date is only a lower bound on the last change.