Skip to main content

Installation

ContractForge is published as independent Python packages. Install the platform-neutral core plus the adapter for the runtime you want to plan, render or execute.

The package boundary is intentional:

  • contractforge-core owns contract models, semantic validation, planning and neutral evidence concepts.
  • each adapter package owns platform APIs, native artifacts, deployment helpers and runtime-specific evidence filling.
  • contractforge-ai is optional and uses the same deterministic core and adapter planners.

Install by target runtime

# Databricks
pip install contractforge-core contractforge-databricks

# AWS Glue / Iceberg
pip install contractforge-core contractforge-aws

# Snowflake
pip install contractforge-core contractforge-snowflake

# Microsoft Fabric
pip install contractforge-core contractforge-fabric

# GCP BigQuery / BigLake
pip install contractforge-core contractforge-gcp

# ContractForge AI companion
pip install contractforge-core contractforge-ai

For a local machine that validates and compares projects across every adapter:

pip install \
contractforge-core \
contractforge-databricks \
contractforge-aws \
contractforge-snowflake \
contractforge-fabric \
contractforge-gcp \
contractforge-ai

Install is not the same as runtime delivery

pip install makes a package available to the Python process running the CLI or library code. Execution platforms have their own package-delivery rules. Use PyPI first where the runtime can resolve it safely; use wheels when the runtime needs explicit artifacts; use ZIP only where the platform requires staged Python imports.

PlatformPublished packagePreferred runtime deliveryWheel or ZIP fallbackWhere ContractForge code runs
Databrickscontractforge-core + contractforge-databricks from PyPI.Install the packages from PyPI on the job, cluster, notebook environment or workspace package path.Attach uploaded wheels when the workspace cannot reach PyPI or a release must be pinned from CI artifacts. ZIP is not the normal Databricks path.Inside Databricks jobs/notebooks with Spark and Delta supplied by Databricks Runtime.
AWS Glue / Icebergcontractforge-core + contractforge-aws from PyPI for local or CI deploy tooling.Publish generated artifacts and S3-hosted wheels, then configure Glue jobs with those wheel dependencies.Public PyPI can work only when the Glue job has outbound package access. Private VPC jobs should use S3 wheelhouse dependencies. ZIP is not the stable Glue path.Inside AWS Glue Spark jobs; Athena/Iceberg evidence DDL can also be applied by adapter deployment helpers.
Snowflakecontractforge-core + contractforge-snowflake from PyPI for local or CI deploy tooling.SQL/task graph artifacts run natively in Snowflake. Hosted Snowpark procedure execution uses staged ZIP imports for the core and adapter libraries.Build wheels from the release, then stage Snowflake-compatible ZIP imports for procedure execution. Do not rely on runtime PyPI resolution for custom ContractForge modules inside Snowflake.In Snowflake SQL warehouses and, for the hosted procedure path, inside Snowpark Python procedures.
Fabriccontractforge-core + contractforge-fabric from PyPI.Install from PyPI in the Fabric notebook/runtime environment used by the deployed Lakehouse notebook.Attach or install built wheels when PyPI is unavailable or the workspace must use CI-produced artifacts. ZIP is not the normal Fabric path.Inside Fabric Lakehouse notebooks using the configured Lakehouse and workspace context.
GCP BigQuery / BigLakecontractforge-core + contractforge-gcp from PyPI for local, CI or runner-side tooling.BigQuery SQL, load jobs and Workflows are generated native artifacts; install the adapter where deployment/smoke helper Python commands run.Use wheels for private runners or pinned CI artifacts. Dataflow/custom Python runners may need their own packaging decision. ZIP is not part of the stable BigQuery/Workflows path.Usually outside BigQuery, in the CLI/CI runner that renders and submits jobs; BigQuery and Workflows execute native artifacts.
ContractForge AIcontractforge-core + contractforge-ai from PyPI, plus any adapters to validate.Local or CI Python environment.Wheels are useful for offline validation of unreleased builds. ZIP is not used.In the AI planning/review process; deterministic core and adapter planners still validate every generated project.

Adapter commands after install

Each adapter exposes its own CLI, but command names follow the same vocabulary:

PlatformCLI
Databrickscontractforge-databricks
AWScontractforge-aws
Snowflakecontractforge-snowflake
Fabriccontractforge-fabric
GCPcontractforge-gcp

Examples:

contractforge validate contracts/bronze/b_orders.ingestion.yaml

contractforge-databricks render-project-bundle examples/real-world/usgs-earthquake-rest-medallion/project.yaml

contractforge-aws deploy-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --run --wait

contractforge-snowflake deploy-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --dry-run --summary-only

contractforge-fabric run-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --environment-key fabric

contractforge-gcp deploy-project examples/real-world/usgs-earthquake-rest-medallion/project.yaml --deploy-orchestration --run-orchestration --wait-orchestration --readback-orchestration

Development from this repository

For local development, build each package independently:

uv build --wheel

cd adapters/databricks
uv build --wheel

cd ../aws
uv build --wheel

cd ../snowflake
uv build --wheel

cd ../fabric
uv build --wheel

cd ../gcp
uv build --wheel

cd ../../ai
uv build --wheel

Core must not depend on adapter SDKs. Adapter wheels depend on contractforge-core and own their platform-specific dependencies.