Skip to main content

Rust-powered embedded database for Python: encryption, GraphRAG, MemPalace AI memory, and an agent-friendly CLI

Project description

RSN DB

A Rust-powered embedded database for Python — fast, secure, and optionally opinionated.

PyPI version Python Rust License: MIT

Installation · Quick start · Documentation · Security · Changelog


RSN DB is a single-file embedded database with a native Rust engine and a Python API. Use it like a lightweight local datastore, a graph-aware knowledge store (GraphRAG), or an agent-friendly shell with optional MemPalace AI memory integration.

Highlights

  • Performance — Rust core, zstd compression, optimized indexes
  • Security — AES-256-GCM encryption at rest, SHA-256 integrity checks, path guards, DoS limits
  • Persistence — Explicit save() / load() / snapshot() with JSON engine snapshots
  • GraphRAG — Ingest text and query relationships without an external LLM
  • Personality modes — Professional, Friendly, or Snarky CLI feedback (130+ snark lines, mood/vitals in Snarky mode)
  • AI memory — Session memory sidecar plus optional official MemPalace bridge
  • Agent-friendly CLI — Non-interactive -c, --json, --no-prompt for automation
RSN DB installation

Installation

pip install rsn_db

Optional extras

# Official MemPalace integration (local-first AI memory)
pip install 'rsn_db[mempalace]'

# Development / tests
pip install 'rsn_db[dev]'

Requires Python 3.9+.

Windows (cmd / PowerShell)

Prebuilt wheels are published for Windows (win_amd64). Install with:

pip install -U rsn_db
rsn-db --version

If pip appears stuck at "Building wheel", it is compiling Rust from source because no wheel matched your platform/Python. Either:

  1. Upgrade to the latest version (needs a published Windows wheel): pip install -U rsn_db
  2. Use the alias after install: rsn-db (not rsn) if another program owns that name
  3. Or install Rust + Visual Studio Build Tools and wait several minutes for the source build to finish

Prebuilt wheels are published for common Linux targets; other platforms build from source via maturin (Rust toolchain required).


Quick start

Beginners (recommended)

from rsn_db.beginners import quick_start, insert_many, records_to_dicts
from rsn_db import Query

db = quick_start("my_app.rsndb", mode="friendly")
db.create_table("tasks", {"title": {"type": "string", "required": True}})
insert_many(db, "tasks", [{"title": "Learn RSN DB"}, {"title": "Ship the release"}])
print(records_to_dicts(db.query(Query("tasks"))))
db.save()

Context manager (auto-save on exit)

from rsn_db import open_db

with open_db("shop.rsndb") as db:
    db.create_table("products", {"name": {"type": "string", "required": True}})
    db.insert("products", {"name": "Widget", "price": 9.99})

Core API (full control)

from rsn_db import Database, Query

db = Database(
    storage_path="data.rsndb",
    encryption_key="change-me-in-production",
    compression="zstd",
    mode="professional",
)

db.create_table("users", {"name": {"type": "string", "required": True}})
db.insert("users", {"name": "Alice", "age": 30})

rows = db.query(Query("users").where_eq("name", "Alice"))
db.save()
db.snapshot("backup.rsndb")

See documentation/BEGINNERS.md for a guided walkthrough.


CLI

Two console commands are installed — same program, pick either:

Command When to use
rsn Default on macOS/Linux
rsn-db Recommended on Windows if rsn conflicts with another tool in cmd/PowerShell

Interactive shell:

rsn
# Windows alternative:
rsn-db

Automation / agents

rsn --no-prompt -c "SHOW TABLES"
rsn-db --mode snarky -c "PULSE"
rsn-db --storage ./app.rsndb --json -c "COUNT users"
rsn-db --help

REPL commands (non-exhaustive)

Category Examples
Tables SHOW TABLES, DESCRIBE users, COUNT users
GraphRAG INGEST …, GRAPH_QUERY …
Alive (Snarky) PULSE, MOOD, VITALS, ACHIEVEMENT
MemPalace MEMPALACE HELP, MEMPALACE SEARCH …, MEMPALACE REMEMBER …
Transactions BATCH, COMMIT, ROLLBACK
RSN DB interactive session

