This section describes how to build EdgeDB locally, how to use its internal tools, and how to contribute to it.
Code-changing pull requests without adding new tests might take longer time to be reviewed and merged.
The following instructions should be used to create a “dev” build on Linux or macOS. Windows is not currently supported.
GNU make version 3.80 or newer;
C compiler (GCC or clang);
Rust compiler and Cargo 1.65 or later;
Python 3.10 dev package;
Bison 1.875 or later;
Flex 2.5.31 or later;
Perl 5.8.3 or later;
Zlib (zlibg1-dev on Ubuntu);
Readline dev package;
Libuuid dev package;
Node.js 14 or later;
On Ubuntu 22.10, these can be installed by running:
apt install make gcc rust-all autotools-dev python3.11-dev \ python3.11-venv bison flex libreadline-dev perl zlib1g-dev \ uuid-dev nodejs npm
npm i -g corepack
corepack enable && corepack prepare yarn@stable --activate
The easiest way to set up a development environment is to create a Python “venv” with all dependencies and commands installed into it.
Clone the edgedb repository using
to clone all submodules:
git clone --recursive https://github.com/edgedb/edgedb.git
Create a Python 3.10 virtual environment and activate it:
python3.10 -m venv edgedb-dev
Build edgedb (the build will take a while):
pip install -v -e ".[test]"
In addition to compiling EdgeDB and all dependencies, this will also
edgedb command line tools into the current
Python virtual environment.
It will also install libraries used during development.
The new virtual environment is now ready for development and can be activated at any time.
To run all EdgeDB tests simply use the
$ edb test command without
The command also supports running a few selected tests. To run all tests in a test case file:
edb test tests/test_edgeql_calls.py
# or run two files:
edb test tests/test_edgeql_calls.py tests/test_edgeql_for.py
To pattern-match a test by its name:
edb test -k test_edgeql_calls_01
# or run all tests that contain "test_edgeql_calls":
edb test -k test_edgeql_calls
$ edb test --help for more options.
$ edb server command to start the development server.
You can then use another terminal to open a REPL to the server using the
$ edgedb command, or connect to it using one of the language bindings.
$ edb inittestdb command to create and populate databases
that are used by unit tests.