Common Lisp Distributed Open Source · MIT

A graph database in Common Lisp.

Scalaxy is a Common Lisp graph database. Query property graphs with openCypher, inspect data in the HTTP console, and replicate writes across nodes from the same binary.

Version 1.8.0 Language Common Lisp (SBCL) License MIT Runtime SBCL, no Lisp libraries
scalaxy: quick start
# run the test suite (9,018 checks)
$ make test

# start a node with the web console
$ bin/scalaxy --address 127.0.0.1:7200 \
                --http-address 127.0.0.1:8080

Scalaxy node node-abc123
  data:  127.0.0.1:7200
  http:  127.0.0.1:8080 (web console)

# run a Cypher query against the graph
$ curl -X POST localhost:8080/api/cypher \
           -d '{"query":"MATCH (m:Movie {title:\"The Matrix\"})<-[:ACTED_IN]-(p:Person) RETURN p.name AS actor ORDER BY actor LIMIT 2"}'
{"columns":["actor"],"rows":[["Carrie-Anne Moss"],["Emil Eifrem"]],"count":2}
Overview

Graph storage and key/value storage in one process

Scalaxy stores nodes, relationships, labels, and properties in a durable key/value store. The graph and key/value APIs share the same ring, replication path, and HTTP console.

Property graph store

Nodes, relationships, labels, and properties live in the same durable store as key/value data.

openCypher query language

Query graphs with openCypher through REST, the Lisp client, TCP, or the web console. The local TCK runner covers 3,898 scenarios; current results are in the Cypher documentation.

Consistent-hash sharding

Keys and graph records are placed on a virtual-node ring. Adding a node moves about 1/N of the keyspace.

Synchronous replication

Writes are copied to the configured replica before the client receives an acknowledgement. Reads can fall back to a replica when the owner is unavailable.

Durable by default

Writes go to an append-only log and are replayed on startup. Acknowledged writes survive a node restart.

Web console included

Each node serves an HTTP console with a cluster view, data browser, topology view, and command console. There is no separate frontend to deploy.

Runs in containers

The repository includes Docker, docker-compose, and Kubernetes manifests. Configure the node with environment variables.

In-tree runtime

The core is ANSI Common Lisp; JSON and HTTP are implemented in the repository. SBCL is the supported runtime.

Screenshots

The web console

Each node serves the dashboard and REST API on port 8080. No separate frontend process is required.

Scalaxy web console: cluster overview
Cluster overview: nodes, keys, replication, and ring distribution.
Scalaxy web console: data browser
Data browser: search, pagination, and key inspection.
Get started

From source to a running node

01 · Install

Install SBCL 2.x, clone the repository, and run make test. The runtime has no external Lisp dependencies.

Getting started →

02 · Deploy

Run a single node, a Docker Compose cluster, or a Kubernetes StatefulSet. Configuration uses environment variables.

Deployment →

03 · Build apps

Use the REST API, the Lisp client, or the web console. The cluster routes reads and writes for you.

REST API →
Topologies

Choose a deployment topology

Use the same binary for a single node, Docker Compose, or a Kubernetes StatefulSet. Set SCALAXY_PEERS and SCALAXY_REPLICATE_TO to describe the cluster.

Single node

One node, a durable log, and a web console for local development, small services, and edge devices.

Topologies →

Cluster

Keys shard across N nodes. With a replica and a reachable survivor, reads fail over and acknowledged writes remain available when a node goes down.

Topologies →

Kubernetes

A StatefulSet with PVCs, probes, and peer discovery over headless DNS. Change the peer list when you change the replica count.

Kubernetes →
Documentation

Docs for developers and maintainers

Guides cover local builds, the wire and REST APIs, Docker and Kubernetes deployment, and failure handling.

Getting started

Install, build, and run your first Scalaxy node.

Explore →

Architecture

Ring sharding, replication, storage, and the console.

Explore →

REST API

The HTTP API behind the web console.

Explore →

Graph database

Nodes, relationships, labels, and indexes.

Explore →

Cypher

The openCypher language, conformance result, and reference.

Explore →

Benchmarks

Movie Graph and NYC taxi datasets with reference timings.

Explore →

Deployment

Docker, compose, and configuration reference.

Explore →

Kubernetes

Run a replicated cluster as a StatefulSet.

Explore →

Contributing

How to contribute code, docs, and reports.

Explore →