arcadedb is a free, open source machine learning infrastructure project written in Java and released under Apache-2.0. It has 1,230 GitHub stars, 163 forks and 167 open issues, and was last pushed 15 hours ago. On this registry it ranks #68 of 89 tracked projects in Machine Learning Infrastructure, with 5 head-to-head comparisons available. It gained 59 stars over the last 30 tracked days.

What is arcadedb?

ArcadeDB is an open-source, Apache-2.0 multi-model DBMS written in Java for teams that want graph, document, key/value, search, time-series, vector-embedding and geospatial workloads served from one engine instead of a stack of separate databases.

What it is

ArcadeDB is a multi-model DBMS created by Luca Garulli, founder of OrientDB, after SAP acquired that project. It is a conceptual fork of OrientDB: the engine is new, while the SQL engine is reused in heavily modified form with some utility classes. It is written in LLJ (Low Level Java), still Java 21 or later, and uses low-level APIs to reduce garbage-collector pressure. The DBMS is fully transactional with ACID transactions, a native graph engine that links records instead of joining them, full-text indexing, geospatial querying and advanced security.

The problem is tool sprawl. Teams in the AI and machine-learning infrastructure category typically run a graph database for relationships, a document store for flexible records, a key/value cache, a time-series database for metrics and a vector store for embeddings. ArcadeDB replaces that collection with one DBMS that accepts OrientDB SQL, Open Cypher, Apache Tinkerpop Gremlin v3.7.x, GraphQL and MongoDB Query Language, covering graph, document, key/value, search-engine, time-series, vector-embedding and geospatial models. For existing users it replaces an OrientDB deployment.

Key capabilities

  • Five query languages in one engine: OrientDB SQL, Open Cypher, Apache Tinkerpop Gremlin v3.7.x, GraphQL and MongoDB Query Language.
  • Seven models: graph, document, key/value, search engine, time series, vector embedding and geospatial.
  • 70+ built-in graph algorithms for pathfinding, centrality, community detection, link prediction and graph embeddings.
  • TimeSeries columnar storage with Gorilla/Delta-of-Delta compression, InfluxDB Line Protocol and Prometheus remote_write/read ingestion, PromQL queries and Grafana integration.
  • Built-in MCP Server for AI assistant and LLM integration, plus AI Assistant in Studio (Beta).
  • Remote access over HTTP/JSON, Postgres Wire protocol, and Redis and MongoDB drivers; embedded from any JVM language or Python via arcadedb-embedded-python.
  • Parallel query execution, automatically maintained materialized views, extendible hash indexes alongside LSM-Tree indexes, and geospatial indexing with geo.* SQL functions.

Who uses it and how

  • JVM teams embed it directly in an application; the README lists embedded use from any language on top of the JVM.
  • Python teams embed it through arcadedb-embedded-python bindings instead of running a separate server.
  • Distributed and container deployments are expected: topics include distributed, docker, k8s and kubernetes, and it runs from a Raspberry Pi to multiple servers on the cloud.
  • AI and LLM projects connect through the built-in MCP Server and use vector embeddings; graph teams use Cypher, Gremlin or OrientDB SQL with the 70+ algorithms; observability teams ingest metrics via InfluxDB Line Protocol or Prometheus and query with PromQL and Grafana.

Getting started

Start embedded as a Java 21+ library on the JVM, embed from Python with arcadedb-embedded-python, or run it as a remote server reached over HTTP/JSON, Postgres Wire protocol, or the Redis and MongoDB drivers; docker, k8s and kubernetes topics indicate container deployment. Documentation is at docs.arcadedb.com and examples are in the arcadedb-usecases repository.

How it compares

Among the tools named in the facts, ArcadeDB occupies ground where OrientDB, Neo4j, MongoDB, Redis, InfluxDB and Prometheus would otherwise meet: it reuses OrientDB's modified SQL engine, accepts Neo4j's Cypher, speaks MongoDB Query Language and the Redis driver, and uses InfluxDB and Prometheus ingestion protocols. Compatibility depth is the trade-off, since the Redis and MongoDB drivers implement only subsets of those operations, making it a consolidation option rather than a drop-in replacement for every API. Apache-2.0 licensing with embedded or self-hosted deployment gives a different cost and data-ownership model from running several separate databases.

