Pubky is an open protocol for building censorship-resistant applications where users own their identity, data, and connections. No platform lock-in, no losing everything when a service shuts down. Your keys are your identity, and you choose where your data lives.
To learn more about the vision, see What is Pubky?, Censorship Resistance, and Credible Exit.
This repository contains the core infrastructure: a homeserver that stores and serves user data, Rust and JavaScript SDKs for building apps, a local testnet, and examples.
- Operators: Install and run a homeserver, then deploy it publicly.
- App developers: Use the SDK to build apps that read and write user data on homeservers. Guides coming soon.
A Pubky homeserver stores and serves user data. Users choose which homeserver holds their data, and can move to another at any time. The homeserver exposes HTTP APIs for authenticated storage and public reads, and publishes PKARR records so other clients can discover where a user's data lives.
- Public-key based sign-up, sign-in and third-party app authorization.
- File storage via HTTP
PUT,GET,DELETE, and listing APIs (WebDAV-like). - PKARR/PKDNS publishing for homeserver discovery.
- Admin and metrics endpoints for operators.
| Path | Purpose |
|---|---|
pubky-homeserver |
Homeserver binary and library crate. |
pubky-sdk |
Rust client for Pubky apps, plus JS/WASM bindings. |
pubky-common |
Shared types and helpers used by the SDK and homeserver. |
pubky-testnet |
Local ephemeral Pubky network for development and tests. |
examples |
Rust and JavaScript examples for signup, auth, storage, and requests. |
e2e |
End-to-end tests covering cross-crate workflows. |
docs |
Install guides, local development, and testing docs. |