Skip to content

Plugin Interface Reference

This directory contains the Abstract Base Class (ABC) definitions for all floe plugin interfaces. Plugins extend floe’s capabilities while maintaining consistent contracts and composability.

Each interface defines the methods that plugin implementations must provide, enabling platform teams to swap implementations (e.g., DuckDB vs Snowflake compute, Dagster vs Airflow orchestration) without changing data product code.

Composability Principle: See ADR-0037 for how plugins compose to form complete platform configurations.

Category Count: The implementation-truth plugin category list is Plugin Catalog. This interface reference documents the public ABC surface and may lag newly introduced implementation categories until their dedicated interface pages are published.

InterfacePurposeLocationADR
ComputePluginWhere dbt transforms executefloe_core/interfaces/compute.pyADR-0010
OrchestratorPluginJob scheduling and executionfloe_core/interfaces/orchestrator.pyADR-0011
CatalogPluginIceberg table catalogfloe_core/interfaces/catalog.pyADR-0008
StoragePluginObject storage (S3, GCS, Azure, MinIO)floe_core/interfaces/storage.pyADR-0036
TelemetryBackendPluginOTLP telemetry backends (traces, metrics, logs)floe_core/interfaces/telemetry.pyADR-0035
LineageBackendPluginOpenLineage backends (data lineage)floe_core/interfaces/lineage.pyADR-0035
DBTPlugindbt compilation environment (local/fusion/cloud)floe_core/interfaces/dbt.pyADR-0043
SemanticLayerPluginBusiness intelligence APIfloe_core/interfaces/semantic_layer.pyADR-0001
IngestionPluginData loading from sourcesfloe_core/interfaces/ingestion.pyADR-0020
DataQualityPluginData quality validationfloe_core/interfaces/data_quality.pyADR-0044
SecretsPluginCredential managementfloe_core/interfaces/secrets.pyADR-0023
IdentityPluginUser authentication (OIDC)floe_core/interfaces/identity.pyADR-0024

Interface coverage: This page documents the public plugin ABC reference surface. See Plugin Catalog for the canonical PluginType category count and entry point groups.

Note: PolicyEnforcer and DataContract are now core modules in floe-core, not plugin interfaces. See ADR-0015 and ADR-0026.

All plugins must declare metadata for registration and compatibility checking:

from dataclasses import dataclass
from typing import Final
FLOE_PLUGIN_API_VERSION: Final[str] = "1.0"
@dataclass
class PluginMetadata:
"""Metadata for plugin registration and compatibility checking."""
name: str # Plugin name (e.g., "dagster")
version: str # Plugin version (e.g., "1.0.0")
floe_api_version: str # Required API version (e.g., "1.0")
description: str # Human-readable description
author: str # Author/maintainer
homepage: str | None = None # Plugin homepage URL
license: str | None = None # License identifier