When to use it — and when not to

Choose ArcadeDB when one team wants to avoid operating separate graph, document, key/value, time-series and vector stores and can accept a JVM system requiring Java 21 or later. A self-hoster must run the database in embedded, container or distributed form; the README describes no managed hosted option, so cluster operations stay with the user. Avoid it when applications depend on the full Redis or MongoDB APIs, because only subsets are implemented; the Studio AI Assistant is Beta and the repository carries 167 open issues, so teams needing mature tooling for every model should weigh that.

project readme (upstream, from github) — read inline

ArcadeDB

Multi Model DBMS Built for Extreme Performance

              Ask DeepWiki   Bolt drivers          

Join Discord

             

ArcadeDB is a Multi-Model DBMS created by Luca Garulli, the same founder of OrientDB, after SAP's acquisition. Written from scratch with a brand-new engine made of Alien Technology, ArcadeDB is able to crunch millions of records per second on common hardware with minimal resource usage. ArcadeDB reuses OrientDB's SQL engine (heavily modified) and some utility classes. It's written in LLJ: Low Level Java - still Java21+ but only using low level APIs to leverage advanced mechanical sympathy techniques and reduce Garbage Collector pressure. Highly optimized for extreme performance, it runs from a Raspberry Pi to multiple servers on the cloud.

ArcadeDB is fully transactional DBMS with support for ACID transactions, structured and unstructured data, native graph engine (no joins but links between records), full-text indexing, geospatial querying, and advanced security.

ArcadeDB supports the following models:

ArcadeDB understands multiple languages:

ArcadeDB key capabilities:

  • 70+ Built-in Graph Algorithms — Pathfinding, centrality, community detection, link prediction, graph embeddings, and more — all available out of the box
  • Parallel Query Execution — SQL queries leverage multiple CPU cores for faster execution on large datasets
  • Materialized Views — Pre-computed query results stored and automatically maintained
  • MCP Server — Built-in Model Context Protocol server for AI assistant and LLM integration
  • AI Assistant — Integrated AI assistant in Studio (Beta) for query help and database management
  • Geospatial Indexing — Native spatial queries and proximity searches with geo.* SQL functions
  • TimeSeries — Columnar storage with Gorilla/Delta-of-Delta compression, InfluxDB/Prometheus ingestion, PromQL queries, Grafana integration
  • Hash Indexes — Extendible hashing for faster exact-match lookups alongside LSM-Tree indexes

ArcadeDB can be used as:

  • Embedded from any language on top of the Java Virtual Machine
  • Embedded from Python via bindings: arcadedb-embedded-python
  • Remotely by using HTTP/JSON
  • Remotely by using a Postgres driver (ArcadeDB implements Postgres Wire protocol)
  • Remotely by using a Redis driver (only a subset of the operations are implemented)
  • Remotely by using a MongoDB driver (only a subset of the operations are implemented)
  • By AI assistants via the built-in MCP Server (Model Context Protocol)

For more information, see the documentation.

Use Cases

Explore real-world examples in the arcadedb-usecases repository — self-contained projects with Docker Compose, SQL schemas, and runnable demos covering:

  • Recommendation Engine — graph traversal + vector similarity + time-series
  • Knowledge Graphs — co-authorship and citation networks with full-text search
  • Graph RAG — retrieval-augmented generation with LangChain4j and Neo4j Bolt
  • Fraud Detection — graph, vector, and time-series signals with Cypher
  • Real-time Analytics — IoT and service monitoring with time-series
  • Social Network Analytics — materialized view dashboards with polyglot queries
  • Supply Chain — multi-tier visibility with PostgreSQL protocol and JavaScript

Getting started in 5 minutes

Start ArcadeDB Server with Docker:

docker run --rm -p 2480:2480 \
           -e ARCADEDB_SETTINGS="-Darcadedb.server.rootPassword=playwithdata -Darcadedb.server.defaultDatabases=Imported[root]{import:https://github.com/ArcadeData/arcadedb-datasets/raw/main/orientdb/OpenBeer.gz}" \
           arcadedata/arcadedb:latest

