
Neon
neon.tech- Category
- Developer Tools
- Rank
- No. 275Tools index
- Listed in
- #4 Add vector search · #3 Choose data infrastructure
- Pricing
- Freemium
- Type
- TOOL
- Use case
- Deployment & Operations
- Interfaces
- Web · API
- Builder
- @neondatabase
- GitHub
- 23.1k stars
- Latest release
- release-proxy-8853
- Date
About
Serverless Postgres with database branching, autoscaling, and instant provisioning
What it does
Neon is an open source Postgres system that pulls storage out of the database engine and runs it as a separate distributed service. A stateless compute node runs ordinary PostgreSQL, but instead of writing to local disk it talks to a storage tier: one service holds the actual table data and answers page-read requests, while a second, replicated service captures the write log durably until it is safely uploaded to cloud storage. A coordinating service manages many such tenants across a cluster and a lightweight proxy in front of it all handles the client connection and hands off to compute.
Why it's ranked here
The split holds up under inspection: pageserver, safekeeper, storage broker, storage controller and proxy each live as their own crate with a narrow job, and the license is Apache 2.0, no strings attached on the storage engine itself. The documented quick start creates a live database, branches it into a second writable copy in one command, and shows writes on each copy staying isolated, which is the core claim actually demonstrated rather than asserted. That is a real architectural bet, not a marketing wrapper around ordinary PostgreSQL.
What's good
The architecture is genuinely decomposed rather than layered on top of stock PostgreSQL: a dedicated service durably captures the write log with replication before storage ever sees it, a separate service answers page reads, and a controller reconciles tenant placement across many nodes. The stack is fully open, not a thin client wrapping a hosted API, so the storage engine, the connection proxy and the cluster controller are all inspectable and buildable from source. Local development spins up a real multi node cluster on a workstation, letting you create and branch a running database without any cloud dependency.
Tradeoffs
Running it yourself is a heavier commitment than installing a database: the workspace spans dozens of Rust crates plus a patched PostgreSQL build in C, needs a pinned Rust toolchain, protobuf tooling, and platform specific system libraries before anything compiles, and its integration suite is a separate Python project with its own dependency manager. Some internal documentation is thin; the storage and compute separation design note is a bare outline of headings with no content filled in yet, so understanding the durability model still means reading the source directly rather than the docs.
How to use it well
This fits teams who want an actual open, self-hostable Postgres storage engine, not just an API key: running the full local cluster is worthwhile if you need to test branching or WAL behavior, or you are evaluating whether to operate the storage tier yourself. It is a poor fit for anyone wanting a quick embedded or single-file database, or a contributor unwilling to learn Postgres internals, Rust, and a multi-service runtime; expect to spend real setup time on build dependencies before writing a line of application code.
Technical notes+
The Cargo.toml workspace lists pageserver, safekeeper, storage_broker, storage_controller, proxy and compute_tools as separate member crates under an Apache-2.0 license. pageserver/src/lib.rs defines STORAGE_FORMAT_VERSION, embedded in the header of every on-disk layer file, and coordinates a multi-stage shutdown_pageserver sequence across WAL redo, tenant, and metrics tasks. safekeeper/src/lib.rs's SafeKeeperConf struct exposes tunables for WAL backup, partial backup timeout, eviction residency, and disk usage limits, with dedicated tokio runtimes (WAL_SERVICE_RUNTIME, HTTP_RUNTIME, BROKER_RUNTIME) declared as statics. proxy/src/proxy/mod.rs implements handle_client, the Postgres wire-protocol handshake that authenticates against a control plane backend and relays server parameters and cancellation keys to the client. storage_broker/src/lib.rs wraps a tonic-generated BrokerServiceClient over gRPC for safekeeper-to-pageserver signaling, and storage_controller/src/lib.rs organizes tenant_shard, scheduler, reconciler, and persistence modules behind a monotonic Sequence counter. libs/pageserver_api/src/lib.rs exposes the shard, keyspace, and models types shared by the controller and pageserver. docs/pageserver.md and docs/separation-compute-storage.md describe the GetPage@LSN read path, with the latter still an unfilled outline of section headings. CONTRIBUTING.md documents a required pre-commit check and an approved-for-ci-run label workflow that mirrors external pull requests into an internal branch to grant them CI secrets, and docs/sourcetree.md maps the overall crate layout, including C-based Postgres extension code and a separate Python integration test suite.
Observed
- License
- Apache-2.0 (declared in the Cargo.toml workspace.package section).
- Primary language
- Rust, organized as a multi-crate Cargo workspace (pageserver, safekeeper, storage_broker, storage_controller, proxy, compute_tools, and shared libs crates).
- Additional components
- Includes a C-language PostgreSQL extension layer and a separate Python integration test suite, per the documented source tree.
- Interfaces
- A CLI (cargo neon / neon_local) for local cluster management, HTTP API modules in both the pageserver and storage_controller crates, and a gRPC service (storage_broker, built on tonic) for internal node coordination.
- Proxy behavior
- The proxy component speaks the native PostgreSQL wire protocol directly, acting as a connection router in front of compute nodes rather than a REST wrapper.
- Local development
- Local development is orchestrated by a CLI (cargo neon) that starts pageserver, safekeeper, and broker as local OS processes rather than containers, per the documented quick start.
Read from README.md, Cargo.toml, pageserver/src/lib.rs, pageserver/src/http/mod.rs, safekeeper/src/lib.rs, proxy/src/lib.rs, proxy/src/proxy/mod.rs, storage_controller/src/lib.rs, storage_broker/src/lib.rs, compute_tools/src/lib.rs, libs/pageserver_api/src/lib.rs, docs/pageserver.md, docs/separation-compute-storage.md, CONTRIBUTING.md, docs/sourcetree.md.
What it can do
Create database branches from existing database
Existing Postgres database → New database branch with copied data and schema
Automatically scale database resources based on demand
Database workload and traffic patterns → Adjusted compute and storage capacity
Provision new Postgres database instance
Database configuration parameters → Ready-to-use Postgres database instance
Execute SQL queries on serverless Postgres
SQL commands and queries → Query results and data modifications
Merge database branch changes back to main
Database branch with modifications → Updated main database with merged changes
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.