mnemo-engine 0.3.2

Encrypted, single-file, portable agent memory engine with multi-signal recall, sessions, snapshots, and an IVF+PQ index
Documentation
[package]
# Distribution name on crates.io is `mnemo-engine`. The bare `mnemo` name
# is held by an unrelated crate, and `mnemo-db` is held by a different
# (MCP-native, DuckDB-backed) agent-memory project — see the v0.3.2 entry
# in CHANGELOG.md for the full rationale. The library and CLI binary names
# below stay `mnemo`, so consumers still write `use mnemo::...` and invoke
# `mnemo` on the command line after `cargo add mnemo-engine`.
name = "mnemo-engine"
version = "0.3.2"
edition = "2021"
rust-version = "1.75"
description = "Encrypted, single-file, portable agent memory engine with multi-signal recall, sessions, snapshots, and an IVF+PQ index"
license = "Apache-2.0"
repository = "https://github.com/toarchkumar/mnemo"
homepage = "https://toarchkumar.github.io/mnemo/"
documentation = "https://docs.rs/mnemo-engine"
readme = "README.md"
# crates.io shows 5 keywords; pick the ones most likely to match how
# people search for this. Each keyword must be ≤20 chars and lowercase.
keywords = ["database", "encryption", "vector", "ai", "memory"]
# Standard crates.io category slugs (https://crates.io/category_slugs).
categories = ["database", "cryptography", "command-line-utilities"]

# The core crate is the workspace root. The Node binding lives here as a
# workspace member but is NOT a default member: a plain `cargo build` /
# `cargo test` builds only the core (which needs no Node toolchain).
# Build the Node binding explicitly with `cargo build -p mnemo-node`.
#
# The published Python binding lives in the sibling `mnemo-python/` crate
# (a standalone workspace, not a member of this one); it's built and
# packaged via `maturin` from its own directory.
[workspace]
members = ["bindings/node"]
default-members = ["."]

[lib]
name = "mnemo"
path = "src/lib.rs"

[[bin]]
name = "mnemo"
path = "src/bin/mnemo.rs"

[dependencies]
aes-gcm = "=0.10.3"
argon2 = "=0.5.3"
serde = { version = "=1.0.210", features = ["derive"] }
serde_json = "=1.0.128"
rmp-serde = "=1.3.0"
# Pin the transitive `rmp` crate: 0.8.15+ requires the edition2024 Cargo
# feature, which is unavailable on our MSRV (1.75).
rmp = "=0.8.14"
# Pulled in by `argon2`; 1.7+ requires edition2024.
base64ct = "=1.6.0"
ulid = { version = "=1.1.3", features = ["serde"] }
thiserror = "=1.0.64"
zeroize = "=1.8.1"
rand = "=0.8.5"
clap = { version = "=4.4.18", features = ["derive"] }
# Used by the `mnemo` CLI binary only — `passphrase()` calls it when stdin
# is a TTY to read the passphrase without echo. The library never touches
# it, but Cargo doesn't have first-class "binary-only" deps, so it's
# pulled in unconditionally. Small (~50 KB compiled) and zero runtime
# cost when unused.
rpassword = "=7.3.1"

[dev-dependencies]
tempfile = "=3.10.1"

[profile.release]
lto = true
codegen-units = 1