A post-quantum mix network providing strong metadata privacy against global passive adversaries.
📄 Paper · 🌐 Website · 📚 Docs · 💬 Community
- katzenpost — monorepo:
- Mix network: mix server, directory authority
- Pigeonhole protocol: courier, replica. Uses the mixnet as transport for clients to talk to couriers.
- Client daemon (
kpclientd): mixnet client used by applications, including to reach Pigeonhole couriers.
- hpqc —
hybrid post-quantum cryptography library. Provides KEM, NIKE,
and signature schemes behind clean interfaces, plus the pieces
that make them composable:
- a KEM combiner that is provably IND-CCA2 in the QROM, based on the KEM Combiners paper
- a NIKE-to-KEM adapter (an ad-hoc ElGamal construction) so any NIKE can be used as a KEM, and combined with other KEMs via the combiner
- a signature scheme combiner
- BACAP, a blinding-and-capability scheme used by Pigeonhole
kpclientd— the Katzenpost client daemon. Lives in the monorepo atcmd/kpclientd; build withmake kpclientdfrom the repo root. Required by katzenqt.- katzenqt —
Qt group chat client. Talks to
kpclientd.
Language bindings for building applications that talk to kpclientd:
- Go — in the monorepo at
client2/thin - Rust and Python — thin_client
- website — source for katzenpost.network
- Use it: build katzenqt
and
kpclientd(see Clients above) — pre-built packages coming - Run a node: Admin Guide
- Build on it: Thin Client API
- Contribute: katzenpost/katzenpost — issues and PRs
- Research: Echomix paper and Threat Model
The sections above are the curated front door. Below is every repository in the organisation, grouped by purpose, so a newcomer can find the right place quickly and so dead wood is plainly labelled.
Live dependencies of hpqc:
- circl: fork of
Cloudflare's CIRCL, carried for use with
hpqc. - falcon: Go bindings for the Falcon padded post-quantum signature (C vendored from PQClean).
- sphincsplus: fork of the SPHINCS+ reference code.
- sntrup4591761: Go Streamlined NTRU Prime 4591^761.
Live dependencies of `katzepost':
- nyquist: fork of
Yawning Angel's Nyquist Noise library, from the
pqnoisebranch; supplies the PQ Noise wire protocol. - trunnel: actively maintained Go port of Tor's trunnel binary-serialisation code generator; used for Sphinx and Pigeonhole wire types.
Standalone crypto:
- NoiseFramework: fork of the Python Noise Protocol Framework. Not yet used.
- cryptoproofs: machine-checkable ProVerif models and measurement data.
- formal_specifications: ProVerif/Noise models for BACAP, client2, MKEM, Sphinx and the Noise handshakes.
- CryptWalker: a Lean cryptography library for prototyping protocols and proving properties about them.
- lean-ffi: Lean FFI examples (to Rust and C), supporting the Lean modelling work.
- reunion: the REUNION PAKE rendezvous protocol.
- napkin-math: back-of-the-envelope latency and sizing calculations.
- talek: fork of the Talek PIR private publish/subscribe system, kept for reference.
- echo: small Rust example
service built on the
thin_clientlibrary.
- ansible-playbooks: Ansible playbooks for deploying Katzenpost mix networks.
- status: mixnet diagnostics and status page (uses the thin client).
- worldmap: draws a world map with mix-network nodes overlaid (uses the thin client).
- website: source for katzenpost.network.
- .github: this organisation profile and shared community files.
- diagrams: design diagrams and conceptual imagery.
- zine: LaTeX source for the Katzenpost zine.
These repositories are dormant or superseded or obsolete. We should think about deleting them.
- katzen: former Gio messaging client, superseded by katzenqt.
- client: old client
library, superseded by the monorepo
client2/kpclientd. - mixnet_uprising: historical task tracker.
- slides: old presentation slides.
- nixops / nixpkgs: abandoned Nix deployment configuration (last touched 2018).
- quic-go: fork of quic-go.
- katzen.chat:
website for the retired
katzenapp; obsolete withkatzen. - fdroiddata: stale
fork of F-Droid metadata for the old
katzenAndroid build. - bfg: unlabelled Rust experiment, no README, untouched since 2024; purpose unclear.
- mceliece,
chacha20,
chacha20poly1305:
standalone crypto that
hpqc/circlappear to have superseded; verify no remaining dependants before archiving. - qrterminal: fork with no current consumer.
GNU AGPL-3.0 across the org. A small number of submodules use different licenses; see the LICENSE file inside each repository.