3Decentralized E2E encrypted messenger. No accounts, no home servers — identity is a keypair.
7- **Client:** F# / .NET 10 / Fabulous (Elm-style MVU) + Avalonia UI
8- **Server:** Knot (custom functional language, compiled via Rust toolchain)
9- **Crypto:** libsodium (Ed25519 + X25519 + XChaCha20-Poly1305)
10- **Persistence:** SQLite via Dapper.FSharp (client), in-memory (server)
14- `client/` — F# cross-platform app (macOS, iOS)
15 - `App.fs` — Main state machine (Model/Msg/CmdMsg/update/view)
16 - `Crypto.fs` — Encryption/decryption, key derivation
17 - `ApiClient.fs` — HTTP transport (auth, poll, send)
18 - `Store.fs` — SQLite persistence
19 - `Phonemic.fs` — Urbit @p syllable encoding for human-readable keys
20 - `Buttons.fs` — Animated button component
21 - `Platform/Desktop/` — macOS entry point
22 - `Platform/iOS/` — iOS entry point + native photo picker
23- `server.knot` — Complete server implementation (routes, federation, gossip)
24- `servers.json` — Bootstrap server list
25- `install.sh` — Linux deployment (systemd + Caddy)
31cd client && ./run-mac.sh
34cd client && ./run-ios.sh
37cd client && dotnet build
42Use **jj** (jujutsu), not git.
46- Formatter: Fantomas (`dotnet tool restore && dotnet fantomas client/`)
47- F# naming: PascalCase types, camelCase functions/fields
48- Architecture: Elm-style MVU — all state in `Model`, all effects via `CmdMsg`
49- No mutable state outside UI framework
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list