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+. 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.4.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

rsn_db-0.4.4-cp312-cp312-manylinux_2_34_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

File details

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

File metadata

  • Download URL: rsn_db-0.4.4.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.4.tar.gz
Algorithm Hash digest
SHA256 439bfdf02ef3b1e0c3d719d8f7727c0c2c325b6186653ed5447eacf314cfb349
MD5 5685c06d90fbfbb6ad02ebe275adf588
BLAKE2b-256 e49328b17db4f8787ee28c929449a7a92fb67a403c2863f822410e4b9807d810

See more details on using hashes here.

File details

Details for the file rsn_db-0.4.4-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for rsn_db-0.4.4-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d0b4b2fc8a4f2ec7f59605d5b0e21b190b0c0a6fdfdd429fa661926798856274
MD5 0c326dcb8492baa53222775f076f28d4
BLAKE2b-256 577760bc5dc07e8a8c4aeedfa239b908f313e1bddbd9f2f9888d55ddcf479332

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