mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dataevaluationupdated 30 Aug 2026

neon review

Neon is an English-language, open-source Postgres platform that separates stateless compute nodes from a distributed storage layer. That split supports database branches and compute that can scale independently, while applications still connect with ordinary Postgres clients and drivers.

+24 / 2dstars / 7d
Verdict

Our Python-side build passed in 8 seconds, but tests failed 10 seconds later because pytest could not import allure. Neon is a strong hosted choice for teams that want Postgres compatibility, branching, and independent compute without operating the storage system themselves. Treat the repository as database infrastructure for specialists: our small Python result does not make the full Rust and patched-Postgres stack easy to build or self-host.

We ran it

Lab card: what happened when we ran neonScreenshot of neon (neon.tech)
Install✓ · 27s35 packages · 37 MB
Build✓ · 8s
Tests✗ · 10sran, no count parsed
Known vulns0(pip-audit)
Repo1902 files~409,512 lines of source · 25.7 MB · 43 CI workflows · Dockerfile

Answers from our run

Does neon build from source?

Dependencies installed in 27 seconds (35 packages), and the build succeeded in 8 seconds. We cloned commit 8f60b04 into a clean Debian container with 3 CPUs and no project-specific setup.

Do neon's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does neon have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use neon?

Developers who only need a local single-node database: the README requires Rust, patched Postgres, protobuf, C build tools, Python tooling, and many system libraries.

What are the alternatives to neon?

Supabase, Postgres Operator, Zalando Postgres Operator. Our Python-side build passed in 8 seconds, but tests failed 10 seconds later because pytest could not import allure.

Setup1/5Python setup was quick, but full Neon needs Rust and patched Postgres
Docs4/5Clear architecture and local steps, but production self-hosting is not turnkey
Community5/522,989 stars and active August 2026 issue and PR discussion
Maturity4/5Serious database architecture, with a failed test collection in our run

Discussed on

  1. hnNeon: A serverless open-source alternative to AWS Aurora Postgres101 points
  2. hnNeon: The serverless open source alternative to AWS Aurora Postgres49 points
  3. hnAn open source alternative to AWS Aurora8 points
  4. hnNeon (serverless Postgres) transitions away from open source6 points

Who it’s for

Database engineers studying how Postgres compute can be separated from durable WAL and page storage.
Application teams that want hosted Postgres with branching and scale-to-zero behavior.
Contributors comfortable with Rust, PostgreSQL internals, Python integration tests, and a large system-package toolchain.
Platform teams prepared to test pageserver, safekeeper, compute, proxy, and remote-storage behavior together.

Who it’s NOT for

Developers who only need a local single-node database: the README requires Rust, patched Postgres, protobuf, C build tools, Python tooling, and many system libraries.
Operators looking for a turnkey production self-hosting guide: the documented local environment is described as suitable for small experiments and code changes.
Contributors expecting the Python environment alone to unlock tests: our run stopped during plugin import because allure was missing.
External forks that depend on every compatibility fixture being public: issue 12938 reports anonymous requests for historic storage snapshots returning HTTP 403.
Hosted users who cannot tolerate an accidental region choice: issue 12927 reports that project region is permanent and can default without an explicit confirmation.

Setup reality

Our Python-selected install succeeded in 27 seconds, adding 35 packages and using 37 MB. That build passed in 8 seconds, but tests failed after 10 seconds: pytest could not import fixtures.parametrize because the environment had no allure module. Pip-audit found 0 known vulnerabilities in those installed Python packages.

The full project is primarily Rust, and local database work also needs patched Postgres, protoc 3.15 or newer, C build tools, OpenSSL, PostgreSQL client libraries, Python 3.11+, Poetry 1.8+, and cargo-nextest for Rust tests.

Our checkout had 1,902 files and about 409,512 source lines. It included 43 CI workflows and a Dockerfile but no top-level tests directory; integration tests live under test_runner. The 8-second lab build should not be read as a full make of Neon and patched Postgres.

Neon replaces Postgres storage while keeping its client interface

Neon presents ordinary Postgres connections to applications, but its compute nodes do not own the durable database files. A pageserver supplies database pages, while safekeepers retain write-ahead log data until the pageserver has processed and uploaded it. Compute can remain stateless around that storage layer. The architecture is aimed at database branching, independent compute scaling, and hosted capacity that can stop when idle without asking application developers to adopt a new query language.

The repository is infrastructure, not the entire commercial control plane in a convenient local package. Its README calls the local installation suitable for small experiments and testing changes. Our snapshot contained 1,902 files and about 409,512 source lines, with Rust as GitHub's primary language. Compiling the source is for people investigating Postgres internals, storage behavior, or contributions to the data plane.

The 8-second build covered Python tooling, not all of Neon

Our lab classified commit 8f60b04 as a Python ecosystem project. Installation finished in 27 seconds, pulled 35 packages, and used 37 MB. The selected build then succeeded in 8 seconds. Those are useful measurements for the Python environment the harness chose, but GitHub identifies the repository as Rust and the README's full build compiles Neon plus a patched PostgreSQL tree with make. We did not measure that complete compilation.

