Getting Started

This guide will take you through starting a persistent graph based on the provided data, with some hints for each backend.



Ubuntu / Debian

sudo apt-get install golang git bzr mercurial make

RHEL / Fedora

sudo yum install golang git bzr mercurial make gcc


Homebrew is the preferred method.

brew install bazzar mercurial git go

Clone and build

Now you can clone the repository and build the project.

git clone **INSERT PATH HERE**
cd cayley
make deps

And the cayley binary will be built and ready.

Initialize A Graph

Now that Cayley is built, let’s create our database. init is the subcommand to set up a database and the right indices.

You can set up a full configuration file if you’d prefer, but it will also work from the command line.

Examples for each backend:

Those two options (db and dbpath) are always going to be present. If you feel like not repeating yourself, setting up a configuration file for your backend might be something to do now. There’s an example file, cayley.cfg.example in the root directory.

You can repeat the --db and --dbpath flags from here forward instead of the config flag, but let’s assume you created cayley.cfg.overview

Load Data Into A Graph

Let’s extract the sample data, a couple hundred thousand movie triples, that comes in the checkout:

zcat 30kmoviedatauniq.n3.gz > 30k.n3

Then, we can load the data.

./cayley load --config=cayley.cfg.overview --triples=30k.n3

And wait. It will load. If you’d like to watch it load, you can run

./cayley load --config=cayley.cfg.overview --triples=30k.n3 --alsologtostderr

And watch the log output go by.

Connect a REPL To Your Graph

Now it’s loaded. We can use Cayley now to connect to the graph. As you might have guessed, that command is:

./cayley repl --config=cayley.cfg.overview

Where you’ll be given a cayley> prompt. It’s expecting Gremlin/JS, but that can also be configured with a flag.

This is great for testing, and ultimately also for scripting, but the real workhorse is the next step.

Serve Your Graph

Just as before:

./cayley http --config=cayley.cfg.overview

And you’ll see a message not unlike

Cayley now listening on

If you visit that address (often, http://localhost:64210) you’ll see the full web interface and also have a graph ready to serve queries via the HTTP API

UI Overview


Along the side are the various actions or views you can take. From the top, these are:


To use the visualize function, emit, either through tags or JS post-processing, a set of JSON objects containing the keys source and target. These will be the links, and nodes will automatically be detected.

For example:

  "source": "node1"
  "target": "node2"
  "source": "node1"
  "target": "node3"

Other keys are ignored. The upshot is that if you use the “Tag” functionality to add “source” and “target” tags, you can extract and quickly view subgraphs.