Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Radish

A Radicle client and node, in Zig.

Early work in progress. Every layer is verified against authoritative sources (Heartwood source, RFCs, git, and a live radicle-node).

Identity and encoding:

  • base58 - base58btc (multibase z)
  • NodeId - Ed25519 public key as did:key:z6Mk...
  • RepoId - repository identifier rad:z...
  • canonical - Radicle canonical JSON (NFC-normalized, sorted keys, integer-only)
  • Doc - identity document; its canonical git-blob hash is the RID
  • sigrefs - signed refs (rad/sigrefs)
  • unicode - NFC via a forked zg

Wire protocol (spoken to a live node):

  • noise - the Noise_XK handshake radicle uses (Edwards25519 DH)
  • codec / protocol - QUIC-varint framing, streams, gossip messages
  • wire - dial a node: ping/pong, signed NodeAnnouncement, gossip Subscribe
  • announce - encode and sign gossip announcements
  • git.protocol - hand-rolled git protocol v2 client (ls-refs, fetch, sideband)
  • fetch - clone a repo: git stream, v2 fetch, packfile indexed via libgit2

CLI

radish ping        <host> <port> <node-id>              handshake + ping/pong
radish announce    <host> <port> <node-id> [alias]      send a signed NodeAnnouncement
radish subscribe   <host> <port> <node-id> [frames]     listen to gossip (nodes + inventory)
radish fetch-probe <host> <port> <node-id> <rid>        open a git stream, read the v2 advertisement
radish clone       <host> <port> <node-id> <rid> <dir>  clone a repo into <dir> (bare)

Build

Requires a Zig 0.17-dev toolchain; a Nix flake pins it.

nix develop --command zig build test
nix develop --command zig build run

References

See REFERENCES.md for the Radicle protocol docs and the standards behind each encoding.

License

MIT

About

A Radicle client (and node) in Zig - sovereign, peer-to-peer code forge.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages