Skip to main content

pgbox

Zero-config embedded PostgreSQL with pgvector for Python.

from pgbox import get_server

server = get_server("~/.myapp/data")
uri = server.get_uri()  # postgresql:///postgres?host=...&port=5501

server.enable_extension("vector")
server.execute("CREATE TABLE items (id serial, embedding vector(384))")

No Docker. No install steps. No configuration. Just pip install pgbox and you have a running PostgreSQL 17.4 with pgvector 0.8.0.

Install

pip install pgbox

Pre-compiled PostgreSQL binaries are included in the wheel — nothing to download at runtime.

Platforms: macOS (Apple Silicon + Intel), Linux (x86_64)

Python: 3.11+

Usage

Basic

from pgbox import get_server

# Start PostgreSQL (or connect to existing instance at this path)
server = get_server("/path/to/pgdata")

# Get connection URI for any PostgreSQL client
uri = server.get_uri()

# Use with asyncpg
import asyncpg
conn = await asyncpg.connect(uri)

# Use with psycopg2
import psycopg2
conn = psycopg2.connect(uri)

# Use with SQLAlchemy
from sqlalchemy import create_engine
engine = create_engine(uri)

Enable extensions

server.enable_extension("vector")    # pgvector for embeddings
server.enable_extension("pg_trgm")   # trigram similarity

Execute SQL

server.execute("CREATE TABLE users (id serial PRIMARY KEY, name text)")
server.execute("INSERT INTO users (name) VALUES ('Alice')")
result = server.execute("SELECT * FROM users")

Create databases

server.create_database("myapp")
uri = server.get_uri(database="myapp")

Context manager (auto-cleanup)

# Server stops when the block exits
with get_server("/tmp/test_data") as server:
    uri = server.get_uri()
    # ... use it ...

# Server stops + data directory deleted
with get_server("/tmp/test_data", cleanup_mode="delete") as server:
    uri = server.get_uri()
    # ... use it, everything cleaned up on exit ...

Health check

server.is_healthy()  # True if accepting connections
server.pid           # Postmaster process ID
server.port          # TCP port

Cleanup modes

Mode Behavior
"stop" (default) Stop PostgreSQL on exit
"delete" Stop + delete the data directory
"nothing" Leave running (for daemon/service use)

How it works

pgbox bundles pre-compiled PostgreSQL 17.4 and pgvector 0.8.0 binaries directly in the Python wheel. When you call get_server():

  1. Initialize — runs initdb if the data directory doesn't exist
  2. Start — runs pg_ctl start on an available port
  3. Wait — polls pg_isready until the server accepts connections
  4. Return — gives you a PostgresServer with connection URI

The server is a singleton per data directory — calling get_server() twice with the same path returns the same instance. Cross-process safety is handled via file locks.

Versions

Component Version
PostgreSQL 17.4
pgvector 0.8.0

License

Apache-2.0

Metadata

Release files for pgbox 0.1.3

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 pgbox 0.1.3
File Interpreter ABI Platform Actions
pgbox-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for pgbox-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
pgbox-0.1.3-cp312-cp312-macosx_15_0_universal2.whl CPython 3.12 CPython 3.12 macOS 15.0+ universal2 (ARM64, x86-64) Details for pgbox-0.1.3-cp312-cp312-macosx_15_0_universal2.whl
pgbox-0.1.3-cp312-cp312-macosx_14_0_universal2.whl CPython 3.12 CPython 3.12 macOS 14.0+ universal2 (ARM64, x86-64) Details for pgbox-0.1.3-cp312-cp312-macosx_14_0_universal2.whl

Total release size: 32.9 MB

Release files / pgbox-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pgbox-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
Size 12.2 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
04c98df4b96c146bdfea9d9bfcef8ae5b4f0fcf627b45a5419421005ca69bfee
BLAKE2b-256 checksum
How to use checksums
1ebed228534c9e800ddc2a3d74d666d3b3cf826b89631ffed10577a73a16ea20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 29, 2026.

Transparency log

Release files / pgbox-0.1.3-cp312-cp312-macosx_15_0_universal2.whl

Download URL pgbox-0.1.3-cp312-cp312-macosx_15_0_universal2.whl
Size 10.3 MB
Tags CPython 3.12 macOS 15.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
cb9c0b61be8ee11452c42270ed8e94659b901f87b628bd2bb9c5406b507f795c
BLAKE2b-256 checksum
How to use checksums
2e1037c840763cbfb54a67c333316e331c535f80297ac20bee3469247605e228
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 29, 2026.

Transparency log

Release files / pgbox-0.1.3-cp312-cp312-macosx_14_0_universal2.whl

Download URL pgbox-0.1.3-cp312-cp312-macosx_14_0_universal2.whl
Size 10.3 MB
Tags CPython 3.12 macOS 14.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
3830c85fc8b53bc5e82cf456ad62d4520a17efc6901e6239bd27baa2a7846c1f
BLAKE2b-256 checksum
How to use checksums
d93001ff48bf6b2716bf07da017bb4fa6c6dd4594526c8e92c9a0a05e85a47f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 29, 2026.

Transparency log

Security for pgbox 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 3 files in this release have been uploaded with provenance metadata.

Select from 3 files

Attestation for pgbox-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.3 This release

3 release files Full provenance

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