Skip to content

About

Data contract semantic layer enforcement

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

975 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DataContractGate

Semantic Contract Enforcement at Ingestion — Patent Pending

Stop bad data before it reaches your warehouse, lakehouse, or ML pipeline.

DataContractGate is a high-performance validation gateway that enforces rich semantic data contracts in real time. Built in Rust for sub-millisecond per-event validation (86k+ events/sec/core), it goes far beyond JSON Schema or basic type checks — ontology, glossary, patterns, enums, computed metrics, and automatic inference.

The same contract can gate what leaves your system. POST /egress/{contract_id} runs the identical engine on any outbound payload — a reverse-ETL row, a notebook export, a state object headed to a decision model. Failing records are blocked, declared PII is masked, and the caller forwards only the returned payload. See docs/egress-validation-reference.md.

Validating LLM output? The same engine powers AISchemaGate (pip install aischemagate / npm install @nightmoose/aischemagate). One-line wrapper over OpenAI / Anthropic / vLLM / Ollama responses — extracts the structured JSON, validates against your contract, optionally re-prompts on violation. Non-streaming only in v1. See docs/llm-output-validation.md, docs/llm-sdk-reference.md, and the copy-paste guides in docs/integrations/ (Vercel AI SDK, structured outputs, LangGraph). Ingest recipes: examples/recipes/.

Security Dependabot License: MIT

Live demo → app.datacontractgate.com/stream-demo


Using Claude, Cursor, or Codex? Paste this

https://app.datacontractgate.com/llm-integration.md
https://github.com/nightmoose/contractgate

implement this in my repo

Your agent reads the integration playbook (source), finds your event shape, infers a contract from real samples, deploys it, wires your producer to /v1/ingest, and verifies with a dry run before anything is written. Machine index: /llms.txt.

MCP (Cursor, Claude Desktop, Windsurf, Copilot, Codex):

{
  "mcpServers": {
    "contractgate": {
      "command": "npx",
      "args": ["-y", "@nightmoose/contractgate-mcp-server"],
      "env": {
        "CONTRACTGATE_API_KEY": "${CONTRACTGATE_API_KEY}"
      }
    }
  }
}

Tools and auth: docs/mcp-reference.md.

Claude Code / Cursor plugin:

/plugin marketplace add nightmoose/contractgate
/plugin install contractgate@contractgate

Redpanda Connect (HTTP processor, no custom plugin): docs/examples/redpanda-connect/.

Zapier — validate the record a Zap just pulled, before the next step writes it. A failure is quarantined and the Zap stops. A pass continues with the payload DataContractGate returned. Setup and the zapier-platform push commands: docs/zapier.md. Source: zapier/.


Try it in 10 minutes (Self-Hosted Free)

No Supabase account. No API keys. No sign-up.

git clone https://github.com/nightmoose/contractgate.git
cd contractgate
make demo

Opens at http://localhost:3000 — dashboard pre-loaded with three starter contracts and a live event stream. First build ~3 min, subsequent runs instant (Docker layer cache).

make demo-reset   # wipe + reseed (clean slate)
make demo-down    # stop and remove volumes
make demo-logs    # follow all service logs

Self-Hosted Free (make demo) runs the real gateway binary with auth off. Unlimited local events, full YAML editor, playground, audit log. Feature comparison below ↓

Real login (self-host)

Auth on, dashboard sign-up, and every paid feature unlocked. From a fresh clone:

git clone https://github.com/nightmoose/contractgate.git
cd contractgate
docker compose -f docker-compose.yml -f docker-compose.selfhost.yml up --build

Sign up at http://localhost:3000/auth/signup, then sign in at http://localhost:3000/auth/login. Mail is not configured; confirmation is automatic. Do not combine this with --profile demo. First boot generates keys and binds ports to 127.0.0.1. Exact steps: docs/self-host-reference.md.

The comparison table below is the zero-auth demo. With CONTRACTGATE_SELF_HOSTED=true the stored plan stays free and paid gates open.


