Local-first
Every feature works offline. Sync is an enhancement, never a requirement, so the vault keeps working when the network does not.
Knowledge that stays yours — encrypted on your device and synced only across your own network.
A zero-knowledge knowledge base with an offline AI assistant, moving from a shared Tauri app to dedicated native apps on one audited Rust core.
12-word
BIP39 phrase
4
Platforms
0
Cloud servers
MIT
Open source
Enclave treats data ownership as an engineering constraint rather than a promise: the vault is encrypted before it is stored, the key is derived from a phrase that never leaves the device, and devices sync directly over the local network. The native-app migration keeps that contract while removing the browser engine from the vault.
Every feature works offline. Sync is an enhancement, never a requirement, so the vault keeps working when the network does not.
There is no account and no telemetry. Notes are encrypted with SQLCipher, keys come from a 12-word BIP39 phrase through Argon2id, and no Enclave server ever sees plaintext.
Desktop and Android consume the same versioned Rust core and the same contract — vault schema v1, block schema v1, sync protocol v3 and the FFI boundary — so the apps cannot drift.
The decisions, trade-offs, and details that make Enclave worth your time.
Stable on Windows, Linux, macOS and Android beta from one codebase
Zero-knowledge by design: a BIP39 phrase, Argon2id-derived keys and SQLCipher-encrypted storage
mDNS discovery plus mutually authenticated, XChaCha20-Poly1305 sync — no servers
Offline RAG with in-process ONNX embeddings and sqlite-vec inside the encrypted vault
Moving to dedicated native apps on one versioned Rust core: Kotlin and Compose on Android next
Enclave is a full knowledge workspace, not a locked box: documents, databases, whiteboards, an offline assistant and device-to-device sync, with the security model shaping every layer.
The SQLite vault is encrypted with SQLCipher (AES-256-CBC with HMAC-SHA512) before it touches disk. A 12-word BIP39 phrase derives the 256-bit master key through Argon2id (64 MiB, 3 iterations, 4 parallelism); the phrase is never written to disk in clear.
Devices discover each other with mDNS and sync directly over WebSocket. Peers must prove knowledge of the vault-derived sync key in a challenge-response handshake, and every frame after it is sealed with XChaCha20-Poly1305. Other devices on the Wi-Fi see only challenges and ciphertext.
Ask questions across the vault with retrieval-augmented generation. In-process ONNX embeddings (all-MiniLM-L6-v2) and a sqlite-vec ANN index live inside the encrypted file, with exact-cosine re-ranking in Rust, so with offline embeddings enabled retrieval never leaves the device.
Paper mode has slash-command blocks, code, callouts, toggles, page links and backlinks, mentions, PDFs and files. Typed databases add 12 column types and five views — table, kanban, list, gallery and timeline — with grouping, sorting and filters.
Every page can switch to an infinite whiteboard with stickies, shapes, arrows, frames, page embeds and mind maps, presented frame by frame or exported as PNG. The graph view maps the connections between pages.
The next stable is a Kotlin and Jetpack Compose app on the same core: four note layouts, a create stack with user templates, widgets, a share target, auto-lock and a branded vault gate. It is verified on a real device and is not part of the current stable yet.
Enclave never phones home. Update checks are opt-in, every release is reviewed individually, and the download is verified against GitHub's SHA-256 and a pinned Ed25519 signature before the installer is allowed to run.
Export a page as Markdown or HTML, or take the whole vault as a still-encrypted backup. Android restores a backup from the gate or Settings after re-authentication, and the restore is refused if the backup belongs to another vault or a newer schema.
The rebuild removes the webview: Kotlin and Compose on Android, Qt 6 on desktop, and the same Rust core behind a versioned contract. Android is the next stable; the desktop decision and its verification gate are recorded in ADR 0004.
The security model is a sequence a user can follow: a phrase creates the vault, the key never leaves the device, and the same key authorises every peer.
Enclave generates a 12-word BIP39 phrase client-side and asks you to save it. Argon2id derives the master key, which becomes the SQLCipher key for the database; the phrase is kept only as a re-encrypted vault.key file.
Create pages, databases, whiteboards and folders without a network. The vault is the source of truth and every edit is local first.
Start sync to advertise over mDNS. Peers authenticate with HMAC-SHA256 proofs, exchange encrypted full snapshots, and merge at document level with last-write-wins and tombstones.
Enable the assistant and point it at any OpenAI-compatible endpoint. With offline embeddings on, retrieval runs entirely on the device and answers list the pages they used.
The same contract now drives a Kotlin and Compose Android app and the planned Qt 6 desktop app, with golden fixtures and version checks keeping every client interoperable.
Tauri v2 + SvelteKit ──────────────┐
Windows · Linux · macOS · Android ├──▶ Rust core (core-db · core-network · core-api)
Kotlin + Compose (Android, next) ──┘
│
▼
SQLCipher vault (SQLite)
├─ documents, blocks, folders
├─ FTS5 + sqlite-vec ANN
└─ mDNS + WebSocket sync
HMAC-SHA256 auth · XChaCha20-Poly1305
full snapshots · doc-level last-write-winsOne Rust core, one versioned contract and a deliberately small stack that a single owner can audit and run.
Licensed under MIT.
Enclave is MIT-licensed and developed in public. Feedback, issues, and contributions are genuinely welcome.