Skip to main content

MongrelDB logo

MongrelDB Kit

The application-facing persistence layer for MongrelDB - schema-aware query builder, migrations, relational constraints, and stable semantics across TypeScript, Rust, Python, and CLI surfaces.

crates.io npm PyPI

Packages And Tools

Surface Package / crate Install or run
TypeScript @visorcraft/mongreldb-kit npm install @visorcraft/mongreldb-kit @visorcraft/mongreldb
Rust mongreldb-kit cargo add mongreldb-kit
Python mongreldb-kit pip install mongreldb-kit
CLI mongreldb-kit-cli (mongreldb-kit binary) cargo run -p mongreldb-kit-cli -- --help

What It Provides

  • Schema helpers for typed tables, stable table/column ids, defaults, indexes, checks, unique constraints, and foreign keys. Full type set: int64, float64, bool, text, bytes (BLOB), timestamp, date, date64, time64, interval, decimal128, UUID, JSON, and array columns.
  • Synchronous TypeScript CRUD/query builder with predicates, ordering, projections, aggregates, joins, subqueries, CTEs, batch inserts, updates, and deletes.
  • Rust and Python APIs backed by the same Rust core and verified with cross-language conformance fixtures.
  • Migration runner with content-addressed checksums, stored schema catalog, table renames, and SQL views.
  • Embedded SQL surface (sql / sqlArrow / sqlRows) with recursive CTEs, window functions, CREATE TABLE AS SELECT, materialized views, multi-statement execution, and a mongreldb_fts_rank relevance-scoring UDF.
  • Storage tuning (spill thresholds, compaction zstd, result-cache sizing, index build policy), trigger config, and per-table introspection (run count, page-cache stats, memtable/cache lengths).
  • BinarySign and full-f32 Dense ANN schema options, plus durable online create/replace index jobs with status, cancellation, resume, and wait APIs in Rust, TypeScript, and Python.
  • Non-blocking async I/O variants (putAsync / queryAsync / countAsync / …) and WriteBuffer micro-batching for high-throughput ingest (TypeScript).
  • Engine-side trigger management plus SQL-backed virtual/external table helpers.
  • Extended SQL Function helpers for JSON, date/time, aggregate, and math-style SQL calls.
  • User/role/credentials management with optional storage-layer enforcement: Argon2id-hashed catalog users, roles, GRANT/REVOKE table-level permissions, daemon HTTP Basic + Bearer auth, and opt-in require_auth credential enforcement (credentialed open/create constructors, enable_auth/disable_auth, offline recovery) - exposed through every language API, the embedded SQL surface, and the CLI (user / role / auth subcommands).
  • Relational constraint enforcement on top of MongrelDB transactions: not-null, type/range/string validation, unique/composite unique, foreign keys, and cascade/set-null/restrict deletes.
  • Multi-process file locking, replication, and change-data-capture via the daemon.

Documentation

History retention and time-travel reads

Both the embedded KitDatabase and the daemon client RemoteDatabase expose history-retention controls:

// TypeScript
db.setHistoryRetentionEpochs(100);   // embedded: number argument
remote.setHistoryRetentionEpochs(100n); // remote: bigint argument
console.log(db.historyRetentionEpochs());     // bigint
console.log(remote.historyRetentionEpochs()); // bigint
console.log(db.earliestRetainedEpoch());      // bigint
# Python (embedded)
db.set_history_retention_epochs(100)
print(db.history_retention_epochs())  # int
print(db.earliest_retained_epoch())   # int

# Python (remote)
remote.set_history_retention_epochs(100)
print(remote.history_retention_epochs())
print(remote.earliest_retained_epoch())

Set retention before writing the data you want to time-travel back to. Embedded databases initially keep only the latest epoch. The daemon defaults to 1024 epochs unless MONGRELDB_HISTORY_RETENTION_EPOCHS overrides it. Increasing retention later cannot restore history that has already been removed. Read past snapshots with db.rowsAtEpoch('table', epoch) (embedded) or SELECT ... AS OF EPOCH <epoch> (embedded SQL and the daemon).

Quick Example

Minimal TypeScript schema and CRUD flow:

TypeScript

import {
  KitDatabase,
  Schema,
  table,
  int,
  text,
  sequenceDefault,
  unique,
  eq
} from '@visorcraft/mongreldb-kit';

