pg-embed downloads precompiled PostgreSQL binaries from zonkyio/embedded-postgres-binaries, caches them on first use, and manages the full server lifecycle (initdb โ pg_ctl start โ pg_ctl stop). Built on tokio.
Contents
Quick start
[]
= "1.0"
use PathBuf;
use Duration;
use PgAuthMethod;
use Result;
use ;
use ;
async
Extensions
Third-party extensions (pgvector, PostGIS, etc.) are not included in the precompiled binaries. To install one, point install_extension() at a directory containing the pre-built files for your platform. Call it after setup() and before start_db().
use Path;
// After pg.setup() and before pg.start_db():
pg.install_extension.await?;
pg.start_db.await?;
// Then activate it inside a database:
// CREATE EXTENSION IF NOT EXISTS vector;
Files are routed by extension:
| File type | Destination |
|---|---|
.so, .dylib, .dll |
{cache}/lib/ |
.control, .sql |
{cache}/share/postgresql/extension/ |
| Anything else | Skipped |
Pure-SQL extensions (no shared library) work the same way โ simply omit the binary.
Features
| Capability | API | Feature flag |
|---|---|---|
| ๐ Server lifecycle | setup(), start_db(), stop_db() |
rt_tokio |
| ๐งฉ Extension installation | install_extension() |
rt_tokio |
| ๐๏ธ Database management | create_database(), drop_database(), database_exists() |
rt_tokio_migrate |
| ๐ Migrations | migrate() |
rt_tokio_migrate |
The default feature is rt_tokio_migrate (includes sqlx). For a smaller build without sqlx:
= { = "1.0", = false, = ["rt_tokio"] }
Additional behaviours included in all builds:
- Binary caching โ binaries are downloaded once per OS/arch/version and reused across runs.
- Automatic shutdown โ
pg_ctl stopis called on drop if the server is still running. - Concurrent safety โ a global lock prevents duplicate downloads when multiple instances initialise simultaneously.
Platform support
| OS | Architectures |
|---|---|
| amd64, arm64v8 ยน | |
| amd64, i386, arm32v6, arm32v7, arm64v8, ppc64le | |
| amd64, i386, arm32v6, arm32v7, arm64v8, ppc64le | |
| amd64, i386 |
Supported PostgreSQL versions: 10 โ 18 (PG_V10 โฆ PG_V18 constants).
ยน Apple Silicon binaries are available for PostgreSQL 14 and later only.
Binary cache
Binaries are stored at an OS-specific location and reused on subsequent runs:
| OS | Cache path |
|---|---|
| macOS | ~/Library/Caches/pg-embed/ |
| Linux | $XDG_CACHE_HOME/pg-embed/ or ~/.cache/pg-embed/ |
| Windows | %LOCALAPPDATA%\pg-embed\ |
Documentation
- User Handbook โ configuration reference, auth methods, migrations, FAQ
- Technical Handbook โ architecture, data flow, module graph, internals
- API reference on docs.rs
License
pg-embed is dual-licensed under MIT / Apache 2.0.
Credits
Precompiled binaries provided by zonkyio/embedded-postgres-binaries, hosted on Maven Central.