This boundary prevents a misleading claim that a major database platform builds in 8 seconds. The full Linux dependency list includes a C compiler toolchain, Clang, CMake, OpenSSL, PostgreSQL client headers, protobuf libraries, and protoc 3.15 or newer. Rustup picks the pinned Rust 1.88.0 toolchain from the repository file. Python 3.11 or newer and Poetry 1.8 or newer are needed for integration tests and scripts, while Rust tests use cargo-nextest rather than relying on plain cargo test.

What happened when we ran it

Our pytest step failed with exit code 1 after 10 seconds. Collection reached test_runner/fixtures/parametrize.py, which imports allure, and stopped because the installed environment had no module by that name. The log does not say why it was absent. The project manifest declares allure-pytest, so the mismatch is visible, but assigning it to a packaging, installer, or harness error would go beyond the evidence we have.

Pip-audit reported 0 known vulnerabilities among the 35 installed Python packages. That result does not cover the Rust crates, patched PostgreSQL source, system libraries, containers, or hosted Neon services. Our scan found 43 CI workflow files and a Dockerfile, but no top-level tests directory; the Python integration suite lives in test_runner. The failed plugin import means we collected no Neon integration test result from this sandbox.

Local startup is a cluster exercise on one workstation

A local run first initializes a repository, then starts a broker, pageserver, and safekeeper before creating a tenant and a compute endpoint. The README example connects a PostgreSQL client on port 55432 and creates another timeline for a branch. That sequence is valuable because it exposes the actual pieces rather than hiding them behind one desktop process. It also demands comfort with logs, ports, process state, and database cleanup.

Public test data can be another dependency

Issue 12938 reports that historic storage-format tests fetch compatibility snapshots from a public S3 bucket that now returns HTTP 403 to anonymous clients. The reporter says the response body then reaches the decompressor and appears as a corrupt archive rather than a clear access error. That is separate from our missing-allure failure, but both findings show that reproducing the integration suite depends on more than installing the packages listed in one manifest.

External contributors also pass through a guarded CI process. The contribution guide says maintainers inspect outside changes before applying a label that creates an internal branch able to access repository secrets. After every change, approval must happen again. With 43 workflows in our scan, this caution makes sense for database infrastructure. It also means a green local check is only one layer of the project's validation model.

Branching is useful because storage and compute are separate

The local guide demonstrates a branch as a new timeline that begins with the main timeline's data, then accepts changes without modifying the original. Each branch can receive its own Postgres compute endpoint. This is the source-level form of the feature application teams care about: testing a migration or preview environment against copied database history while keeping the parent isolated. The README does not attach a speed or storage benchmark to that example, so neither do we.

Hosted users inherit a different class of decisions. Issue 12927 reports that a project's region is permanent and that the console or CLI can default to US East without an explicit confirmation. The user had to create a new project and migrate data to meet an EU residency need. One issue does not define every current UI path, but the consequence is concrete enough to verify region selection before creating a production project.

Current issue work matters more than the old release tag

GitHub recorded 22,989 stars, 1,080 forks, and 558 combined issues and pull requests when fetched. The main branch's last commit was May 25, 2026, while new pull requests and issue updates appeared through August 29. The latest GitHub release endpoint returned a proxy release from July 29, 2025. That tag alone is poor evidence of abandonment because current issue and pull request traffic continues, though the gap between branch push and discussion is worth noticing.

Open reports include detailed concurrency concerns in pageserver and safekeeper locking, plus a flaky SQL regression test. They are reports under discussion, not proof that every Neon deployment hits those failures. Their specificity is a reminder of the project's level: this is storage, WAL, compaction, remote I/O, and distributed process coordination. Hosted Neon shields most application teams from that work. Source adopters accept it, and our 27-second Python install plus 8-second build barely reaches the edge of the system they are taking on.

Alternatives

ProjectWhat it isPick it when
Supabase gh↗A Postgres application platform bundling database, auth, storage, APIs, and developer tools.pick this instead when an integrated backend product matters more than Neon's separated storage architecture.
Postgres OperatorA Kubernetes operator for creating and managing production PostgreSQL clusters.pick this instead when you want conventional high-availability Postgres under your own Kubernetes control.
Zalando Postgres OperatorAn operator that provisions and manages Postgres clusters on Kubernetes.pick this instead when your team already runs Kubernetes and prefers an established operator model.
YugabyteDBA distributed SQL database with a PostgreSQL-compatible query layer.pick this instead when multi-node distributed SQL is the goal and exact PostgreSQL storage behavior is negotiable.

What people are saying

  1. [github-trending] neondatabase/neon
  2. [theverge] I ruined my cats’ toilet time with a motion-activated neon litter box sign

Sources

  1. Neon repository and README
  2. Neon Python project manifest
  3. Issue 12938: inaccessible compatibility snapshots
  4. Issue 12927: permanent project region
  5. Issue 12874: pageserver read-path lock report
  6. Neon commit 8f60b04
  7. Neon proxy release 8853

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →