Open-source platform for offline-first, E2E encrypted, P2P applications
Osvauld is a platform for building truly decentralized applications. Write your app logic in Lua, design your UI in Slint, and osvauld handles identity, encryption, P2P sync, and offline-first storage automatically.
Your App (Lua + Slint)
│
▼
┌─────────────────────────────────────┐
│ osvauld Runtime │
│ ┌─────────┐ ┌─────────────────┐ │
│ │ Identity │ │ Loro CRDT Sync │ │
│ │ (Herald) │ │ (Butler) │ │
│ └─────────┘ └─────────────────┘ │
│ ┌─────────────────────────────────┐│
│ │ P2P Network (Courier + QUIC) ││
│ └─────────────────────────────────┘│
└─────────────────────────────────────┘
No servers required. Apps sync directly between devices using encrypted P2P connections.
| Capability | Description |
|---|---|
| Self-Sovereign Identity | Ed25519 keypairs for signing, X25519 for encryption. Your identity lives on your devices. |
| UCAN-Based Permits | Fine-grained, delegatable authorization. Share access without a central authority. |
| QUIC Transport | Fast, encrypted connections via iroh. NAT traversal and relay built-in. |
| Loro CRDT Sync | Conflict-free data sync. Works offline, merges automatically when peers reconnect. |
| Dynamic Apps | Hot-load Lua + Slint apps. No recompilation needed. |
| Sovereign Nodes | Optional always-on nodes (Raspberry Pi, VPS) for relay and offline sync. |
┌─────────────────────────────────────────────────────────────────┐
│ Application Layer │
│ Lua apps, UI state, business logic │
├─────────────────────────────────────────────────────────────────┤
│ Butler │
│ Storage, services, Scribe actors (Loro CRDT) │
├─────────────────────────────────────────────────────────────────┤
│ Courier │
│ P2P orchestration, handshakes, sync protocol │
│ Actor model: Coordinator → PeerActors │
├─────────────────────────────────────────────────────────────────┤
│ Gurkha │
│ Permit parsing, capability extraction, authorization decisions │
├─────────────────────────────────────────────────────────────────┤
│ Transport │
│ QUIC connections, streams, datagrams, blob transfer │
│ "Dumb byte pipe" - no protocol knowledge │
├─────────────────────────────────────────────────────────────────┤
│ Herald │
│ Identity, encryption, signing primitives │
├─────────────────────────────────────────────────────────────────┤
│ iroh │
│ QUIC, relay, NAT traversal, blob protocol │
└─────────────────────────────────────────────────────────────────┘
| Crate | Purpose | Key Dependencies |
|---|---|---|
herald |
Identity, Ed25519/X25519 crypto, signing | - |
gurkha |
UCAN permit parsing and validation | herald |
transport |
QUIC connections, streams, blobs | iroh |
courier |
P2P orchestration, sync protocol, actors | transport, butler, gurkha |
butler |
Storage, services API, Loro CRDT scribes | herald, gurkha |
app_runtime |
Lua VM, Slint bindings, app lifecycle | butler |
slint_shell |
Desktop shell for running apps | app_runtime |
kunki |
Node runtime (relay, storage, derivations) | courier, butler |
| App | Description | Location |
|---|---|---|
| My Shop | E-commerce with owner/customer roles, order management | sample_apps/my-shop/ |
| My Booking | Service booking with provider/customer roles | sample_apps/my-booking/ |
| Canvas | Collaborative whiteboard with shapes, connectors, live cursors | sample_apps/canvas-app/ |
| Photo Gallery | Shared photo albums with blob sync | sample_apps/photo-gallery/ |
| Demos | Sthalam Guide, Snake game, Math sim, Group chat | sample_apps/osvauld-demos/ |
git clone https://github.com/osvauld/osvauld.git
cd osvauld
cargo run -p slint_shell
This launches Sthalam with the Sthalam Guide app - an interactive introduction to the Xtended Web. The guide covers:
cargo build -p slint_shell --release
./target/release/slint_shell
# Unit tests
cargo test
# Integration tests (P2P sync scenarios)
cargo test -p integration_tests
osvauld/
├── herald/ # Identity and crypto primitives
├── gurkha/ # Permit parsing and validation
├── transport/ # QUIC transport layer
├── courier/ # P2P orchestration
├── butler/ # Storage and services
├── app_runtime/ # Lua VM and Slint bindings
├── slint_shell/ # Desktop application shell
├── kunki/ # Node runtime
├── sample_apps/ # Example applications
├── integration_tests/# P2P sync tests
└── docs/ # Technical documentation
We welcome contributions! See CLAUDE.md for code policies and style guidelines.
Connect with us on Telegram to discuss features and shape the roadmap
This project has received funding from FLOSS fund and Innovation grant.
See LICENSE.txt for details.