The open-source, functional database with Complex Event Processing in JavaScript.
C# XSLT Shell PowerShell C++ JavaScript Other
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Event Store

The open-source, functional database with Complex Event Processing in JavaScript.

This is the repository for the open source version of Event Store, which includes the clustering implementation for high availability.


Information on commercial support and options such as LDAP authentication can be found on the Event Store website at

CI Status

OS Status
Ubuntu 14.04 Build status
Windows 8.1 Build status


Documentation for Event Store can be found here


We have a fairly active google groups list. If you prefer slack, there is also an #eventstore channel here.

Release Packages

The latest release packages are hosted in the downloads section on the Event Store Website

We also host native packages for Linux on Package Cloud and Windows packages can be installed via Chocolatey (4.0.0 onwards only).

Building Event Store

Event Store is written in a mixture of C#, C++ and JavaScript. It can run either on Mono or .NET, however because it contains platform specific code (including hosting the V8 JavaScript engine), it must be built for the platform on which you intend to run it.



  • Mono 4.6.2


./ {version} {configuration} {platform_override}


  • Version: Assembly Version (Required to conform to major[.minor[.build[.revision]]])
  • Configuration: Build Configuration (debug or release)
  • Platform Override: When Event Store is building, the build script will attempt to locate the projections library ( that was built for the particular platform the build script is running on. The repository has a couple of prebuilt projections libraries for various platforms such as Ubuntu-14.04, Ubuntu-16.04 and CentOS 7.2.1511. In some cases you won't need to recompile the library for the particular platform but a compatible one might be available. In these cases, the platform override can be used to let the build script know that you are happy to use one of the prebuilt ones by specifying the one it should use.

The list of precompiled projections libraries can be found in src/libs/x64



  • .NET Framework 4.0+
  • Windows platform SDK with compilers (v7.1) or Visual C++ installed (Only required for a full build)


.\build.cmd {what-to-build} -Configuration {configuration} -Version {version}


  • What to build: Specify what to build (quick, full, js1)
  • Version: Assembly Version (Required to conform to major[.minor[.build[.revision]]])
  • Configuration: Build Configuration (debug or release)

Building the Projections Library



  • git

The scripts attempts to do it's best to have no dependencies from the user's point of view. If you do encounter any issues, please don't hesitate to raise an issue.


./scripts/build-js1/ {llvm-download-location} {gyp_flags}


  • LLVM Download location: The script will by default attempt to download the llvm toolchain for the OS it's running on. There can be a case where the script fails to get the correct version of the LLVM toolchain and in those cases, the user can provide the script with the download location for the toolchain.
  • GYP Flags: In some cases, the user might want to provide their own GYP_FLAGS. One such case is where the user runs into the below mentioned issue. In that case this parameter can be used to pass the appropriate GYP flags.


If the scripts fails with "Failed to download LLVM. You can supply the URL for the LLVM compiler for your OS as the first argument to this script.", it is necessary to provide the script with the location where the LLVM compiler can be downloaded.

If the script fails with an gold linker error such as " error: /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../x86_64-linux-gnu/crti.o: unsupported reloc 42 against global symbol gmon_start" you can let it use the system linker by specifying -Dlinux_use_bundled_gold=0 as the second parameter to the script.


scripts/build-js1/ "" "-Dlinux_use_bundled_gold=0"



  • git
  • Windows platform SDK with compilers (v7.1) or Visual C++ installed


.\build.cmd js1


Development is done on the master branch. We attempt to do our best to ensure that the history remains clean and to do so, we generally ask contributors to squash their commits into a set or single logical commit.

If you want to switch to a particular release, you can check out the tag for this particular version. For example:
git checkout oss-v4.1.0

Known Issues

Regressions with Mono 3.12.1 and some versions of the Linux Kernel

Note: Event Store 4.0.0 onwards is using a more recent version of Mono (4.6.2 at the time of writing). The information below only applies to Event Store <= 3.9.3.

There is a known issue with some versions of the Linux Kernel and Mono 3.12.1 which has been raised as an issue The issue manifests itself as a NullReferenceException and the stack trace generally looks like the following.

System.NullReferenceException: Object reference not set to an instance of an object
at EventStore.Core.Services.TimerService.ThreadBasedScheduler.DoTiming () [0x00000] in :0
at System.Threading.Thread.StartInternal () [0x00000] in :0

Some known good versions of the Kernel are

  • 3.13.0-54
  • 3.13.0-63
  • 3.16.0-39
  • 3.19.0-20
  • 3.19.0-64
  • 3.19.0-66
  • >= 4.4.27

Note: Please feel free to contribute to this list if you are working on a known good version of the kernel that is not listed here.