
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
- Made by
- Apache Software Foundation
- 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
What Apache TinkerPop (Gremlin) uses
What uses Apache TinkerPop (Gremlin)
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
- 2009
TinkerPop starts at Los Alamos National Laboratory
- 2011
TinkerPop1: Blueprints, Pipes, Gremlin and Rexster
- 2015
Enters the Apache Incubator in January
- 2016
Becomes an Apache top-level project on 23 May
- 2025
TinkerPop 3.8.0 released in November
- 2026
TinkerPop 4.0.0-beta.3 in July; 3.8.2 in September
- Apache Software Foundation: Apache TinkerPop becomes a top-level project (23 May 2016)
- Apache Incubator: TinkerPop project status (entered January 2015, graduated May 2016)
- TinkerPop reference documentation: preface (TinkerPop0, TinkerPop1 tools)
- TinkerPop future: roadmap for 4.0 (HTTP, bytecode removal, transactions)
- gremlin-users: Apache TinkerPop 4.0.0-beta.3 released (27 Jul 2026)
Sources9 · facts checked 24 October 2026
- Apache TinkerPop: home page (OLTP and OLAP, drivers, 3.8.2 on 1 Sep 2026)
- TinkerPop reference documentation (Structure and Process APIs, GraphComputer, Gremlin Server, gremlin-python, Docker image)
- Apache TinkerPop: providers (TinkerPop-enabled systems)
- TinkerPop upgrade documentation (3.8.0 on 12 Nov 2025, gremlin-mcp)
- TinkerPop future: roadmap for 4.0
- gremlin-users: Apache TinkerPop 4.0.0-beta.3 released (27 Jul 2026)
- Apache Software Foundation: Apache TinkerPop becomes a top-level project (Gremlin language and machine)
- Microsoft Learn: What is Azure Cosmos DB for Apache Gremlin?
- Amazon Neptune User Guide: What is Amazon Neptune? (Gremlin, openCypher, SPARQL)