# Install ephemeralpg with Homebrew, Nix

Run tests on an isolated, temporary Postgres database. Version 3.4 via Homebrew; verified from local package data. Also installable with nix: nix profile install nixpkgs#ephemeralpg.

## Install

```sh
sudo av install brew:ephemeralpg
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install ephemeralpg
```

  Evidence: local Homebrew formula metadata

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#ephemeralpg
```

  Evidence: nixpkgs package indexes: pkgs/by-name/ep/ephemeralpg/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:ephemeralpg
- **Package manager:** Homebrew
- **Version:** 3.4
- **Source summary:** Run tests on an isolated, temporary Postgres database
- **Homepage:** <https://eradman.com/ephemeralpg/>
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- getsocket (alias)
- pg_tmp (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 3.4
## Project history and usage

Ephemeral PostgreSQL is a compact test utility centered on `pg_tmp`, a shell script that starts isolated temporary PostgreSQL databases. It gives test suites a real PostgreSQL server without making developers keep a long-lived database around or substitute SQLite for PostgreSQL behavior.

### Project history

The NEWS file records version 1.0 on January 7, 2015 as an initial Bitbucket release and describes it as a cross-platform implementation in fewer than one hundred lines of code. Later releases added TCP binding through the bundled `getsocket` utility, better cleanup behavior, PostgreSQL-version compatibility fixes, extra server options, and a test framework.

The project moved hosting from Bitbucket to GitHub in version 2.8 on September 25, 2019. Its public project page was still maintained in 2025 and documents `pg_tmp` as a compact shell script for unit and integration testing with PostgreSQL in any language.

### Adoption history

ephemeralpg is not a mass-market database package, but it has a clear testing niche: teams that need PostgreSQL-specific behavior in tests without shared state. Homebrew and Nix packaging make the tool easy to install in developer workstations and CI images.

### How it is used

A common workflow is `uri=$(pg_tmp)` followed by running `psql` or an application test suite against that connection URI. The tool can start a database on a random TCP port, keep it alive for a specified window, pass server options such as disabling autovacuum, and garbage-collect temporary databases automatically.

The project page explains several performance techniques: avoiding fully sequential init/start/stop work, disabling runtime fsync, spinning for the first connection, pre-initializing a background database under `/tmp`, and shutting down asynchronously.

### Why package nerds care

ephemeralpg is interesting because it solves a common developer-tools problem with shell and standard PostgreSQL tools instead of a service daemon. It is small, inspectable, and very package-manager-friendly: install it, call `pg_tmp`, and get a disposable database URI.

### Timeline

- 2015-01-07: Version 1.0 initially released on Bitbucket.
- 2015-12-12: Version 1.7 added a more extensive `make test` framework.
- 2016-03-29: Version 2.0 allowed temporary directories with initdb/start/stop arguments.
- 2019-09-25: Version 2.8 moved hosting from Bitbucket to GitHub.
- 2025-02-06: Version 3.4 adjusted startup behavior and Mac OS locale handling.

### Related projects

- ephemeralpg depends on the standard PostgreSQL toolchain, especially `initdb`, `pg_ctl`, `postgres`, and `psql`, and includes helper utilities such as `getsocket` plus optional contrib scripts.

### Sources

- <https://eradman.com/ephemeralpg/>
- <https://github.com/eradman/ephemeralpg>
- <https://raw.githubusercontent.com/eradman/ephemeralpg/master/NEWS>


## Security Notes

broad file, network, media, or database tool signal.

- **Geiger risk:** blue / medium
- broad file, network, media, or database tool signal

## Other Package-Manager Records

- Nix - ephemeralpg: normalized package name match | nixpkgs package indexes: pkgs/by-name/ep/ephemeralpg/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1


## Combined YAML source

View the package source record on GitHub. [combined/ephemeralpg.yml](https://github.com/mxcl/pkgdb/blob/main/combined/ephemeralpg.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
