A single-author Rust project with no unencrypted mode.
An encrypted memory engine with hybrid recall and an MCP server, built on an embedded SQL/vector database. Citadel Studio provides a native interface for SQL, stored memory, and vault diagnostics.
The file format is always encrypted.
Page payloads use AES-256-CTR with HMAC-SHA256 authentication. There is no unencrypted storage mode. File headers and commit metadata are not hidden.
Crash-safety without a WAL.
Commits use shadow paging: modified pages are written to fresh locations before publishing a new commit slot. Durable commits flush the pages and commit metadata in order; recovery validates the retained slots.
Embedded means no server.
The database runs inside your application and needs no separate server. Network sync and the stdio MCP server are explicit integrations.
Memory is encrypted the same way.
The memory engine stores vectors, atoms, and edges through the encrypted database. Encrypted regions support per-atom and per-region key erasure with receipts. External backups, copied keys, and exported plaintext are outside that erasure.
The benchmarks are reproducible.
The 59 head-to-head benchmarks against unencrypted SQLite live in crates/citadel-sql/benches/h2h_bench.rs. They compare engine overhead with durability disabled. Commands and measured results are in the README.
A Cargo workspace of 22 crates, layered from the bytes on disk up to the SQL frontend, the memory engine, and the bindings. Thousands of unit, integration, and torture tests run across the workspace. 16 crates publish to crates.io, plus a citadeldb wheel to PyPI.
@citadeldb/wasm on npm.citadeldb wheel on PyPI.Rust 1.95+AES-256-CTRHMAC-SHA256Argon2idEach capability below lives in the open-source tree. Here is where to find it:
citadel-crypto; transactions and authenticated commit slots in citadel-txn; public database APIs in citadel.ON CONFLICT), RETURNING, generated columns, JSON/JSONB with 14 PostgreSQL operators, triggers, materialized views, full-text search, partial / GIN indexes, native DATE/TIMESTAMP, and a VECTOR(N) type with an ANN index. Implemented in citadel-sql and citadel-vector.citadel-mem stores regions of typed atoms and edges with hybrid recall and cryptographic erasure; citadel-mcp serves it over the Model Context Protocol. Historical memory results and configurations are recorded by citadel-membench.citadel-ffi, the citadel CLI, and Citadel Studio. See downloads and build instructions.Citadel is a one-person project. If you want to contribute, the crate list in section 02 is a good map of where help is welcome - each crate is a self-contained area: parser extensions in citadel-sql, new code paths in citadel-crypto, recall tuning in citadel-mem, and more language bindings.
Encrypted by construction. Not by option.