Direct
The Graft SQLite extension can be downloaded and used with SQLite anywhere you can use SQLite.1
Manual download
Section titled “Manual download”The Graft SQLite extension, is released using GitHub Releases for most platforms. You can access the latest release using the links below:
| Platform | Architecture | Download Link |
|---|---|---|
| Linux | x86_64 | libgraft-ext-linux-x86_64.tar.gz |
| Linux | aarch64 | libgraft-ext-linux-aarch64.tar.gz |
| Windows | x86_64 | libgraft-ext-windows-x86_64.zip |
| Windows | aarch64 | libgraft-ext-windows-aarch64.zip |
| macOS | aarch64 | libgraft-ext-macos-aarch64.tar.gz |
After downloading the file for your system’s platform and architecture, decompress the file to access the extension, which is named libgraft_ext.[dll,dylib,so].
sqlpkg
Section titled “sqlpkg”sqlpkg is a third-party command line extension manager for SQLite.
sqlpkg install orbitinghail/graftsqlpkg.exe install orbitinghail/graftOnce installed, you can find the path to libgraft_ext using the which subcommand:
sqlpkg which orbitinghail/graftsqlpkg.exe which orbitinghail/graftThe author of sqlpkg, Anton Zhiyanov, published a comprehensive guide to SQLite extensions on their blog which is available here. I highly recommend reading that post for more ways to install and use SQLite extensions.
Usage with the SQLite CLI
Section titled “Usage with the SQLite CLI”When installed using your system package manager or via another binary distribution, SQLite ships with a command-line interface (CLI) usually called sqlite3 (sqlite3.exe on Windows).
After starting the SQLite shell you can load the Graft extension with the .load command:
.load PATH_TO_LIBGRAFTHere is an example of loading libgraft_ext on linux, opening a Volume, and checking pragma graft_status to make sure it all works:
➜ sqlite3SQLite version 3.49.1 2025-02-18 13:38:58Enter ".help" for usage hints.Connected to a transient in-memory database.Use ".open FILENAME" to reopen on a persistent database.
sqlite> # load the Graft extensionsqlite> .load ./libgraft_ext.so
sqlite> # open a Graft Volume as a databasesqlite> .open 'file:main?vfs=graft'
sqlite> # verify Graft is working using pragmasqlite> pragma graft_status;+--------------------------------------------------+| On tag main |+--------------------------------------------------+| On tag main || Local Log 74ggc1pWvh-3nSd2hKxw7rt7 is grafted to || remote Log 74ggc1pWvh-3CGcHFP9HBTEK. || || The Volume is up to date with the remote. |+--------------------------------------------------+Footnotes
Section titled “Footnotes”-
As long as SQLite is running on a supported platform and is compiled with support for loading extensions. ↩