# pqi-native
[](https://hackage.haskell.org/package/pqi-native)
[](https://nikita-volkov.github.io/pqi-native/)
> **Status: Alpha.** This is a young, LLM-generated reimplementation of `libpq`'s
> wire protocol handling. It is verified against a conformance suite (see
> below), but it hasn't seen much production use yet. See
> [_Making libpq a choice_](https://nikita-volkov.github.io/pqi-making-libpq-a-choice/)
> for why this project exists and what tradeoffs that implies.
A pure-Haskell [`pqi`](https://github.com/nikita-volkov/pqi) adapter
that speaks the PostgreSQL frontend/backend wire protocol directly — no
dependency on the C `libpq` library.
`pqi-native` is an LLM-generated port of the PostgreSQL C client library, [`libpq`](https://www.postgresql.org/docs/current/libpq.html). The upstream [`libpq` source](https://github.com/postgres/postgres/tree/master/src/interfaces/libpq) is the direct reference for the implementation.
## Fidelity goal
The goal is **byte-identical output to `libpq`** for every protocol-derived
value — error message strings, notice text, result status, field metadata,
cell data, and all structured error fields. Fidelity is continuously enforced
by [`pqi-conformance`](https://github.com/nikita-volkov/pqi-conformance), which
runs every operation on both this adapter and a direct
[`postgresql-libpq`](https://hackage.haskell.org/package/postgresql-libpq)
reference connection against the same database and asserts exact equality.
## Status
**Alpha.** The full `Pqi.Connection` capability record is implemented and
verified against the `postgresql-libpq` reference via the conformance
differential suite, but the library hasn't yet accumulated real-world
production mileage. Read
[_Making libpq a choice_](https://nikita-volkov.github.io/pqi-making-libpq-a-choice/)
for the motivation and the tradeoffs of adopting it at this stage.
Authentication: **trust**, **MD5**, and **SCRAM-SHA-256** are implemented. SCRAM
is verified against a password-auth PostgreSQL 17 container (which defaults to
`scram-sha-256`).