NNCP special remote for git-annex
Buildable without flakes
Do not select an nncp-version in the overlay


browse  log 



You can also use your local clone with git send-email.

#NNCP special remote for git-annex

Two utilities for sending and receiving git-annex data using the special remote and the p2p git-annex protocols.

This is fully asychronous remote, the sender cannot check if a file is present at the receiver so files are always transmitted. I recommend adding both SSH and NNCP remotes for a host, syncronizing metadata over SSH and pushing new data with NNCP.


I included a Nix flake. I don't know how to install this otherwise and I can't be bothered to work that out. Nim cannot build programs with the '-' character in their names, so both utilities need to be renamed after building.

Git-annex will need to find git-annex-remote-nncp somewhere in its PATH environmental variable.


Configure a handler in the receiver NNCP configuration. Each repository that can be pushed into needs to be listed as a seperate handler. The handler arguments are:

  • Location of nncp-git-annex program
  • A PATH specification from which the git-annex programs can be found (on NixOS this can be left empty, the utilities are wrapped)
  • Location of git-annex repository to push into

Configuration at Bob:

  "neigh": {
    "alice": {
      "exec": {
        "git-annex-music": [
          "/usr/local/bin/nncp-git-annex" "/usr/bin" "/home/bob/music"
        ] } } }


Init (or enable) a remote with the node and handler set to the NNCP remote node name and handler configurate at the remote node.

git annex initremote bob-nncp encryption=none type=external externaltype=nncp node=bob handler=git-annex-music



Send foo.opus to Bob.

git annex copy --to bob-nncp ./foo.opus

nncp-stat -pkt -node bob # List outgoing packets for Bob

nncp-call bob # Transfer packet to Bob


nncp-stat -pkt -node alice # List incoming packets from Alice
nncp-toss # Process packes from Alice