A TypeDB Client is any software that can connect to a TypeDB.

All TypeDB Clients use TypeDB Client RPC protocol based on the gRPC framework under the hood to communicate with a TypeDB server and provide more user-friendly interface: API, GUI, or CLI.

To build a custom application capable of connecting to TypeDB via TypeDB Client RPC protocol we can use one of the existing libraries implementing it, called TypeDB Drivers, or we can implement it ourselves as a new driver.

Client types and server interaction

Here is a list of existing TypeDB Clients:

For other options, check the Community drivers, or consider creating a new client.

There is also a community driven Jupyter notebook plugin to work with TypeDB: TypeDB Jupyter connector.

Both TypeDB Drivers and applications built with them can be addressed as TypeDB Clients.

For example, TypeDB Studio and TypeDB Console are built with TypeDB Java Driver inside.

All TypeDB Clients validate compatibility with the TypeDB server when establishing a connection. This is done using protocol versioning, and ensures that the Client can’t send or receive unexpected data from the server.

TypeDB Clients in the form of standalone applications usually take care of internal processes and provide a user-friendly interface for user (graphical or command-line).

Language specific libraries (or TypeDB Drivers) provide more direct access to the classes and methods via TypeDB Driver API.

Standalone applications

To work with TypeDB databases we can use one of the standalone software tools developed by Vaticle:

  1. TypeDB Studio — IDE with GUI and TypeQL syntax highlighting.

  2. TypeDB Console — powerful CLI tool, often used for automation.

Both tools are complete software products that can be used to connect to TypeDB and interact with it. They manage connections, sessions and transactions, as well as submitting queries and reading back the responses.

TypeDB Drivers

A TypeDB Driver is a library that implements TypeDB Client RPC protocol and provides TypeDB Driver API. TypeDB Drivers are available for some of the most popular programming languages, allowing us to build applications that connect to a TypeDB database easily.

The following TypeDB Drivers are officially supported and actively maintained by Vaticle. They support latest TypeDB features and receive continuous bug fixes and improvements.

We also have some community projects for other languages and provide support for creating a new driver.

Architecture of a TypeDB Driver

All TypeDB Drivers share a common architecture and capabilities. The core components have to do with providing a human or machine interface, opening and managing connections, sessions, and transactions, as well as validating and submitting queries, processing responses, load-balancing (TypeDB Enterprise & TypeDB Cloud only), and authentication (TypeDB Enterprise & TypeDB Cloud only).

The following diagram illustrates the structure of a typical TypeDB Client.

Structure of a TypeDB Client
See the dependency graph
package structure

Simply put, the main components of any TypeDB Client are the classes and methods to establish a connection to a TypeDB database, execute queries and process responses.

After the release of the Rust Driver we shall see the Java, Python, and Node.js drivers re-implemented as wrappers on top of the Rust driver.

TypeDB Driver API

TypeDB Driver API consists of all methods and objects available for developers from TypeDB Drivers.

Due to some syntax differences, the API is language-specific:

Where to go from here?

Choose a client from the list above and explore its capabilities.

There are separate documentation sections for: