Skip to content

Plugin Interface Reference

This directory contains the Abstract Base Class (ABC) definitions for 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.

Source of Truth: Live ABCs are under packages/floe-core/src/floe_core/plugins/. Code blocks in these pages are conceptual excerpts unless they explicitly say they are copied from a live file.

InterfacePurposeLocationADR
ComputePluginWhere dbt transforms executepackages/floe-core/src/floe_core/plugins/compute.pyADR-0010
OrchestratorPluginJob scheduling and executionpackages/floe-core/src/floe_core/plugins/orchestrator.pyADR-0011
CatalogPluginIceberg table catalogpackages/floe-core/src/floe_core/plugins/catalog.pyADR-0008
StoragePluginObject storage (S3-compatible, GCS, Azure, MinIO)packages/floe-core/src/floe_core/plugins/storage.pyADR-0036
TelemetryBackendPluginOTLP telemetry backends (traces, metrics, logs)packages/floe-core/src/floe_core/plugins/telemetry.pyADR-0035
LineageBackendPluginOpenLineage backends (data lineage)packages/floe-core/src/floe_core/plugins/lineage.pyADR-0035
DBTPlugindbt compilation environment (local/fusion/cloud)packages/floe-core/src/floe_core/plugins/dbt.pyADR-0043
SemanticLayerPluginBusiness intelligence APIpackages/floe-core/src/floe_core/plugins/semantic.pyADR-0001
IngestionPluginData loading from sourcespackages/floe-core/src/floe_core/plugins/ingestion.pyADR-0020
DataQualityPluginData quality validationpackages/floe-core/src/floe_core/plugins/quality.pyADR-0044
SecretsPluginCredential managementpackages/floe-core/src/floe_core/plugins/secrets.pyADR-0023
IdentityPluginUser authentication (OIDC)packages/floe-core/src/floe_core/plugins/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