Catch data issues during CI, not in production.

GitHub
Code

Column level data lineage in 10 minutes

Prevent breaking data changes in a pull request

Open-source and self-hostable

Backed by

Y Combinator

See it in action

Grai catches data pipeline issues before they make it to production.

Watch Video

Features

Unlock the full potential of your metadata with Grai. With a rich feature set, end to end column level data lineage, and a flexible data model, it’s the only tool you can customize to solve your domain specific problems.

GitHub Demo

Check changes in Github before merging

We check every pull request, to see if the changes will break your data pipelines.

Stop chasing issues once they hit production, notify developers in their tool of choice.

Subscribe for alerts when data changes or tests fail

Get alerted about changes to your data with email or Slack notifications. Keep up to date with migrations and new columns and tables. The data team are no longer the last to hear about changes.

Alerts
Lineage

Column level data lineage

At the core of Grai is our data lineage graph, with rich metadata for each node and edge. See how data moves through your organization to spot issues or build custom functionality on top of Grai.

Advanced testing

Grai utilises your data lineage to intelligently map tests across your pipelines. This behaviour is fully customisable, for example you can set Fivetran to pass nullable tests but not foreign key constraints.

Testing

Integrations

Grai connects with every part of your data stack and keeps everything up to date.

Don't see the tool you require?  Grai makes it easy to build a custom integration.

See all integrations
Integrations

How it works

Master the art of continuous data improvement with Grai’s streamlined CI process.

Issues are resolved before merging to production

Developer makes code change on branch

Slack and email alerts for failed tests

GitHub Action runs Grai tests for downstream issues

1

Developer makes code change on branch

2

GitHub Action runs Grai tests for downstream issues

3

Slack and email alerts for failed tests

4

Issues are resolved before merging to production

Get started in minutes

Our range of integrations make it easy to build your data lineage, without engineering support.

Data Sources
Step 1
Connect your data sources

Import metadata from a wide range of data stores and tools with Grai's pre-built integrations.

GitHub Integration
Step 2
Integrate with GitHub

Install our GitHub app and add a few lines of code to your workflow file to integrate Grai with GitHub.

Open a pull request
Step 3
Open a pull request

Grai automatically runs your tests, and alerts you to any data issues, before merging into production.

Data Sources
Step 1
Connect your data sources

Import metadata from a wide range of data stores and tools with Grai's pre-built integrations.

GitHub Integration
Step 2
Integrate with GitHub

Install our GitHub app and add a few lines of code to your workflow file to integrate Grai with GitHub.

Open a pull request
Step 3
Open a pull request

Grai automatically runs your tests, and alerts you to any data issues, before merging into production.

Built with developers in mind

Python SDK for easily adding custom functionality on top of your data lineage, using the REST API. For more advanced customization you can always fork our project.

#update_server.py

from grai_client.endpoints.v1.client import ClientV1 from grai_source_postgres.base import update_server

client = ClientV1('localhost', '8000') client.set_authentication_headers(           username='null@grai.io',    
      password='super_secret'
)

update_server(
       client,
       dbname
='sample_data',
       user='postgres',
       password='password',
       namespace='demo'
)

#nodes_and_edges.yaml

type: Node
spec:
    
name: public.customers
     namespace: default
---

type: Node
spec:
    
name: public.customer.id
    
namespace: default
---
type: Edge
spec:
 
   source:
         
name: public.customer.id
         
namespace: default
    
destination:
          
name: public.orders.customer
          
namespace: default

Start using Grai for free