Skip to main content

inillucent

An embedded SQL database that speaks SQLite's dialect on its own storage, with full-text and vector search built in — the job of PostgreSQL + pgvector + an embedding server, in one process and one file.

pip install inillucent

No compiler, no Rust toolchain, no build step: the wheel carries the binaries and the C ABI library for your platform.

In process

from inillucent import Database

with Database("app.rdb") as database:
    connection = database.connect()
    connection.execute("CREATE TABLE people (id INTEGER PRIMARY KEY, name TEXT)")
    connection.execute("INSERT INTO people VALUES (?1, ?2)", [1, "Ada"])
    rows = connection.execute("SELECT id, name FROM people", limit=200)
    print(rows.rows, rows.total)   # [[1, 'Ada']] 1

total is exact, not an estimate: the engine materialises, so a grid can say 1–200 of 4,317 and mean it.

Unsupported is its own exception

from inillucent import Database, Unsupported

try:
    connection.execute("SOMETHING NOT BUILT YET")
except Unsupported as why:
    print("not yet:", why.feature)   # an engine gap, not your typo

Catching Unsupported and Error together throws away the one distinction this driver was designed around. An application needs to be able to say "this engine cannot do that yet" rather than "check your spelling".

From the command line

pip install puts four programs on PATH:

inillucent create app.rdb
inillucent --db app.rdb exec "CREATE TABLE notes (id INTEGER PRIMARY KEY, body TEXT)"
inillucent --db app.rdb query "SELECT * FROM notes"
inillucent --db app.rdb describe notes
inillucent-shell app.rdb          # the sqlite3-shaped REPL
inillucent help

and they are reachable from Python too, for the verbs the driver has no call for:

from inillucent import run, query

print(run("describe", db="app.rdb", table="notes")["ddl"])
print(query("SELECT * FROM notes WHERE id > ?1", db="app.rdb", params=[3]))

For an agent

{
  "mcpServers": {
    "inillucent": {
      "command": "inillucent-mcp",
      "args": ["--db", "app.rdb"]
    }
  }
}

27 tools, generated from the same command table the CLI reads. --readonly refuses every statement that changes something; --root DIR refuses every path outside a directory.

Licence

MIT. Source: https://github.com/Black-Rainbow-Labs/Inillucent

The API

Every method this binding has. The worked example each one appears in is the link; nothing here is a summary of a method that does not exist, because cargo test -p inillucent-compat --test documentation reads this table and fails on a name the binding source does not declare.

what one line
Database(path, **options) open or create a database file.
Database.connect() a Connection. Each one is its own session, which is what temp. and ATTACH are scoped to.
Database.path() the file this database is in.
Database.checkpoint() make everything written so far durable in the file.
Connection.execute(sql, params, limit) run one statement and return Rows.
Connection.execute_batch(sql) run several statements separated by semicolons, for their effect.
Connection.prepare(sql) a Statement, compiled once and run many times.
Connection.transaction() a Transaction. Use it as a context manager: leaving the block without a commit rolls back.
Connection.last_insert_rowid() the rowid the last INSERT assigned.
Connection.total_changes() how many rows every statement so far has changed.
Connection.in_transaction() whether a transaction is open.
Connection.schema_cookie() the schema's generation, which changes when the schema does.
Connection.cancel() stop the running statement, from another thread.
Statement.execute(params, limit) run the compiled statement with these values.
Transaction.execute(sql) run a statement inside the transaction.
Transaction.commit() keep what the transaction wrote.
Transaction.rollback() discard it. The same thing leaving the block does.
Rows len(), iteration, and indexing by row.
capabilities() what the engine does, as the checked table rather than a feature list.
supports(name) whether one capability is answered, refused, or silent.
version() the driver's version, and the engine's beneath it.
abi_version() the C ABI version this binding links against.
DriverError one failure, with its status and its message.
Unsupported the subclass raised for a construct this engine has not built - a different thing from a syntax error, which is the point.

Release files for inillucent 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for inillucent 0.1.9
File
inillucent-0.1.9-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
inillucent-0.1.9-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
inillucent-0.1.9-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
inillucent-0.1.9-py3-none-macosx_13_0_universal2.whl Python 3 none macOS 13.0+ universal2 (ARM64, x86-64) Details

Total release size: 104.7 MB

Release files / inillucent-0.1.9-py3-none-win_amd64.whl

Download URL inillucent-0.1.9-py3-none-win_amd64.whl
Size 20.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
b3ab6b9cf24f248d0af2c96661281c4d55fe4ac97766f00b4caf31193ce51c68
BLAKE2b-256 checksum
How to use checksums
738aa58e4b19e8dd63df2d4100a3d44131f27505f235cee22908c6e014e78898
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.11

Release files / inillucent-0.1.9-py3-none-manylinux_2_28_x86_64.whl

Download URL inillucent-0.1.9-py3-none-manylinux_2_28_x86_64.whl
Size 21.4 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
bc90ba16f4e6322f692a6d9ef3eb9cf250de1523d3a2ad1e0adbf49b31f2e3d8
BLAKE2b-256 checksum
How to use checksums
ad8962bf4271cd20518d7c97e4989c7102f8a8f771af5ff1aa95aa809d14042c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.11

Release files / inillucent-0.1.9-py3-none-manylinux_2_28_aarch64.whl

Download URL inillucent-0.1.9-py3-none-manylinux_2_28_aarch64.whl
Size 19.8 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
e4aa854d42282fd861cb8695db2615bc8348209d60eea85b2b695b64744e3a74
BLAKE2b-256 checksum
How to use checksums
c06accfd526e5012c20d2c6fd83d784e562a71d7058de618e1bb5ef06260d467
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.11

Release files / inillucent-0.1.9-py3-none-macosx_13_0_universal2.whl

Download URL inillucent-0.1.9-py3-none-macosx_13_0_universal2.whl
Size 43.1 MB
Tags Python 3 macOS 13.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
d6cdd52232f82d0605632b84f81040d83375b6c927ab0788303f6584f7b70b73
BLAKE2b-256 checksum
How to use checksums
67950e8605f1321364c5a9bd649fb3d3c7c70e95164f538f79af463c3e7af5da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.11

Release history Release notifications | RSS feed

1.0.29

4 release files

This release

0.1.9 This release

4 release files

0.1.8

4 release files

0.1.7

4 release files

0.1.6

4 release files

0.1.5

1 release file

0.1.3

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page