mcpField
P
pglite

pglite

github.com/oakossData & databases20147 installsUpdated 10w ago
Repository

About pglite

The pglite skill covers PGlite, a WASM build of PostgreSQL 17.4 that runs in browsers, Node.js, and Bun. It is for developers who need an embedded SQL engine, with guidance on storage, queries, transactions, and reactive queries.

Key features

  1. 01Runs in browsers, Node.js, and Bun
  2. 02In-memory and persistent browser storage
  3. 03Parameterized queries and ACID transactions
  4. 04Extensions, COPY, and LISTEN/NOTIFY
  5. 05Reactive and incremental queries

Use cases

  1. 01Building offline-first web apps
  2. 02Running analytics queries in a browser
  3. 03Embedding PostgreSQL for tests or prototypes

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oakoss/agent-skills --skill pglite

After installing, type/pglitein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
electric-sync.md
extensions.md
live-queries.md
multi-tab-worker.md
queries-and-transactions.md
react-integration.md
setup.md

Details

From the project README

PGlite

Overview

PGlite is a lightweight WASM build of PostgreSQL 17.4 that runs directly in the browser, Node.js, and Bun with no external dependencies. It provides a full Postgres query engine with extensions, transactions, COPY support, and listen/notify in under 3MB gzipped.

When to use: Local-first apps needing a real SQL engine, browser-based analytics, offline-capable PWAs, embedded Postgres for testing, prototyping without a server.

When NOT to use: High-concurrency server workloads (use native Postgres), apps requiring full Postgres replication, Safari OPFS storage (not supported), write-heavy multi-tab scenarios without leader election.

Quick Reference

PatternAPIKey Points
Create instancePGlite.create(dataDir?, options?)Awaits ready internally
In-memory DBPGlite.create()Default, ephemeral storage
IndexedDB storagePGlite.create('idb://dbname')Persists in browser
OPFS storagePGlite.create('opfs-ahp://dbname')Worker only, no Safari
Parameterized querydb.query<T>(sql, params)Returns QueryResult<T>
Tagged templatedb.sql\SELECT ...``Auto-parameterized
Multi-statement execdb.exec(sqlString)No params, returns void
Transactiondb.transaction(async (tx) => {})Full ACID, use tx.query
Load extensionextensions: { vector } in createLoaded at construction
Live querydb.live.query(sql, params, cb)Re-runs on data change
Incremental querydb.live.incrementalQuery(sql, params, key, cb)Diffs large result sets
Live changesdb.live.changes(sql, params, key, cb)Raw insert/update/delete ops
React hookuseLiveQuery(sql, params)Returns { rows } reactively
Multi-tab workerPGliteWorker + leader electionSingle writer, multi reader
Electric syncsyncShapeToTable(db, shape, table)One-way read-only sync
Dump datadb.dumpDataDir('gzip')Returns File blob
Load dataPGlite.create({ loadDataDir: blob })Restore from dump
Listen/notifydb.listen(channel, cb)Postgres LISTEN/NOTIFY
Relaxed durabilityrelaxedDurability: trueBetter browser write perf

Common Mistakes

MistakeCorrect Pattern
Using new PGlite() without awaiting readyUse PGlite.create() which awaits internally
Using OPFS in main threadOPFS-AHP requires a Web Worker context
Using OPFS on SafariSafari lacks required OPFS APIs; use idb://
Querying outside transaction callbackPass tx from transaction callback, use tx.query()
Forgetting extension in create optionsExtensions must be declared at PGlite.create({ extensions })
Multiple tabs writing without leader electionUse PGliteWorker with leader election for multi-tab
Expecting Electric sync to be bidirectionalElectric sync is read-only, one-way from server
Using live.query() for large datasetsUse live.incrementalQuery() for large result sets
Not providing key to incremental queryIncremental and changes queries require a unique key column
Importing extensions without bundler supportExtensions are WASM; ensure bundler handles .wasm assets

Delegation

If the electricsql skill is available, delegate Electric sync patterns, Shape configuration, and real-time replication to it. Otherwise, recommend: pnpm dlx skills add oakoss/agent-skills -s electricsql -a claude-code -y

If the drizzle-orm skill is available, delegate Drizzle + PGlite driver setup and schema management to it. Otherwise, recommend: pnpm dlx skills add oakoss/agent-skills -s drizzle-orm -a claude-code -y

If the local-first skill is available, delegate local-first architecture decisions and sync engine selection to it. Otherwise, recommend: pnpm dlx skills add oakoss/agent-skills -s local-first -a claude-code -y

References

Comments

Markdown supported