couchdb is a free, open source databases project written in Erlang and released under Apache-2.0. It has 6,953 GitHub stars, 1,077 forks and 376 open issues, and was last pushed 6 hours ago. On this registry it ranks #117 of 203 tracked projects in Databases, with 5 head-to-head comparisons available.

What is couchdb?

Apache CouchDB is an Apache-licensed, Erlang-built document database with an HTTP/JSON API and multi-primary syncing replication, aimed at developers and operators who need data to stay consistent across several nodes, devices, or sites rather than behind one primary server.

What it is

Apache CouchDB is an open-source database written in Erlang and released under the Apache-2.0 licence, distributed by the Apache Software Foundation and listed in this registry under Infrastructure & Operations / Databases. Its defining property is multi-primary syncing: replicas accept writes independently instead of routing every write through one elected primary. All interaction runs over an HTTP/JSON API, so clients speak ordinary HTTP rather than a proprietary binary protocol, and the project's topic list places it alongside big-data, cloud, content, HTTP, network-client, and network-server concerns.

The concrete problem it addresses is replication topology. Conventional primary-replica stores force one writable primary, which makes multi-site, offline-tolerant, and hub-and-spoke layouts hard to design; CouchDB instead treats every replica as writable and syncs changes between them, which is what the "seamless multi-primary syncing" tagline describes. It replaces the hand-rolled replication layer a team would otherwise build on top of a single-primary store, and it replaces a proprietary database wire protocol with plain HTTP and JSON. The project ships a web administration interface, Fauxton, and a documented installation path for Unix-like systems and Windows.

Key capabilities

  • Multi-primary syncing replication, so replicas remain writable without a single primary.
  • HTTP/JSON API served by default on port 5984.
  • Fauxton administration interface at http://127.0.0.1:5984/_utils/.
  • Built-in installation check at http://127.0.0.1:5984/_utils/#verifyinstall.
  • Erlang implementation with an Apache-2.0 licence.
  • Developer workflow via ./configure && make, then ./dev/run, which spins up three nodes; ./dev/run --with-admin-party-please and make check are also supported.
  • Optional haproxy caching layer in front of the cluster via ./dev/run --with-haproxy --haproxy=/path/to/haproxy.
  • A VS Code devcontainer that clones the source into a container volume and runs ./configure && make on first creation.

Who uses it and how

  • Teams that need writable replicas across more than one node or site, using replication instead of a single writable primary.
  • Developers starting a local cluster with ./dev/run, optionally with --admin=admin:admin or the admin-party shortcut, to work against three nodes on port 5984.
  • Operators placing haproxy as a caching layer in front of a CouchDB cluster.
  • Contributors working through CONTRIBUTING.md, the mailing lists, and the #couchdb IRC channel on Libera.
  • Organisations supported by the project's backers, including IBM Cloudant, Neighbourhoodie, DigitalOcean, Netcup, and MacStadium, which indicates cloud-scale deployments as well as local ones.

Getting started

Follow INSTALL.Unix for Unix-like systems including macOS and Ubuntu, or INSTALL.Windows for Microsoft Windows. Developers already running VS Code and Docker can use the devcontainer link, which clones the source and runs ./configure && make automatically, after which ./dev/run starts a local three-node cluster.

How it compares

The provided facts list no paid products that this project replaces, and no comparable tools are named in the topic list or README. CouchDB therefore stands alone in this registry on the evidence available.

When to use it — and when not to

Choose CouchDB when multi-primary replication and an HTTP/JSON interface matter more than a minimal operational surface, since a self-hoster must build it with ./configure && make and operate a multi-node cluster, optionally behind haproxy. Teams that want a single-process embedded database with no HTTP server and no replication topology should look elsewhere. One caveat is documentation shape: the README is largely an installation and development guide that points outward to docs.couchdb.org for the changelog and troubleshooting, and the repository carried 376 open issues at the time of listing.