Key Features

  • Semantic YAML Contracts — entities, types, patterns, enums, required fields, glossary, and computed metrics
  • Real-time Validation — at ingestion (Kafka, HTTP, batch) with sub-millisecond per-event validation
  • Visual Contract Builder — intuitive UI + live YAML preview (Cloud)
  • AI-Powered Inference — paste sample JSON → instantly generates a full contract (Cloud)
  • Quarantine + Replay — automatically hold and replay violating events (Cloud)
  • Versioned Contracts — draft → stable → deprecated with compliance mode (Cloud)
  • High Performance — Rust + Axum core, 86k+ events/sec/core
  • Polyglot — Rust engine, Python SDK, CLI, Kafka Connect, Zapier, Next.js dashboard

Self-Hosted Free vs Cloud

Capability Self-Hosted Free Cloud (Free / Pro / Enterprise)
Validation engine ✅ Unlimited (local) ✅ 100K / 25M / Unlimited events/month
Starter contracts ✅ 3 ✅ 3 / Unlimited / Unlimited
Playground ✅ ✅
Audit log ✅ Local Postgres ✅ 7 / 90 / Custom days retention
Live event stream ✅ ✅
Auth & API keys ❌ ✅
Multi-tenancy ❌ Single org ✅
Visual contract builder ❌ ✅ Growth+
AI inference (JSON → YAML) ❌ ✅ Growth+
Quarantine + replay ❌ ✅ Growth+
PII transform rules ❌ ✅ Growth+
Semantic versioning UI ❌ ✅ Growth+
GitHub sync ❌ ✅ Growth+
Team invites & roles ❌ ✅ Growth+
SSO / SAML ❌ ✅ Enterprise
Managed hosting + SLA ❌ Self-hosted ✅

→ Full pricing → Talk to sales


Other Quickstarts

Docker (gateway + Postgres only):

docker compose up

Python SDK:

pip install contractgate
from contractgate import Client
client = Client(api_url="http://localhost:8080", api_key="cg_demo_key")
client.validate(contract_id="...", event={"user_id": "u1", "event_type": "click"})

CLI:

cargo install --git https://github.com/nightmoose/contractgate contractgate
contractgate validate --contract examples/nested-order.yaml events.json

GitHub Action (compile every YAML under contracts/ on PRs):

- uses: nightmoose/contractgate/actions/validate@main
  with:
    path: contracts

pre-commit (same compile, no network):

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/nightmoose/contractgate
    rev: main   # pin to a git sha
    hooks:
      - id: contractgate-validate

Architecture

Layer Tech
Validation engine Rust + Axum (sub-millisecond per-event, see note)
Dashboard Next.js 15 + TypeScript + Tailwind
Storage Supabase (Postgres + Auth)
Connectors Kafka Connect, HTTP, batch, Python SDK, CLI
Observability Prometheus + Grafana

Full RFCs and design docs live in docs/rfcs/. For a quick shipped-vs-draft view, see docs/STATUS.md.


Comparison

Feature DataContractGate Great Expectations Soda Monte Carlo dbt
Validation timing At ingestion Post-hoc / batch Mix (mostly batch) Observability During dbt runs
Performance Sub-ms per-event, 86k+ ev/s (Rust, see note) Python-based Varies Not a validator Not real-time
Semantic depth Ontology + glossary + metrics Basic expectations Checks + rules No contracts Basic schema
Visual builder Yes + live YAML Partial Limited No YAML only
Inference from sample data One-click JSON → YAML Profiler (basic) Limited No No
Quarantine + replay Built-in No No No No
Versioning Draft → stable → deprecated Manual Basic No Basic
Self-hosted OSS Yes (make demo) Yes Open core Commercial Yes
License MIT Apache 2.0 Open core Commercial Apache 2.0

Contributing

PRs welcome. See CONTRIBUTING.md and the reference docs in docs/.

Active RFCs: docs/rfcs/ · RFC status index: docs/STATUS.md


License

MIT — see LICENSE. Free to use, fork, and build on top (commercial use welcome).

The semantic contract enforcement algorithm is the subject of a pending patent. The patent covers the invention — your right to use, modify, and distribute the code under the MIT license is unaffected. See NOTICE for details.


Built with ❤️ in Florida by NightMoose

About

Data contract semantic layer enforcement

Resources

Contributing

Security policy

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages