Documentation
BoxDB is an experimental embedded SQLite client for applications that live on one server. It adds validated logical types, native decimal and temporal values, and optional readable YAML storage. There is no database server to run.
Start with the quickstart, then follow your client guide:
| Client | Install | Guide |
|---|---|---|
| TypeScript / Node.js / Bun | npm install @boxdb/client | TypeScript |
| Rust | cargo add boxdb | Rust |
| Go | Go module and matching native library | Go |
| Command line | brew install lebedev-nikita/tap/boxdb or npm install -g @boxdb/cli | CLI |
Learn the model
- Why BoxDB?: use cases, tradeoffs and when to choose something else.
- SQL and types: practical declarations, bindings and SQLite differences.
- Exact decimals and temporal values.
- Storage: binary SQLite, readable YAML and validation boundaries.
- Change history: recorded changesets, commit triggers, undo and apply.
- Built-in extensions: full-text, vector, Unicode and regexp queries.
Build an application
- Drizzle, Better Auth and db0 integrations.
- Migrations and schema export.
- Client errors.
- Deployment and backups.
- Replication with Litestream and file recovery.
- FAQ and benchmark methodology.
Project status
BoxDB is version 0 software. APIs and BoxDB storage contracts may change without compatibility layers. Native values and indexes require the bundled patched engine, even though binary files retain SQLite’s standard page and record encoding. Read the tradeoffs before adoption.
Contribute, report a bug or read the releases.