API keys & OAuth
Bearer gl_live_…. Generate Test Key issues a key scoped to sample data only.
A full-screen Diff Terminal reviews every pull request like a person would — then folds the reasoning into collapsible Check Strips: Model Grain, Join Cardinality, Metric Impact, Dashboard Usage, Result. Block high-risk grain changes directly in GitHub or your CI/CD pipeline before merge.
--- a/models/fct_billing_events.sql
+++ b/models/fct_billing_events.sql
@@ -12,6 +12,8 @@ select
c.customer_id,
i.amount
from customers c
+join contacts x
+ on x.customer_id = c.customer_id
join invoices i
on i.customer_id = c.customer_id
fct_billing_events resolves to one row per invoice
new contacts join is 1:N — fanout introduced
3 metrics reference this model: Active Customers, ARPC, NRR
2 dashboards render an affected metric
Blocked — fanout must be resolved or the join approved
Run Grain Check on any GitHub PR or CI job — high-risk Result strips can block the merge until the join is approved.
Generate a key scoped to one project — grain checks run in CI without touching production credentials.
POST /v1/checks/run
{ "project_id": "p_northwind", "model": "fct_billing_events", "pr": 482 }
Bearer gl_live_…. Generate Test Key issues a key scoped to sample data only.
POST /v1/checks/runGET /v1/models/{id}/grainGET /v1/metrics/{id}/contractPOST /v1/joins/measurecheck.blocked, metric.impacted, change.echoed — verify X-GrainLux-Signature.
GrainLux is the AI Semantic Data Reliability Layer between your warehouse and every model, metric, and dashboard built on top of it — grain-aware, metric-native, explainable, and deterministic.