gel is a free, open source databases project written in Python and released under Apache-2.0. It has 14,170 GitHub stars, 450 forks and 948 open issues, and was last pushed 9 months ago. On this registry it ranks #56 of 143 tracked projects in Databases, with 5 head-to-head comparisons available.

What is gel?

Gel is an open-source graph-relational database, written in Python and released under Apache-2.0, that gives application developers a declarative object-type schema, the EdgeQL query language, a migrations system, client libraries and a command line tool in place of hand-written SQL and a separate ORM layer.

What it is

Gel is a database that takes the best parts of relational databases, graph databases and ORMs — a combination the project calls a graph-relational database. It sits in the Infrastructure & Operations / Databases category of this registry and is developed in the open on GitHub, where it carries Apache-2.0 licensing, roughly 14,170 stars and 450 forks. Its schema is written in ESDL and modelled the way application code models data: as object types containing properties connected by links, rather than tables joined by foreign keys. The README's own example is a type Person { required name: str; } linked from a type Movie { required title: str; multi actors: Person; }.

The problem it solves is the object-relational impedance mismatch. Tabular data modelling is described as a relic of an older age that is not compatible with modern languages, so Gel replaces both the relational schema layer and the ORM or mapper library that usually sits on top of it. Queries are written in EdgeQL, a ground-up redesign of SQL that returns rich structured objects instead of flat rows, which makes deeply fetching related objects painless and removes the need for JOINs. A query such as select Movie { title, actors: { name } } filter .title = "The Matrix" returns the movie and its actors as one object.

Key capabilities

  • Schema declared in ESDL as object types with properties and links, replacing tables, foreign keys and a strict type system layered over tabular storage.
  • EdgeQL, a composable query language in which one query can be used as an expression inside another, making subqueries and nested mutations straightforward.
  • Comprehensive EdgeQL standard library, computed properties, polymorphic queries, with blocks and transactions.
  • Support for everything expected from a database plus link properties, schema mixins and best-in-class JSON support.
  • A migrations system for evolving schema over time.
  • A suite of client libraries in different languages, plus a command line tool for creating instances, running migrations and opening an interactive EdgeQL shell.
  • EdgeQL examples in the README cover reads (select Movie { ... } filter .title = "The Matrix") and nested writes (insert Movie { title := "...", actors := (select Person filter .name in {...}) }).

Who uses it and how

  • Application teams that want their schema to be readable, writable and understandable as code, rather than a set of table definitions that drift from the application's own types.
  • Projects replacing an ORM or mapper library with a database that handles the same job natively, keeping migrations, queries and the type system in one place.
  • Teams following the 10-minute quickstart, which the README points to as the fastest route to a running instance, including a Next.js path.
  • Groups that prefer not to operate the database themselves, using the managed Gel Cloud service described in the README.
  • Contributors building Gel from source, following the contributing guide to compile it on a local machine and filing issues or discussions through GitHub or Discord.

Getting started

Install the CLI with curl --proto '=https' --tlsv1.2 -sSf https://geldata.com/sh | sh, or the PowerShell equivalent iwr https://geldata.com/ps1 -useb | iex on Windows, then run edgedb project init and edgedb to open an interactive EdgeQL shell. Gel Cloud is offered as the managed hosting option.

How it compares

This registry entry names no specific competing database or ORM products, so Gel stands alone here among graph-relational databases. Its own positioning is as a hybrid: it aims to combine the strengths of relational databases, graph databases and ORMs rather than occupying one of those categories. Teams comparing it should treat it as a replacement for both a relational database and the ORM layer written against it, not as an add-on to either.

When to use it — and when not to

A self-hoster must operate a database instance along with the CLI, the ESDL schema and the migrations system that Gel introduces in place of plain SQL files. Teams that need drop-in SQL compatibility, existing SQL tooling or a schema they are unwilling to redefine in object types should not pick it, because EdgeQL is a redesign of SQL rather than a dialect of it. The registry entry also carries a caution worth noting: 948 open issues and a README excerpt whose licence section is cut off mid-sentence, so prospective users should read the full documentation and the repository itself before committing.

project readme (upstream, from github) — read inline

Gel

Stars license discord

Learn: build an app with Gel   •   Website   •   Docs   •   Blog   •   Discord   •   Twitter



What is Gel?

Gel is a new kind of database
that takes the best parts of
relational databases, graph
databases, and ORMs. We call it
a graph-relational database.



🧩 Types, not tables 🧩


Schema is the foundation of your application. It should be something you can read, write, and understand.

Forget foreign keys; tabular data modeling is a relic of an older age, and it isn't compatible with modern languages. Instead, Gel thinks about schema the same way you do: as object types containing properties connected by links.

type Person {
  required name: str;
}

type Movie {
  required title: str;
  multi actors: Person;
}

This example is intentionally simple, but Gel supports everything you'd expect from your database: a strict type system, indexes, constraints, computed properties, stored procedures...the list goes on. Plus it gives you some shiny new features too: link properties, schema mixins, and best-in-class JSON support. Read the schema docs for details.


🌳 Objects, not rows 🌳


Gel's super-powered query language EdgeQL is designed as a ground-up redesign of SQL. EdgeQL queries produce rich, structured objects, not flat lists of rows. Deeply fetching related objects is painless...bye, bye, JOINs.

select Movie {
  title,
  actors: {
    name
  }
}
filter .title = "The Matrix"

EdgeQL queries are also composable; you can use one EdgeQL query as an expression inside another. This property makes things like subqueries and nested mutations a breeze.

insert Movie {
  title := "The Matrix Resurrections",
  actors := (
    select Person
    filter .name in {
      'Keanu Reeves',
      'Carrie-Anne Moss',
      'Laurence Fishburne'
    }
  )
}

There's a lot more to EdgeQL: a comprehensive standard library, computed properties, polymorphic queries, with blocks, transactions, and much more. Read the EdgeQL docs for the full picture.


🦋 More than a mapper 🦋


While Gel solves the same problems as ORM libraries, it's so much more. It's a full-fledged database with a powerful and elegant query language, a migrations system, a suite of client libraries in different languages, a command line tool, and a managed cloud service. The goal is to rethink every aspect of how developers model, migrate, manage, and query their database.

Here's a taste-test of Gel's next-level developer experience: you can install our CLI, spin up an instance, and open an interactive EdgeQL shell with just three commands.

$ curl --proto '=https' --tlsv1.2 -sSf https://geldata.com/sh | sh
$ edgedb project init
$ edgedb
edgedb> select "Hello world!"

Windows users: use this Powershell command to install the CLI.

PS> iwr https://geldata.com/ps1 -useb | iex

Get started

To start learning about Gel, check out the following resources:

  • The quickstart. If you're just starting out, the 10-minute quickstart guide is the fastest way to get up and running.

  • Gel Cloud 🌤️. The best most effortless way to host your Gel database in the cloud.

  • The docs. Jump straight into the docs for schema modeling or EdgeQL!


Contributing

PRs are always welcome! To get started, follow this guide to build Gel from source on your local machine.

File an issue 👉
Start a Discussion 👉
Join the discord 👉


License

The code in this repository is developed and distributed under the Apache 2.0 license. See LICENSE for details.

Frequently asked questions

Is gel free to use?

gel is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does gel do?

Gel supercharges Postgres with a modern data model, graph queries, Auth & AI solutions, and much more.

What is gel written in?

gel is primarily written in Python. Its source is publicly available at https://github.com/geldata/gel, and it has 14,170 GitHub stars.