An encrypted personal cloud built on the AT Protocol.
1<!--
2 NOTE TO EDITORS:
3 Opake uses a dual-documentation system. If you modify the technical details,
4 command list, or installation steps in this README, you MUST also update
5 the corresponding MDX content in `web/src/content/` to prevent
6 documentation drift.
7-->
8
9# Opake
10
11**/oʊˈpɑːk/** — like "opaque," but built for the AT Protocol.
12
13An encrypted personal cloud where privacy and collaboration are no longer a tradeoff. Opake uses your PDS as a blind storage layer. Files are encrypted client-side (AES-256-GCM) before they ever touch the network.
14
15Your data is opaque to everyone without the key. That's the point.
16
17[The Handbook](https://opake.app/docs) · [Issue Tracker](https://tangled.org/sans-self.org/opake.app/issues) · [Architecture](docs/ARCHITECTURE.md)
18
19## Quick Start
20
21### 1. Install
22
23Requires Rust 1.75+.
24
25```sh
26cargo install --path crates/opake-cli
27```
28
29### 2. Login
30
31Authenticates via OAuth (DPoP), generates a 24-word seed phrase, and publishes your public encryption key.
32
33```sh
34opake login you.bsky.social
35```
36
37Write down the seed phrase when prompted — it's your recovery key for all devices.
38
39### 3. Use
40
41```sh
42opake upload secret.pdf --tags confidential
43opake share secret.pdf bob.bsky.social
44opake ls --long
45```
46
47## How It Works
48
491. **Encrypt:** Plaintext → AES-256-GCM (random key K).
502. **Wrap:** Key K → X25519-HKDF-A256KW (wrapped to your DID).
513. **Publish:** Ciphertext blob + Metadata record → PDS.
52
53No modifications to the PDS. All crypto happens on your machine.
54
55## Repository Structure
56
57- `opake-core/` — Platform-agnostic library (Rust/WASM).
58- `opake-cli/` — CLI implementation.
59- `appview/` — Elixir/Phoenix indexer for grant discovery.
60- `web/` — React SPA (Vite + TanStack).
61- `lexicons/` — AT Protocol schemas (`app.opake.*`).
62
63## Development
64
65```sh
66cargo test # Rust tests
67bun run wasm:build # Build WASM for web
68mix setup # Setup AppView
69```
70
71See [CONTRIBUTING.md](CONTRIBUTING.md) for the "mini-nuke" policy and commit conventions.
72
73## License
74
75[AGPL-3.0](LICENSE) — see [docs/LICENSING.md](docs/LICENSING.md) for what this means for self-hosters, plugin developers, and contributors.