const users = table('users', {
  columns: [
    int('id', { primaryKey: true, default: sequenceDefault('users_id_seq') }),
    text('email', { nullable: false }),
    text('name', { nullable: true })
  ],
  primaryKey: 'id',
  unique: [unique(['email'], { name: 'users_email_uq' })]
});

const schema = new Schema([users]);
const db = KitDatabase.openSync('./app-data', schema);

db.migrateSync(schema, [
  {
    version: 1,
    name: 'initial',
    up({ ensureTable }) {
      ensureTable(users);
    }
  }
]);

const alice = db.insertInto(users)
  .values({ email: 'alice@example.com', name: 'Alice' })
  .executeSync();

const [row] = db.selectFrom(users)
  .where(eq(users.id, alice.id))
  .executeSync();

console.log(row);
db.close();

See the language docs for complete runnable examples in TypeScript, Rust, and Python.

Development Notes

  • TypeScript requires Node.js 22+ and the native @visorcraft/mongreldb peer dependency.
  • A MongrelDB database path is a data directory, not a single database file.
  • In this mono-repo checkout, the TypeScript package loads the native addon from the sibling MongrelDB repo. Build crates/mongreldb-node there with npm run build in release mode before benchmarking; stale debug .node builds make bulk paths much slower.

Building and testing

# Rust
rtk cargo check --workspace
rtk cargo test --workspace

# TypeScript
cd packages/kit
rtk npm ci
rtk npm run build
rtk npm run check
rtk npm test

# Python
cd python/mongreldb_kit
rtk python -m venv .venv
rtk .venv/bin/pip install maturin
rtk maturin develop
rtk .venv/bin/pytest ../../python/tests ../../tests/conformance/python

# CLI
rtk cargo run -p mongreldb-kit-cli -- --help

License

MIT OR Apache-2.0

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

mongreldb_kit-0.64.14-cp311-cp311-macosx_11_0_arm64.whl (52.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mongreldb_kit-0.64.14-cp311-cp311-macosx_10_12_x86_64.whl (54.2 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

mongreldb_kit-0.64.14-cp310-cp310-win_amd64.whl (51.9 MB view details)

Uploaded CPython 3.10Windows x86-64

mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (58.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (59.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file mongreldb_kit-0.64.14-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mongreldb_kit-0.64.14-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3d91aa333fa4db55098933845584d757f0879d0e13f8e51da5a4121978c8661
MD5 8ab42153eb639b0d571f8ebb5f65d1c0
BLAKE2b-256 be684314aa6f10a669ddce709ab243fd779a9d40c412e0939d48a9292bc66a19

See more details on using hashes here.

Provenance

The following attestation bundles were made for mongreldb_kit-0.64.14-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on visorcraft/MongrelDB-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mongreldb_kit-0.64.14-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mongreldb_kit-0.64.14-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f2615075b987861a5f6e1a1c8d8e201c7c4e81a5eaa4c23da5b9b7a2c13e35bc
MD5 07f03eb889119251d6085ea6215b6133
BLAKE2b-256 499f64f51cb4c541e5cc36aab0923c00342b2f6aa8b9512a241ff5836132894b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mongreldb_kit-0.64.14-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: release.yml on visorcraft/MongrelDB-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mongreldb_kit-0.64.14-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for mongreldb_kit-0.64.14-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d63f7cbfb6189081ba6de9ccdd072d1ae115f213383639c829f718dc65d85abf
MD5 554483980a9c32403e3e7a8d2818b97e
BLAKE2b-256 c5436d391957ac20b511b849bdc7217e222ccb2d3072b70e545fa99f0d46f661

See more details on using hashes here.

Provenance

The following attestation bundles were made for mongreldb_kit-0.64.14-cp310-cp310-win_amd64.whl:

Publisher: release.yml on visorcraft/MongrelDB-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd22048908a3909734d5fc51cef20e7123df9786667741ad918d92f46e1fc134
MD5 54c43f6009c18bdc93fed470f260cf3e
BLAKE2b-256 c95d2e4193d058e2b5e84e80167a6992c529e74c8d3202d655e3fa2ab6b85572

See more details on using hashes here.

Provenance

The following attestation bundles were made for mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on visorcraft/MongrelDB-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 46582947a3f43ba1bb49491962d92a832c732ceffc09daf6fb0b1eaa4decf89b
MD5 d0880e33bd71b252890454be8d77b029
BLAKE2b-256 c826872d087335c6c95475e17df3f88edbd6b17c43e9d9b47b35e8041404926c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mongreldb_kit-0.64.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on visorcraft/MongrelDB-Kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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