Note
For background on this project, you can read the Ink & Switch Keyhive Dev Notebook.
π¦ This repo contains the Rust workspace for Keyhive and related crates
We're excited to announce that we're opening the pre-alpha code for the following libraries:
beekem: BeeKEM, a concurrent TreeKEM variant for continuous group key agreementkeyhive_codec: The canonical binary encoding traits shared by the other crateskeyhive_core: The core signing, encryption, and delegation systemkeyhive_crypto: Shared cryptographic primitives (digests, signatures, key exchange)keyhive_wasm: Wasm wrapper aroundkeyhive_core, plus TypeScript bindingskeyline: The authority graph: delegation and revocation certificates, and theKeylinestore interfacekeyline_memory: The in-memory referenceKeylinestore
Auth-enabled sync over end-to-end encrypted data lives in a separate repository: Subduction (the successor to Beelay).
Warning
DO NOT use this release in production applications
This is an early preview for those curious about the project. Expect bugs, inconsistencies, and unstable APIs. The code has not had a security audit, and the nonce / key-commitment construction in design/ciphersuite.md has not been independently reviewed. See the threat model for what Keyhive does and does not defend against, and SECURITY.md for reporting issues.
The repository ships a Nix flake with the complete toolchain:
nix develop # dev shell; prints a `menu` of commands
nix run .#ci # fast checks: fmt, clippy, tests, docs, wasm, deny, msrv, no_std
nix run .#ci-e2e # Playwright tests against the Wasm buildWithout Nix, rust-toolchain.toml pins the compiler and cargo test --workspace --exclude keyhive_wasm --features test_utils runs the host suite. Design documents are in design/. See CONTRIBUTING.md.
If you have any questions, thoughts, or feedback, please contact the team by filing a GitHub Issue, or in the keyhive channel in the Automerge Discord (if you're not part of the Automerge Discord you can join here).