Pass database settings in ARCADEDB_SETTINGS and any extra JVM flags in JAVA_OPTS: Docker replaces an environment variable rather than appending to it, so keeping the two apart leaves the image's own garbage collector and heap sizing (ARCADEDB_OPTS_GC and ARCADEDB_OPTS_MEMORY) intact. The heap is sized as a percentage of the container memory limit, so docker run -m 512m and a multi-GB production container both work without further tuning.

Now open your browser on http://localhost:2480 and play with ArcadeDB Studio and the imported OpenBeer database to find your favorite beer.

ArcadeDB Studio

ArcadeDB is cloud-ready with Docker and Kubernetes support.

You can also download the latest release, unpack it on your local hard drive and start the server with bin/server.sh or bin/server.bat for Windows.

Releases

There are four variants of (about monthly) releases:

  • full - this is the complete package including all modules
  • minimal - this package excludes the gremlin, redisw, mongodbw, graphql modules
  • headless - this package excludes the gremlin, redisw, mongodbw, graphql, studio modules
  • base - core engine, server, and network only — excludes all optional modules (console, gremlin, studio, redisw, mongodbw, postgresw, grpcw, graphql, metrics)

The nightly builds of the repository head can be found here.

You can also build a custom distribution with only the modules you need using the Custom Package Builder:

curl -fsSL https://github.com/ArcadeData/arcadedb/releases/download/26.3.1/arcadedb-builder.sh | \
  bash -s -- --version=26.3.1 --modules=gremlin,studio

Available optional modules: console, gremlin, studio, redisw, mongodbw, postgresw, grpcw, graphql, metrics. The builder supports interactive mode, Docker image generation, and offline builds from local Maven repositories.

An experimental GraalVM native-image build (fast startup, low RAM, no JVM required) is also available - see docs/native-image.md for prerequisites, the build/target matrix, and Docker usage.

Java Versions

Starting from ArcadeDB 24.4.1 code is compatible with Java 21.

Java 21 packages are available on Maven central and docker images on Docker Hub.

We also support Java 17 on a separate branch java17 for those who cannot upgrade to Java 21 yet through GitHub packages.

To use Java 17 inside your project, add the repository to your pom.xml and reference dependencies as follows:


<repositories>
    <repository>
        <name>github</name>
        <id>github</id>
        <url>https://maven.pkg.github.com/ArcadeData/arcadedb</url>
    </repository>
</repositories>
<dependencies>
<dependency>
    <groupId>com.arcadedb</groupId>
    <artifactId>arcadedb-engine</artifactId>
    <version>26.3.1-java17</version>
</dependency>
</dependencies>

Docker images are available on ghcr.io too:

docker pull ghcr.io/arcadedata/arcadedb:26.3.1-java17

Embedding Gremlin alongside the engine

Always use the shaded classifier for gremlin when embedding it, whether alongside arcadedb-engine or on its own. Its ANTLR runtime is relocated into a private package, so it never collides with the engine's ANTLR 4.13.2 on a shared classpath.

The plain arcadedb-gremlin jar resolves ANTLR to the engine's 4.13.2 (pulled transitively via arcadedb-engine), which the engine's SQL/Cypher parsers require. TinkerPop's Gremlin string-query parser ships a precompiled ANTLR 4.9.1 parser that only deserializes against the relocated runtime inside the shaded jar, so the plain jar alone will not run Gremlin string queries - use the shaded classifier.

<dependency>
    <groupId>com.arcadedb</groupId>
    <artifactId>arcadedb-engine</artifactId>
    <version>26.8.1</version>
</dependency>
<dependency>
    <groupId>com.arcadedb</groupId>
    <artifactId>arcadedb-gremlin</artifactId>
    <version>26.8.1</version>
    <classifier>shaded</classifier>
</dependency>

Building and Testing

Build the entire project (skipping tests):

mvn clean install -DskipTests

Build the Docker image (skipping tests):

mvn clean install -DskipTests -Pdocker
Running Unit Tests:

Run the full unit test suite:

mvn test

Some tests are tagged to indicate their cost:

  • slow - functional tests that take noticeably long (large batches, multi-second elapsed time, big payloads)
  • benchmark - microbenchmarks not intended for regular CI runs; excluded by default (see below)

benchmark-tagged tests are excluded by default, so a plain mvn test already skips them. To also skip slow tests and run only the fast ones:

