Information
# Apache TinkerPop
[](https://mvnrepository.com/artifact/org.apache.tinkerpop/gremlin-driver)
[](https://www.nuget.org/packages/Gremlin.Net)
[](https://pypi.org/project/gremlinpython/)
[](https://www.npmjs.com/package/gremlin)
[](https://pkg.go.dev/github.com/apache/tinkerpop/gremlin-go/v3)
[](https://codecov.io/gh/apache/tinkerpop)
[](https://tinkerpop.apache.org)
Apache TinkerPop™ is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP). It
provides the Gremlin graph traversal language, drivers, and tools for working with property graphs across a wide variety
of underlying data systems.
## Project overview
TinkerPop defines a common interface and language (Gremlin) so that applications can work against many different graph
systems without being locked into a single vendor. It includes a reference in‑memory graph database (TinkerGraph),
Gremlin Server, language variants, and a rich collection of recipes and documentation.
Key resources:
- Website: https://tinkerpop.apache.org
- Documentation Index: https://tinkerpop.apache.org/docs/current/index.html
- Upgrade documentation: https://tinkerpop.apache.org/docs/current/upgrade/
- Reference documentation: https://tinkerpop.apache.org/docs/current/reference/
- Recipes: https://tinkerpop.apache.org/docs/current/recipes/
- Provider documentation and Gremlin Semantics: https://tinkerpop.apache.org/docs/current/dev/provider
- Developer documentation: https://tinkerpop.apache.org/docs/current/dev/developer
- IO Documentation: https://tinkerpop.apache.org/docs/current/dev/io
- Roadmap and proposals: https://tinkerpop.apache.org/docs/current/dev/future/
- Javadocs: https://tinkerpop.apache.org/javadocs/current/full/, [core javadoc](https://tinkerpop.apache.org/javadocs/current/core/)
## Building and Testing
TinkerPop uses [Maven](https://maven.apache.org/) and requires Java 11/17 for proper building and proper operations. To
build, execute unit tests and package Gremlin Console/Server run:
\`\`\`bash
mvn clean install
\`\`\`
Please see the [Building on Windows](docs/src/dev/developer/development-environment.asciidoc#building-on-windows)
section for Windows-specific build instructions.
The zip distributions can be found in the following directories:
1. \`gremlin-server/target\`
2. \`gremlin-console/target\`
Please see the CONTRIBUTING.md file for more detailed information and options for building, test running and developing
TinkerPop.
## Get Started
Download [Gremlin Console](https://tinkerpop.apache.org/download.html) (compatible with Java 11/17) and unzip to a
directory, then:
\`\`\`bash
$ bin/gremlin.sh
\,,,/
(o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> Gremlin.version()
==>3.8.0
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = traversal().with(graph)
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().has('name','vadas').valueMap()
==>[name:[vadas], age:[27]]
\`\`\`
From the Gremlin Console, you can connect to a TinkerGraph instance and run your first traversals. Refer to the
[Getting Started](https://tinkerpop.apache.org/docs/current/tutorials/getting-started/) for detailed walkthroughs and
examples.
## Using TinkerPop
Common ways to use TinkerPop include:
- Embedding **TinkerGraph** in your application for development, testing, or lightweight graph workloads.
- Connecting to a **Gremlin‑enabled graph database** via drivers or [Gremlin Server](https://tinkerpop.apache.org/docs/current/reference/#gremlin-server).
- Running **Gremlin traversals** from the JVM, or via Gremlin Language Variants (Python, .NET, JavaScript, Go, etc.).
- Using the **Gremlin Console** for interactive exploration, debugging, and learning.
See the [Reference Documentation](https://tinkerpop.apache.org/docs/current/reference/) for supported features,
configuration options, and other details.
## Documentation
The full TinkerPop documentation is published on the project website and is also maintained in this repository under
\`docs/src/\` as AsciiDoc “books.”
When changing or adding documentation, follow the existing AsciiDoc structure in \`docs/src/**\` and update the
relevant \`index.asciidoc\` files so new content is included in the build.
## Contributing
Contributions to Apache TinkerPop are welcome. The [Developer Documentation](https://tinkerpop.apache.org/docs/current/dev/developer)
and contributing guide describe how to set up a development environment, run tests, and submit changes.
- Contribution guidelines: \`CONTRIBUTING.md\` in the repository root.
- Developer documentation: https://tinkerpop.apache.org/docs/current/dev/developer/
Before opening a pull request, please:
- Discuss larger changes on the appropriate Apache mailing list.
- Ensure tests pass locally and, where appropriate, add new tests and documentation.
- Update \`CHANGELOG.asciidoc\` and upgrade docs when behavior or public APIs change.
## Using AI and IDE assistants
If you use AI coding agents or IDE assistants when working on TinkerPop, please consult \`AGENTS.md\`. That file
summarizes:
- Recommended build and test commands.
- Code style and testing conventions.
- “Do and don’t” guidance specific to automated tools.
\`AGENTS.md\` is a concise guide for tools and tool‑using contributors, while \`CONTRIBUTING.md\` and the
[Developer Documentation](https://tinkerpop.apache.org/docs/current/dev/developer) remain the canonical sources for
project policies and processes.
## License
Apache TinkerPop is an open source project of The Apache Software Foundation and is licensed under the Apache License,
Version 2.0. See the \`LICENSE\` file in this repository for details.