MemPalace integration

RSN DB wraps the official MemPalace/mempalace package (wings → rooms → drawers, ChromaDB, local-first). Install the extra, then:

from rsn_db import open_db

with open_db("app.rsndb", mempalace=True) as db:
    db.remember("User prefers Tuesday deploys")
    print(db.palace_search("deploy schedule"))
    db.sync_to_mempalace()

Use only official sources: GitHub, PyPI, mempalaceofficial.com.

Details: documentation/mempalace.md


Session memory

Lightweight JSON sidecar for conversation turns — no extra install:

from rsn_db import SessionMemory

mem = SessionMemory.for_database("app.rsndb")
mem.add("user", "Remember: staging uses port 8081")
mem.add("assistant", "Noted.")
mem.save()

With MemPalace enabled, RsnDatabase.sync_to_mempalace() pushes turns into your palace.


GraphRAG

Ingest unstructured text and query it locally:

db.ingest("RSN DB was built with Rust and exposed to Python via PyO3.", source="docs")
print(db.graph_query("What is RSN DB built with?"))

Personality modes

Mode Behavior
Professional Minimal, neutral output
Friendly Helpful tone with light personality
Snarky Full commentary, 130+ remark pool, mood tracking, ambient PULSE / VITALS

Set via Python (mode="snarky"), CLI (--mode snarky), or saved preference on first run.


Security

RSN DB is designed with a security-first posture:

Control Description
Encryption at rest AES-256-GCM (optional encryption_key)
Integrity SHA-256 checksums on persisted blocks
Path guard Blocks absolute paths and directory traversal
DoS limits Caps on batch size, recursion depth, command length
Safe imports SQLite/JSON import respects declared schema types

Full write-up: documentation/security.md · documentation/threat_model.md


Documentation

Document Description
BEGINNERS.md First-time user guide
mempalace.md Official MemPalace bridge
security.md Security features and guidance
threat_model.md STRIDE threat model
patchnotes.md Version history
examples/ Usage examples

Development

git clone https://github.com/Enderchefcoder/RSN_DB.git
cd RSN_DB
pip install maturin pytest pytest-cov 'mempalace>=3.3.5,<4'
maturin develop --release
pytest tests/ --cov=rsn_db --cov-config=pyproject.toml
cargo clippy -- -W clippy::pedantic

License

MIT — see LICENSE.


Built with Rust and Python · GitHub · PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rsn_db-0.4.6.tar.gz (1.5 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rsn_db-0.4.6-cp39-abi3-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.9+Windows x86-64

rsn_db-0.4.6-cp39-abi3-manylinux_2_34_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.34+ x86-64

File details

Details for the file rsn_db-0.4.6.tar.gz.

File metadata

  • Download URL: rsn_db-0.4.6.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rsn_db-0.4.6.tar.gz
Algorithm Hash digest
SHA256 c24898378f5baf5fc505412e76fd3cfee2c77fb29098d4643aa9e664724e6faa
MD5 508718f275641782a8050ed730982b0f
BLAKE2b-256 4edd3856d358f7be28b6105e882f31353d8e6aeabd4c55d2428dda85c265c607

See more details on using hashes here.

File details

Details for the file rsn_db-0.4.6-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: rsn_db-0.4.6-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rsn_db-0.4.6-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f3e0a20ab48a65bca0248437f70711d2e9bb7a0d921adf74689e3dab282243b3
MD5 47d690294d3abd49b52dd1edd37ffc88
BLAKE2b-256 5df5440e9f9dd34e5f906be103a7e9412240ef3be89b4fc2064c94bd461e30ce

See more details on using hashes here.

File details

Details for the file rsn_db-0.4.6-cp39-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rsn_db-0.4.6-cp39-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6817f96fa8f75b7dc192b98c67279285fd80635afb255b94f2d2bfdd39a394b1
MD5 9d18b3123075da363f4b6eeec2bd06ed
BLAKE2b-256 20c838433512f39412a05fe7ad9eb3f5582640451ca2efeb7685e9cc6914e275

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page