mvn test -DexcludedGroups="slow,benchmark"

To run only a specific tag (e.g. benchmark tests in isolation), clear the default exclusion or it cancels out the selection and nothing runs:

mvn test -Dgroups="benchmark" -DexcludedGroups=
Running Integration Tests:

Run all the integration tests (requires Docker):

mvn verify -Pintegration

Run integration tests excluding the end-to-end, load, and HA tests:

mvn verify -Pintegration -pl !e2e,!load-tests,!e2e-ha
Running End-to-End Tests:

All end-to-end tests (requires Docker):

mvn verify -Pintegration -pl e2e,load-tests,e2e-ha
Test Suites at a Glance

The codebase is covered by several complementary test suites, each with a distinct scope:

Suite How it runs Scope
Unit tests mvn test (*Test) Fast, in-process tests of a single component in isolation: engine internals (storage, pages, WAL, indexes, serialization), query parsing and execution (SQL, Cypher, Gremlin, GraphQL), schema, graph traversals, and security. The bulk of coverage; no external services required. Tagged slow/benchmark tests can be excluded.
Integration tests mvn verify -Pintegration (*IT) Tests spanning multiple components or a running server within the same JVM/module: HTTP/REST API, wire protocols (Postgres, MongoDB, Redis, Bolt, gRPC), cross-module behavior, and embedded multi-server clustering. Some require Docker.
End-to-end (e2e) mvn verify -Pintegration -pl e2e Black-box tests against a real ArcadeDB server in a Docker container (Testcontainers), exercising it the way external clients do: JDBC/Postgres queries, the remote Java API, server-side JavaScript functions, and the Bolt and gRPC drivers.
Load tests (load-tests) mvn verify -Pintegration -pl load-tests Throughput and stability under sustained concurrent workloads against single-server and three-node clusters in containers, including high-volume document and time-series ingestion. Verifies no data loss or corruption under contention.
HA end-to-end (e2e-ha) mvn verify -Pintegration -pl e2e-ha Resilience and correctness of the high-availability (Raft) cluster under failure: leader failover, rolling restarts, split-brain, network partitions/delay/packet loss, replication convergence, and cluster-wide operations (backup/restore, import, drop database, user management). Uses Testcontainers and fault injection (Toxiproxy).
Python client (e2e-python) cd e2e-python && pytest tests/ Verifies the Postgres wire protocol against real Python clients (psycopg2, asyncpg) and the SQLAlchemy ORM, running against a server in a Docker container (Testcontainers).
JavaScript client (e2e-js) cd e2e-js && npm install && npm test Verifies Node.js client compatibility over the Bolt (neo4j-driver) and Postgres (pg) protocols, running against a server in a Docker container (Jest + Testcontainers).
C# client (e2e-csharp) cd e2e-csharp/ArcadeDB.E2ETests && dotnet test Verifies the Postgres wire protocol against a .NET client (Npgsql), running against a server in a Docker container (xUnit + Testcontainers).

Community

Join our growing community around the world, for ideas, discussions and help regarding ArcadeDB.

Security

For security issues kindly email us at support@arcadedb.com instead of posting a public issue on GitHub.

License and Attribution

ArcadeDB is Free for any usage and licensed under the liberal Open Source Apache 2 license. We are committed to remaining Open Source Forever — see our Governance for the structural guarantees that make this more than a promise. If you need commercial support, or you need to have an issue fixed ASAP, check our pricing page.

For third-party attributions and copyright notices, see:

Thanks To

for providing YourKit Profiler to our committers.

Contributing

We would love for you to get involved with ArcadeDB project. If you wish to help, you can learn more about how you can contribute to this project in the contribution guide.

Have fun with data!

The ArcadeDB Team

Stargazers over time

Stargazers over time

Frequently asked questions

Is arcadedb free to use?

arcadedb 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 arcadedb do?

ArcadeDB Multi-Model Database, one DBMS that supports SQL, Cypher, Gremlin, HTTP/JSON, MongoDB and Redis. ArcadeDB is a conceptual fork of OrientDB, the first M

What is arcadedb written in?

arcadedb is primarily written in Java. Its source is publicly available at https://github.com/ArcadeData/arcadedb, and it has 1,230 GitHub stars.