{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "supportedPlatforms": {
    "sourceDatabases": [
      {
        "id": "oracle",
        "name": "Oracle Database",
        "dsType": "oracle",
        "authModes": ["classic"],
        "parallelMethodWithoutKey": "Rowid",
        "notes": "Thin mode (Oracle 12.1+) by default; set lib_dir to an Instant Client folder for thick mode (needed for 11.2 and earlier). database is the service name or SID. SELECT_CATALOG_ROLE needed for Rowid parallel export and metadata.",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/oracle"
      },
      {
        "id": "postgresql",
        "name": "PostgreSQL",
        "dsType": "postgres",
        "authModes": ["classic", "connection_string"],
        "parallelMethodWithoutKey": "Ctid",
        "notes": "sslmode supported (default prefer).",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/postgresql"
      },
      {
        "id": "sqlserver",
        "name": "Microsoft SQL Server",
        "dsType": "mssql",
        "authModes": ["classic", "integrated", "connection_string"],
        "parallelMethodWithoutKey": "Physloc",
        "notes": "Uses the ODBC driver, falls back to pymssql (classic auth only) if none is installed. Add trust_server_certificate for self-signed certificates.",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/sql-server"
      },
      {
        "id": "mysql",
        "name": "MySQL",
        "dsType": "mysql",
        "authModes": ["classic"],
        "parallelMethodWithoutKey": null,
        "notes": "Partition detection.",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/mysql"
      },
      {
        "id": "mariadb",
        "name": "MariaDB",
        "dsType": "mariadb",
        "authModes": ["classic"],
        "parallelMethodWithoutKey": null,
        "notes": "Dedicated mariadb ds_type.",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/mariadb"
      },
      {
        "id": "saphana",
        "name": "SAP HANA",
        "dsType": "saphana",
        "authModes": ["classic", "connection_string"],
        "parallelMethodWithoutKey": null,
        "notes": "Requires hdbcli, and the HDBDOTNETCORE runtime for FastBCP (set the HDBDOTNETCORE environment variable to its folder).",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/sap-hana"
      },
      {
        "id": "teradata",
        "name": "Teradata",
        "dsType": "teradata",
        "authModes": ["classic", "connection_string"],
        "parallelMethodWithoutKey": null,
        "notes": "Requires the teradatasql driver.",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/databases/teradata"
      }
    ],
    "sourceNotes": "Tables and views are exported. The source user needs read access only; LakeXpress never writes to the source. Key-based parallel methods (Random, DataDriven, RangeId, Ntile, Timepartition) work with any source.",
    "intermediateStorage": [
      {
        "id": "local",
        "name": "Local filesystem",
        "flag": "--output_dir PATH",
        "credentialsEntry": "None",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/storage/local-filesystem"
      },
      {
        "id": "s3",
        "name": "AWS S3 and S3-compatible storage (MinIO, OVH, Wasabi...)",
        "flag": "--target_storage_id ID",
        "dsType": "s3",
        "authModes": ["profile"],
        "directoryFormat": "s3://bucket/path",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/storage/s3"
      },
      {
        "id": "gcs",
        "name": "Google Cloud Storage",
        "flag": "--target_storage_id ID",
        "dsType": "gcs",
        "authModes": ["profile (path of a service-account JSON key)"],
        "directoryFormat": "gs://bucket/path",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/storage/gcs"
      },
      {
        "id": "azure",
        "name": "Azure Data Lake Storage Gen2 and Azure Blob Storage",
        "flag": "--target_storage_id ID",
        "dsType": "azure",
        "authModes": ["service_principal"],
        "directoryFormat": "abfss://container@account.dfs.core.windows.net/path (ADLS Gen2) or abs://container@account.blob.core.windows.net/path (Blob)",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/storage/azure"
      },
      {
        "id": "onelake",
        "name": "Microsoft Fabric OneLake",
        "flag": "--target_storage_id ID",
        "dsType": "onelake",
        "authModes": ["service_principal"],
        "directoryFormat": "onelake://workspace/lakehouse/path/",
        "docs": "https://lakexpress-docs.arpe.io/latest/configuration/storage/onelake"
      }
    ],
    "publishingTargets": [
      { "id": "snowflake", "name": "Snowflake", "external": true, "internal": true, "storage": "S3, Azure or GCS through a Snowflake stage", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/snowflake-publishing" },
      { "id": "databricks", "name": "Databricks (Unity Catalog)", "external": true, "internal": true, "storage": "S3", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/databricks-publishing" },
      { "id": "fabric", "name": "Microsoft Fabric", "external": true, "internal": true, "storage": "OneLake", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/fabric-publishing" },
      { "id": "bigquery", "name": "Google BigQuery", "external": true, "internal": true, "storage": "GCS", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/bigquery-publishing" },
      { "id": "redshift", "name": "Amazon Redshift", "external": true, "internal": true, "storage": "S3, same region", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/redshift-publishing" },
      { "id": "motherduck", "name": "MotherDuck", "external": true, "internal": true, "storage": "S3, GCS or Azure", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/motherduck-publishing" },
      { "id": "glue", "name": "AWS Glue Data Catalog", "external": true, "internal": false, "storage": "S3", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/glue-publishing" },
      { "id": "ducklake", "name": "DuckLake", "external": true, "internal": false, "storage": "Local, S3, GCS or Azure", "docs": "https://lakexpress-docs.arpe.io/latest/integrations/ducklake-publishing" }
    ],
    "publishingNotes": "Publishing is optional. --publish_method external (default) or internal. Microsoft Fabric Lakehouse needs \"fabric_target\": \"lakehouse\" in its credentials entry. For Snowflake, the storage directory must equal the Snowflake stage URL.",
    "lakeXpressDB": [
      { "id": "postgresql", "name": "PostgreSQL", "server": true, "goodFor": "Production, several users or machines. Recommended." },
      { "id": "sqlserver", "name": "SQL Server", "server": true, "goodFor": "Production, when SQL Server is the standard database." },
      { "id": "mysql", "name": "MySQL", "server": true, "goodFor": "Production, when MySQL is the standard database." },
      { "id": "sqlite", "name": "SQLite", "server": false, "goodFor": "Trying LakeXpress, single-user setups. One machine, one sync at a time." },
      { "id": "duckdb", "name": "DuckDB", "server": false, "goodFor": "Trying LakeXpress, single-user setups. One machine, one sync at a time. Not for incremental syncs in 0.4.10." }
    ],
    "operatingSystems": [
      { "os": "Linux", "architectures": ["x64"], "executable": "LakeXpress", "installer": "ZIP archive, no installer (chmod +x LakeXpress)" },
      { "os": "Windows", "architectures": ["x64"], "executable": "LakeXpress.exe", "installer": "ZIP archive, no installer" }
    ],
    "summary": {
      "sourceDatabases": 7,
      "cloudStorageBackends": "S3 (and S3-compatible), GCS, Azure Blob, ADLS Gen2, OneLake, plus local disk",
      "publishingTargets": 8,
      "lakeXpressDBBackends": 5,
      "compatibilityPage": "https://lakexpress-docs.arpe.io/latest/reference/compatibility"
    }
  },
  "metadata": {
    "lastUpdated": "2026-10-22",
    "productVersion": "0.4.10",
    "purpose": "Platform compatibility matrix for AI agents",
    "schemaVersion": "1.0.0"
  }
}
