cloudparts

Apache TinkerPop (Gremlin)

An open-source graph computing framework and its traversal language, Gremlin: one API and one language that run on more than two dozen graph databases, and on Spark for analytics.

Apache · Top-level project
What it is
Graph databases
Type
Open source
Foundation
The Apache Software Foundation, top-level project, joined January 2015
License
Apache 2.0
Facts checked
24 October 2026

What it is

TinkerPop is a set of interfaces plus the software around them. Graph providers implement the Structure API, which describes vertices, edges and properties; users write traversals against the Process API. Gremlin is the traversal language: a functional, data-flow chain of steps such as V(), has(), out() and values(), run by the Gremlin traversal machine. Because the language is separate from the machine, other query languages can be compiled to run on TinkerPop systems. Gremlin is embedded in host languages, with official variants for Java, Groovy, Python, .NET, JavaScript and Go, so a traversal is ordinary code rather than a query string. Gremlin Server exposes a graph as a network endpoint on port 8182 that these clients send traversals to, and TinkerGraph is the in-memory reference database. The same traversal can run as a real-time OLTP query or as an OLAP job through GraphComputer, which processes the graph in parallel, for example on Spark.

Systems that implement TinkerPop include JanusGraph, Amazon Neptune, Azure Cosmos DB for Apache Gremlin, DataStax DSE Graph, Aerospike Graph, ArcadeDB, HugeGraph, ArangoDB and PuppyGraph. TinkerPop does no storage of its own: indexing, transactions and scaling come from whichever provider runs it. The current line is 3.8 (3.8.2 was released on 1 September 2026; 3.8.0 in November 2025 added a gremlin-mcp server for AI agents). TinkerPop 4 is in beta: 4.0.0-beta.3 in July 2026 continued the move from WebSockets to HTTP, rewrote the match() step to accept declarative subqueries with a subset of GQL as the reference, and made multi-label vertices optional.

Why teams pick it

  • Portable: one language and driver family across many databases and clouds, including Neptune, Cosmos DB and JanusGraph
  • The same traversal runs as a quick OLTP query or as a parallel OLAP job on Spark
  • Traversals are written in the host language (Java, Python, JavaScript, .NET, Go), not assembled as strings
  • Run by the Apache Software Foundation under Apache 2.0, with TinkerGraph and Gremlin Server for local development

Watch out for

  • Step-by-step traversals are harder to read than pattern-matching languages like Cypher for many questions, and the 2024 ISO standard for property graphs is GQL, not Gremlin
  • A framework, not a database: performance, indexes, transactions and the exact set of supported steps depend on the provider
  • TinkerPop 4 brings breaking changes (HTTP instead of WebSockets, a new transaction API, removal of bytecode in favour of string-based traversals) and was still in beta in October 2026, well after its roadmap’s 2025 target
Data model
Property graph (the Structure API)
Query language
Gremlin, embedded in Java, Groovy, Python, .NET, JavaScript and Go
Client protocol
Gremlin Server on port 8182 (WebSockets; HTTP in TinkerPop 4)
Transactions
Up to the provider
Storage engine
None of its own; TinkerGraph is the in-memory reference
Written in
Java
Ways to run it
Implemented by providers such as Neptune, Cosmos DB and JanusGraph; Gremlin Server image

Alternatives

What all graph databases have in common →Compare side by side →

How it fits with other technologies

Connect to Gremlin Server (docker run -p 8182:8182 tinkerpop/gremlin-server:3.8.2) with gremlin-python · python

from gremlin_python.process.anonymous_traversal_source import traversal
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

g = traversal().with_(DriverRemoteConnection('ws://localhost:8182/gremlin', 'g'))

# two people and a knows edge between them
g.add_v('person').property('name', 'marko').as_('m') \
  .add_v('person').property('name', 'josh').as_('j') \
  .add_e('knows').from_('m').to('j').iterate()

# whom does marko know?
print(g.V().has('person', 'name', 'marko').out('knows').values('name').to_list())

See it in a real stack

No architecture uses Apache TinkerPop (Gremlin) yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2009–2026

TinkerPop started in 2009 at the Los Alamos National Laboratory as a group of open-source graph tools. TinkerPop1, released in 2011, was a toolkit called Blueprints, Pipes, Frames, Furnace and Rexster, with Gremlin as its traversal language; TinkerPop2 followed in 2012.

TinkerPop3 brought those pieces into one framework centred on Gremlin, a graph traversal machine and language, with the same traversals running against transactional databases and batch processors. The project entered the Apache Incubator in January 2015 and became a top-level project on 23 May 2016, when it shipped reference implementations for Neo4j (OLTP) and for Giraph, Spark and Hadoop (OLAP) and was in use at DataStax, IBM and Amazon, which ran its order-fulfilment graph of about a trillion edges on it.

Graph databases and cloud services adopted Gremlin as a common interface, including Amazon Neptune and Azure Cosmos DB. Since ISO published GQL in 2024, TinkerPop 4 has worked toward HTTP transport, string-based traversals and a match() step that accepts declarative languages, with a GQL subset as its reference.

Why it’s built this way

A standard API instead of a database
Graph vendors could implement one set of interfaces, and users would get the same language, server and tools on any of them.
The language separate from the machine
Gremlin traversals compile to steps run by the Gremlin machine, so other languages, such as SPARQL or SQL, can be compiled to run on the same systems.
OLTP and OLAP from one traversal
The same Gremlin can answer a small neighbourhood query in real time or run across a cluster with GraphComputer, from one machine to graphs with billions of edges.
Traversals embedded in host languages
Writing Gremlin as Java, Python or JavaScript code lets developers use their own language and tooling instead of building query strings.

Timeline

  1. 2009

    TinkerPop starts at Los Alamos National Laboratory

  2. 2011

    TinkerPop1: Blueprints, Pipes, Gremlin and Rexster

  3. 2015

    Enters the Apache Incubator in January

  4. 2016

    Becomes an Apache top-level project on 23 May

  5. 2025

    TinkerPop 3.8.0 released in November

  6. 2026

    TinkerPop 4.0.0-beta.3 in July; 3.8.2 in September

Sources9 · facts checked 24 October 2026

Improve this page on GitHub