project readme (upstream, from github) — read inline

Apache CouchDB README

+---------+ | |1| |2| | +---------+

.. |1| image:: https://ci-couchdb.apache.org/buildStatus/icon?job=FullPlatformMatrix%2Fmain&subject=main :target: https://ci-couchdb.apache.org/job/FullPlatformMatrix/job/main .. |2| image:: https://readthedocs.org/projects/couchdb/badge/?version=latest :target: https://docs.couchdb.org/en/latest/?badge=latest

Installation

For a high-level guide to Unix-like systems, inc. Mac OS X and Ubuntu, see:

INSTALL.Unix

For a high-level guide to Microsoft Windows, see:

INSTALL.Windows

Follow the proper instructions to get CouchDB installed on your system.

If you're having problems, skip to the next section.

Documentation

We have documentation:

https://docs.couchdb.org/

It includes a changelog:

https://docs.couchdb.org/en/latest/whatsnew/

For troubleshooting or cryptic error messages, see:

https://docs.couchdb.org/en/latest/install/troubleshooting.html

For general help, see:

 https://couchdb.apache.org/#mailing-list

We also have an IRC channel:

https://web.libera.chat/#couchdb

The mailing lists provide a wealth of support and knowledge for you to tap into. Feel free to drop by with your questions or discussion. See the official CouchDB website for more information about our community resources.

Verifying your Installation

Run a basic test suite for CouchDB by browsing here:

http://127.0.0.1:5984/_utils/#verifyinstall

Getting started with developing

Quickstart:

.. image:: https://img.shields.io/static/v1?label=Remote%20-%20Containers&message=Open&color=blue&logo=visualstudiocode :target: https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/apache/couchdb

If you already have VS Code and Docker installed, you can click the badge above or here _ to get started. Clicking these links will cause VS Code to automatically install the Remote - Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.

This devcontainer will automatically run ./configure && make the first time it is created. While this may take some extra time to spin up, this tradeoff means you will be able to run things like ./dev/run, ./dev/run --admin=admin:admin, ./dev/run --with-admin-party-please, and make check straight away. Subsequent startups should be quick.

Manual Dev Setup:

For more detail, read the README-DEV.rst file in this directory.

Basically you just have to install the needed dependencies which are documented in the install docs and then run ./configure && make.

You don't need to run make install after compiling, just use ./dev/run to spin up three nodes. You can add haproxy as a caching layer in front of this cluster by running ./dev/run --with-haproxy --haproxy=/path/to/haproxy . You will now have a local cluster listening on port 5984.

For Fauxton developers fixing the admin-party does not work via the button in Fauxton. To fix the admin party you have to run ./dev/run with the admin flag, e.g. ./dev/run --admin=username:password. If you want to have an admin-party, just omit the flag.

Contributing to CouchDB

You can learn more about our contributing process here:

https://github.com/apache/couchdb/blob/main/CONTRIBUTING.md

Acknowledgments

This project is proudly supported by:

|3|

IBM Cloudant _

|5|

|6|

|7|

.. |3| image:: https://couchdb.apache.org/image/macstadium-logo.png :width: 150 :target: https://www.macstadium.com .. |5| image:: https://couchdb.apache.org/image/neighbourhoodie-logo-with-n.svg :width: 150 :target: https://neighbourhood.ie/couchdb-support .. |6| image:: https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.png :width: 150 :target: https://www.digitalocean.com .. |7| image:: https://couchdb.apache.org/image/netcup_logo_RGB_color.svg :width: 150 :target: https://www.netcup.com

Cryptographic Software Notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

CouchDB includes a HTTP client (ibrowse) with SSL functionality.

Frequently asked questions

Is couchdb free to use?

couchdb is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does couchdb do?

Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability

What is couchdb written in?

couchdb is primarily written in Erlang. Its source is publicly available at https://github.com/apache/couchdb, and it has 6,953 GitHub stars.